《金融建?;A(chǔ)》課件第5章-結(jié)合金融場景演示 SciPy 等模塊編程_第1頁
《金融建?;A(chǔ)》課件第5章-結(jié)合金融場景演示 SciPy 等模塊編程_第2頁
《金融建模基礎(chǔ)》課件第5章-結(jié)合金融場景演示 SciPy 等模塊編程_第3頁
《金融建?;A(chǔ)》課件第5章-結(jié)合金融場景演示 SciPy 等模塊編程_第4頁
《金融建?;A(chǔ)》課件第5章-結(jié)合金融場景演示 SciPy 等模塊編程_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

結(jié)合金融場景演示DESIGNED&WORDPRESSALLBYALONIC主講老師王海英SciPy等模塊編程目錄CONTENTS5.1

SciPy模塊5.2

statsmodels模塊5.3

波動率模型與arch模塊5.4

datetime模塊5.5

本章小結(jié)&拓展閱讀在對復(fù)雜的金融產(chǎn)品進(jìn)行估值時,經(jīng)常會用到積分。下面,就以金融領(lǐng)域常用的標(biāo)準(zhǔn)正態(tài)分布作為示例介紹如何通過SciPy求積分。在2.5.1節(jié)介紹過,如果隨機(jī)變量x服從標(biāo)準(zhǔn)正態(tài)分布,則它的概率密度函數(shù)如下:5.1SciPy模塊5.1.1求積分從表5-2不難發(fā)現(xiàn),不同的積分函數(shù)計算得到的結(jié)果會存在細(xì)微的差異。其中,函數(shù)quad、quadrature和romberg得到的結(jié)果之間的差異至少發(fā)生在小數(shù)點(diǎn)后的第9位;但是,函數(shù)fixed_quad與其他3個函數(shù)計算結(jié)果之間的差異在小數(shù)點(diǎn)后的第4位就出現(xiàn)了。金融領(lǐng)域經(jīng)常運(yùn)用到插值法,比如針對利率曲線的擬合,通過導(dǎo)入SciPy的子模塊interpolate可以進(jìn)行插值運(yùn)算,并且最常用的是一維數(shù)據(jù)的插值運(yùn)算,需要通過函數(shù)interp1d完成,注意函數(shù)中的1是阿拉伯?dāng)?shù)字1而不是英文小寫字母l。該函數(shù)的主要格式和參數(shù)如右:interp1d(x,y,kind),其中,x和y是一系列已知的數(shù)據(jù)點(diǎn),并且有y=f(x)的函數(shù)關(guān)系式;kind表示求插值的具體方法,常用的方法見表5-3。5.1SciPy模塊5.1.2插值法結(jié)合以上的分析和圖5-1,可以發(fā)現(xiàn)運(yùn)用最鄰近插值法和階梯插值法得到的4年期國債到期收益率是相同的。相比之下,運(yùn)用線性插值法、2階樣條曲線插值法、3階樣條曲線插值法所得到的結(jié)果則均不相同。5.1SciPy模塊5.1.3求解方程組1.運(yùn)用solve函數(shù)求解求解方程組是一項(xiàng)比較煩瑣的工作,但是運(yùn)用SciPy子模塊linalg就可以輕松求解方程組,具體是運(yùn)用函數(shù)solve,該函數(shù)的格式和參數(shù)如右:

其中,參數(shù)a必須是N行、N列的數(shù)組,相當(dāng)于方程組等號左邊的系數(shù)矩陣;b是包括N個元素的一維數(shù)組,相當(dāng)于方程組等號右邊的向量。下面,就運(yùn)用solve函數(shù)求解例5-3中的4只股票權(quán)重,具體的代碼如右:2.運(yùn)用fsolve函數(shù)求解同時,對于例5-3也可以運(yùn)用SciPy的子模塊optimize中的fsolve函數(shù)求解,該函數(shù)的格式如右:

