掌握Python的基本知識后,我們在編寫量化策略的代碼之前,可以運用excel作為策略設計的載體,這就需要了解使用excel中相關函數的方法。Excel中的函數可以分為四類,分別是數學運算類函數、統計類函數、查找類函數及其他類函數。
Excel常用的數學運算函數
- EXP(x)
求復利的PV或FV時會用到。求時間價值時,可以將1/e^(r * T) 中的e^(r * T)直接用函數EXP(r * T)表示。
- LN(x)
LN(x)是EXP(x)的反函數,已知PV和FV,求r或t時會用到。
比如y=e^x 中,y已知,要求x,則先取Ln,得出Ln(y)=Ln(e^x)=x。
在連續r與離散r的轉換中也會用到。比如1(1+r離)^1=1e^(r連*1), 得出1+r離=e^r連,r連=Ln(1+r離)。
- SQRT(x)
求平方根
- RAND()
生成隨機數,取值范圍時(0~1),求蒙特卡洛模擬時會用到。EXCEL中每次按F9刷新,數字都會變。
- FACT(x)
求x的階乘,比如FACT(3)=3x2x1。
- COMBIN(number,number_chosen)
求組合,求C6^3寫成COMBIN(6,3),六個數里抽3個做組合有多少個可能性。
Excel常用的矩陣運算函數
- array相乘,sumproduct(array1,array2),excel中直接拉數即可。
一維、方向相同的數組的乘法運算: (x1,x2)(y1,y2)=x1y1+x2*y2
方向要么都是橫,要么都是豎的。
- 矩陣加減
直接選中兩個矩陣相加減即可,不用函數。
- Matrix矩陣相乘,比如三行兩列乘以兩行兩列,用MMULT(ARRAY1,ARRAY2)。
MMULT的意思是matrix multiple,括號中第一個矩陣的列數必須等于第二個矩陣的行數,否則相乘不了會報錯。比如 3X2 and 2X2, 第一個矩陣的第一行乘以第二個矩陣的第一列,剛好兩兩對應。A行B列乘以B行C列最終得到的結果為|AxB| X |BxC| = |AxC|,A行C列的矩陣。
輸入好公式后要點control+shift+enter,才會自動填充第二行。如果直接點了enter,那么按F2,顯示公式,然后再按control+shift+enter即可。
矩陣運算在畫有效前沿的時候會經常用到,所以要熟練掌握。
- TRANSPOSE(array)
返回矩陣array的轉置結果,X矩陣的轉置用X^T表示。
- 矩陣沒有除法,但可以用MINVERSE(ARRAY)求逆矩陣。MINVERSE是指matrix inverse。
假設A是一個維數為N的方陣,有N行N列,那么N-1是N的逆矩陣,N-1N=NN^-1=I。I是單位矩陣,對角線數值為1,其他位置為0。
N^-1其實就相當于1/N,實現了變相相除。
然后驗證一下兩者相乘的結果:
Excel常用的統計類函數
- AVERAGE(ARRAY)
求數組的平均值,表示期望。
- STDEV(ARRAY)
求數組的標準差,表示風險。
STDEV.S表示樣本標準差。
STDEV.P表示總體標準差。
- MAX(ARRAY) AND MIN(ARRAY)
求數組中的最大值和最小值。
- 用FREQUENCY函數求數據的分段頻數,然后用QUARTILE函數
求第一個四分位點。
FREQUENCY函數的用法是FREQUENCY(原數據,自定義的分段界限數據),同樣用CONTROL+SHIFT+ENTER進行運算。
然后Alt+=求頻數的總和,再求%Freq的比例數。向下填充之前先按F4,加入$固定符進行絕對引用,然后再Control+D。
使用F4時多點幾次,可以選擇行固定、列固定或者行列都固定。
- 概率分布函數
正態分布函數NORMSDIST,這個函數能幫助我們已知分位點求概率。
正態分布反函數NORMSINV,這個函數能幫助我們已知累計概率求分位點,應用于風控求風險,VAR。
- 二元統計函數
用于求兩個變量的相關關系。在一元回歸中,能用函數方便地求出一系列參數:
INTERCEPT(Y.X),求截距
SLOPE(Y,X),求斜率
RSQ(Y,X),求R方,X對Y的解釋力度。一元回歸方程中R方等于ρ方,即相關系數的平方。
STEYX(Y,X),stand error between y and x, 求e。
CORREL(Y,X),相關系數ρ
COVAR(Y,X),協方差,等于ρxy方差x方差y
LINEST(Y,X)數組函數,一次性求出以上函數的結果。事先要選好一個5行2列的空間來存放運算結果。
- 垂直查找和水平查找
針對原始表格的垂直查找用vlookup,水平查找用hlookup。lookup的意思是在原始數據表中找到相同的值,然后把這個值以及需要提取的相對應的值提取到新的表格中。
格式為:vlookup(lookup_value,table_array,col_index_num,range_lookup)
即:vlookup(查什么,在哪里查,返回第幾列的數據比如第三列就填3,要不要精確查找true是模糊而false是精確文本或數字連格式都一樣)
如果不用vlookup而用match,則返回的是對應值從上到下數的第幾個數據,用match(lookup_value,lookup_array,match_type)表示,match_type可選小于,近似或大于。
與match相反的是,index()返回的是第幾行第幾列的值,用index(array,row_num,column_num)表示。
8.邏輯函數IF
if函數可以做嵌套,判斷多種情況。
假設有一個債券,t到T之間的期間現金流CF為FVr,T時間點的CF為FV+FVr,就可以用邏輯函數分階段自動算出各期的CF,省心又省力。
9.Excel高級工具
- 審核工具
追溯單元格數據用快捷鍵Alt+M+P,取消追溯用Alt+M+A+A
這個功能在財務建模的時候也會經常用到。
用于檢查公式是否有誤。
- Data Table
Data Table可以做一維或二維的運算,快捷鍵是Alt+A+W+T。
其實就是敏感性分析,把要改變的數據手動填好,然后用data table逐一運算。
為了節省資源,可以在EXCEL選項中的公式中選擇除數據表以外自動運算,這樣改變原數據時,data table也不會變,可以按F9進行手動刷新。
- Goal Seek
Data TAble的反向運算,已知結果,想知道某個變量應該是多少。
用這個求期權的隱含波動率就很方便了。
設置-加載項-EXCEL加載項轉到-添加分析工具庫、分析工具庫VBA及規劃求解加載項-點確定
結語
通過以上學習,我們掌握了金融建模中常用的excel函數。下一章我們將學習VBA編程的基本知識,為創造屬于自己的模型打下基礎,敬請期待。
刺猬偷腥
2018年1月3日
to be continued.