其中,func代表求解的方程式,需要通過def語法自定義一個函數(shù);x0表示初始猜測的解。5.1SciPy模塊5.1.4最優(yōu)化方法在金融領(lǐng)域,無論是定價還是資產(chǎn)配置,求解最優(yōu)值都是一項(xiàng)最基礎(chǔ)的工作。同時,在求解最優(yōu)值的過程中,需要面臨諸多的約束條件,包括資金的約束、權(quán)重的約束、風(fēng)險暴露的約束等。所以,許多金融問題抽象而言就是求解帶約束條件的最大值或最小值。1.一個案例該投資機(jī)構(gòu)的資金為1億元,以2020年12月31日的收盤價投資,希望實(shí)現(xiàn)投資組合收益率的最大化,同時要求整個投資組合的平均市盈率不超過15倍。此外,每只股票不允許賣空,需計算應(yīng)該配置的每只股票權(quán)重和股數(shù)。對于這個示例,假設(shè)第i只股票的股價用Pi表示,年化收益率用Ri表示,市盈率用γi表示,在投資組合中的權(quán)重用wi表示,i=1,2,,5"。用數(shù)學(xué)表達(dá)式表述以上的最優(yōu)問題,具體如右:5.1SciPy模塊2.具體的Python演示以例5-4作為示例演示如何運(yùn)用SciPy求解最優(yōu)值,一共分為3個步驟。第1步:計算每只股票的最優(yōu)配置權(quán)重。具體的代碼如下:第2步:根據(jù)每只股票的最優(yōu)配置權(quán)重,計算得到該投資組合的最高期望收益率。具體的代碼如下:第3步:當(dāng)投資組合的期望收益率最高時,計算對應(yīng)購買每只股票的股票數(shù)量。注意,計算股票數(shù)量時需要向下取整,也就是運(yùn)用1.5.1節(jié)介紹的int函數(shù)(見表1-11)。具體的代碼如下:5.1SciPy模塊3.變更的案例【例5-5】沿用例5-4的信息,但是由于該投資機(jī)構(gòu)看好未來A股市場,導(dǎo)致風(fēng)險的偏好有所提升,因此需要改變一個約束條件,即把原先的整體投資組合的平均市盈率“不超過15倍”變更為“不超過20倍”,其他的條件都不變,需要重新計算投資組合中每只股票配置的最優(yōu)權(quán)重和股數(shù),具體分為兩個步驟。第1步:計算在新的約束條件下,每只股票配置的最優(yōu)權(quán)重以及投資組合的收益率。具體的代碼如下:以上的結(jié)果表明,變更了約束條件以后,相比原先的權(quán)重數(shù)據(jù),中國國航、上海醫(yī)藥以及永輝超市的權(quán)重依然為0;同時,工商銀行的權(quán)重下降至1.55%,長江電力的權(quán)重則上升至98.45%。同時,由于風(fēng)險偏好提升,因此整個投資組合的最高期望收益率同步上升至21.42%,這也說明了投資機(jī)構(gòu)如要承擔(dān)更高的風(fēng)險則需要更高的預(yù)期回報率給予補(bǔ)償。第2步:計算在新的約束條件下,每只股票配置的最優(yōu)股票數(shù)量。具體的代碼如下:以上計算的股票數(shù)量依然未考慮A股市場的交易規(guī)則。5.1SciPy模塊5.1.5統(tǒng)計功能在SciPy中,也有一個專門的統(tǒng)計分析子模塊stats,其相關(guān)功能包括描述性統(tǒng)計、概率分析和正態(tài)性統(tǒng)計檢驗(yàn)等,下面依次介紹。1.描述性統(tǒng)計【例5-6】以A股市場的中小板指數(shù)和創(chuàng)業(yè)板指數(shù)2018年至2020年的日漲跌幅數(shù)據(jù)作為分析對象,表5-7列出了部分?jǐn)?shù)據(jù)。下面,就運(yùn)用SciPy子模塊stats的統(tǒng)計函數(shù)進(jìn)行演示,分為兩個步驟。需要提醒的是,由于分析對象包括中小板指數(shù)和創(chuàng)業(yè)板指數(shù)這兩個變量,因此在表5-8輸出結(jié)果的每個數(shù)組中均包含兩個元素:第一個元素對應(yīng)中小板指數(shù),第二個元素對應(yīng)創(chuàng)業(yè)板指數(shù)。5.1SciPy模塊在子模塊stats中,也有與NumPy類似的分布函數(shù)。表5-9整理了金融領(lǐng)域比較常用的分布函數(shù)。2.概率分析通過若干個示例演示表5-10的部分函數(shù)用法:5.1SciPy模塊在金融領(lǐng)域,許多模型首先會假定變量的樣本值是服從正態(tài)分布的,因此在構(gòu)建金融模型之前,需要對樣本數(shù)據(jù)開展正態(tài)性檢驗(yàn),根據(jù)檢驗(yàn)結(jié)果確定下一步的分析與建模方案。子模塊stats提供了檢驗(yàn)變量分布的多種函數(shù),具體的函數(shù)如表5-11所示。3.正態(tài)性統(tǒng)計檢驗(yàn)【例5-11】沿用例5-6的信息,檢驗(yàn)中小板指數(shù)和創(chuàng)業(yè)板指數(shù)2018年至2020年的日漲跌幅數(shù)據(jù)是否服從正態(tài)分布,并且依次運(yùn)用KS檢驗(yàn)、Anderson-Darling檢驗(yàn)、Shapiro-Wilk檢驗(yàn)等方法進(jìn)行檢驗(yàn),相關(guān)的檢驗(yàn)共分為4個步驟。注意,在輸出的結(jié)果中,第1個數(shù)組代表統(tǒng)計量,第2個數(shù)組代表P值。顯然normaltest函數(shù)的結(jié)果依然表明在1%的顯著性水平上拒絕中小板指數(shù)、創(chuàng)業(yè)板指數(shù)的日漲跌幅服從正態(tài)分布的假設(shè)。綜合以上的4種檢驗(yàn)方法,可以得出中小板指數(shù)、創(chuàng)業(yè)板指數(shù)的日漲跌幅均不服從正態(tài)分布的結(jié)論。statsmodels最早起源于SciPy子模塊stats中的models工具包,最初由喬納森·泰勒(JonathanTaylor)編寫,但后來從SciPy中被移除了。在2009年的谷歌代碼夏季峰會(GoogleSummerofCode)期間,其經(jīng)過修正、測試、改進(jìn)并最終以全新的獨(dú)立模塊statsmodels對外發(fā)布。此后,statsmodels的開發(fā)團(tuán)隊不斷添加新模型、繪圖工具和統(tǒng)計方法,使得它最終成為一款功能強(qiáng)大的統(tǒng)計分析工具包。在使用該模塊之前依然需要導(dǎo)入并且查看版本信息,具體的代碼如下:5.2statsmodels模塊第1步:導(dǎo)入statsmodels的子模塊api。第2步:除了導(dǎo)入相關(guān)的因變量(被解釋變量)、自變量(解釋變量)的數(shù)據(jù)以外,還需要對自變量的數(shù)據(jù)增加一列常數(shù)項(xiàng)。第3步:構(gòu)建相關(guān)的線性回歸模型。在這一步中,可以根據(jù)需要運(yùn)用不同的線性回歸模型,具體的模型類型和對應(yīng)的函數(shù)如表5-12所示。第4步:用fit函數(shù)創(chuàng)建一個線性回歸的結(jié)果對象,結(jié)果對象包含線性回歸模型的結(jié)果參數(shù)和模型診斷信息。下面就通過交通銀行A股與H股的案例具體演示如何運(yùn)用statsmodels構(gòu)建普通最小二乘法回歸模型。5.2statsmodels模塊從以上的描述性統(tǒng)計可以看到,無論是交通銀行A股還是H股,日平均收益率均為負(fù)數(shù),并且H股收益率的標(biāo)準(zhǔn)差略高于A股,這在一定程度上說明H股的風(fēng)險會略高于A股。第2步:導(dǎo)入statsmodels的子模塊api;同時,以交通銀行H股日收益率作為因變量,A股日收益率作為自變量,構(gòu)建普通最小二乘法回歸模型。具體的代碼如右:輸出結(jié)果中,R-squared代表線性回歸模型的判定系數(shù),Adj.R-squared代表矯正的判定系數(shù)(適用于有多個自變量的多元回歸模型)。本例的判定系數(shù)等于0.246表明交通銀行H股收益率有24.6%可以通過交通銀行A股收益率進(jìn)行解釋;自變量的P值等于0.00表明交通銀行A股作為解釋變量在1%的顯著性水平下是顯著的,這意味著交通銀行A股確實(shí)是影響交通銀行H股收益率的一個重要因子;同時,自變量的系數(shù)coef等于0.6388表明當(dāng)交通銀行A股收益率變化1%時,可以導(dǎo)致交通銀行H股收益率變化0.6388×1%=0.6388%。5.2statsmodels模塊第3步:結(jié)合散點(diǎn)圖對線性回歸模型進(jìn)行可視化(見圖5-4)。具體的代碼如下:圖5-4中的直線就是基于圖中的散點(diǎn)同時運(yùn)用普通最小二乘法回歸模型擬合得到的線性結(jié)果。通過對圖5-4仔細(xì)觀察可以發(fā)現(xiàn),圖中的大多數(shù)散點(diǎn)是集中在直線附近的,也有少數(shù)散點(diǎn)是遠(yuǎn)離直線的。在衍生產(chǎn)品定價和風(fēng)險管理中,我們對當(dāng)前波動率是很感興趣的,這是因?yàn)樾枰獙我唤鹑谫Y產(chǎn)或者投資組合在一個較短時間內(nèi)的價值變化進(jìn)行估計;同時,在對衍生產(chǎn)品定價時,往往需要對衍生產(chǎn)品整個期限內(nèi)的波動率進(jìn)行預(yù)測,這就需要用到波動率模型。波動率模型的一個顯著特點(diǎn)是假設(shè)波動率不是常數(shù),具體而言就是在某些期間波動率可能相對較低,而在其他期間波動率可能相對較高,以跟蹤波動率隨時間的變化。最常用的波動率模型主要有兩個:一個是自回歸條件異方差(Auto-RegressiveConditionalHeteroscedasticity,ARCH)模型,另一個是廣義自回歸條件異方差(GeneralizedAuto-RegressiveConditionalHeteroscedasticity,GARCH)模型。本節(jié)將重點(diǎn)討論估計波動率的方法、主要的波動率模型以及用于波動率建模的第三方模塊5.3波動率模型與arch模塊5.3.1估計波動率5.3波動率模型與arch模塊5.3.2ARCH模型ARCH模型是過去數(shù)十年里金融計量學(xué)領(lǐng)域最重大的創(chuàng)新之一。在所有的波動率模型中,基于ARCH模型而衍生出來的模型無論是理論研究的深度還是實(shí)際運(yùn)用的廣度都是獨(dú)一無二的。5.3波動率模型與arch模塊5.3.3GARCH模型5.3.4arch模塊arch模塊是用于構(gòu)建波動率模型和其他金融計量模型的Python第三方模塊,目前主要功能包括單變量波動率模型、拔靴法或自舉法(bootstrapping)、多對比分析過程以及單位根檢驗(yàn)。由于該模塊未能集成在Anaconda中,因此可以通過打開AnacondaPrompt,并且輸入以下命令在線安裝該模塊的最新版本:pipinstallarch由于arch模塊是第三方模塊,因此在調(diào)用前需要導(dǎo)入模塊并且查看版本信息,具體的代碼如下:In[80]:importarch#導(dǎo)入arch模塊In[81]:arch.__version__#查看版本信息Out[81]:'4.15'5.3波動率模型與arch模塊在arch模塊中,構(gòu)建ARCH模型和GARCH模型需要運(yùn)用arch_model函數(shù),該函數(shù)的格式及常用參數(shù)如下:arch_model(y,x,mean,lags,vol,p,o,q,dist)arch_model函數(shù)的主要參數(shù)及其含義如表5-14所示。需要注意的是,arch_model函數(shù)返回的結(jié)果是一個結(jié)果類的對象,需要針對結(jié)果運(yùn)用fit函數(shù)154第5章結(jié)合金融場景演示SciPy等模塊編程進(jìn)行擬合并得到擬合結(jié)果的對象,然后針對擬合結(jié)果的對象運(yùn)用summary函數(shù)輸出最終的模型參數(shù)和統(tǒng)計量,該代碼處理方式與5.2節(jié)構(gòu)建線性回歸模型是非常類似的。下面就通過A股市場中小板指數(shù)的案例進(jìn)行演示。5.3波動率模型與arch模塊【例5-13】沿用例5-6中的相關(guān)信息,對2018年至2020年中小板指數(shù)的日漲跌幅構(gòu)建波動率模型,選用的模型是ARCH(1)模型和GARCH(1,1)模型,具體分為4個步驟。5.3波動率模型與arch模塊通過對圖5-5和圖5-6的目測可以發(fā)現(xiàn),ARCH(1)模型和GARCH(1,1)模型的標(biāo)準(zhǔn)化殘差時間序列是比較相似的;相反,這兩個模型的條件波動率時間序列則存在著一定的差異。5.4datetime模塊金融變量的取值往往與時間是密不可分的。Python擁有一個內(nèi)置的處理時間對象的datetime模塊,該模塊以簡單的方式提供日期和時間,它不僅支持日期和時間的算法,而且能實(shí)現(xiàn)屬性的提取以及格式的輸出與操作。datetime模塊主要包含六大時間類型,具體見表5-15。由于金融領(lǐng)域最常用的是datetime模塊中的datetime類型,因此本節(jié)主要圍繞datetime類型展開。首先依然需要導(dǎo)入datetime模塊,具體的代碼如下:In[92]:importdatetimeasdt

#導(dǎo)入datetime模塊并縮寫為dt5.4.1創(chuàng)建時間對象datetime類型的主要格式以及參數(shù)如下:datetime(year,month,day,hour,minute,second,microsecond,tzinfo)其中,參數(shù)year、month、day為必填項(xiàng),其余為選填項(xiàng)。下面通過若干個示例演示如何創(chuàng)建時間對象。5.4datetime模塊5.4.2訪問時間對象的屬性時間對象的屬性包括年(year)、月(month)、日(day)、時(hour)、分(minute)、秒(second)、微秒(microsecond)等。以例5-15中創(chuàng)建的時間對象T2為例,演示訪問時間對象的具體屬性和相關(guān)代碼,具體見表5-16。5.4.3時間對象的運(yùn)算1.時間對象的比較在金融領(lǐng)域,有時需要比較兩個時間的大小關(guān)系。在Python中關(guān)于時間對象的比較有兩種處理方式:一種是運(yùn)用datetime模塊的內(nèi)置函數(shù),另一種是直接運(yùn)用Python的關(guān)系運(yùn)算符號(參見1.4.2節(jié)的表1-8)。結(jié)合例5-14至例5-16中創(chuàng)建的時間對象,表5-17歸納了這兩種比較的處理方式以及相關(guān)代碼的演示。5.4datetime模塊2.時間間隔的計算在對金融產(chǎn)品定價的過程中,需要計算不同時間之間的間隔長度,比如金融產(chǎn)品的定價日距離到期日的剩余天數(shù)。在datetime模塊中,可以方便地計算不同時間對象之間的間隔長度,主要運(yùn)用days、seconds和microseconds等函數(shù),其中seconds函數(shù)和microseconds函數(shù)在金融高頻交易中被廣泛運(yùn)用。結(jié)合例5-14至例5-16中創(chuàng)建的時間對象,表5-18列出了相關(guān)函數(shù)的功能以及代碼的演示。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論