【Python】案例:計算股票收益率和波動率:
- 1、案例需求
- 2、數據準備
- 3、案例實現
1、案例需求
在分析股票數據時,我們需要從這些數據中得到一些關鍵指標進行評估,比如收益率、波動率,其中收益率又可以細分為簡單收益率和對數收益率,而波動率可以細分為年波動率和月波動率。
(1)簡單收益率:相鄰兩個價格之間的變化率。例如,收盤價為20、30、50,它們的變化率為(30-20)/20、(50-30)/30;
(2)對數收益率:所有價格取對數后兩兩之間的差值;
(3)年波動率:衡量股票在一年內回報波動水平指的標,計算公式為:
年波動率=(對數波動率的標準差/對數波動率的均值)/√(1/交易日天數)(其中交易日通常是252天);
(4)月波動率:衡量股票在一月內回報波動水平的指標,計算公式為:
月波動率=√(1/12)×年波動率;
下面根據一組股票數據,編寫代碼,計算這組數據的簡單收益率、對數收益率、年波動收益率
2、數據準備
通過網絡采集最近一個月某公司股票收盤價的數據,具體如下所示:
336.1, 339.32, 345.03, 344.32, 343.44, 346.5, 351.88, 355.2, 358.16, 354.54, 356.85, 359.18, 359.9, 363.13, 358.3, 350.56, 338.61, 342.62, 342.88, 348.16, 353.21, 349.31, 352.12, 359.56, 360.00, 355.36, 355.76, 352.47, 346.67, 351.99
336.1, 339.32, 345.03, 344.32, 343.44, 346.5, 351.88, 355.2, 358.16, 354.54, 356.85, 359.18, 359.9, 363.13, 358.3, 350.56, 338.61, 342.62, 342.88, 348.16, 353.21, 349.31, 352.12, 359.56, 360.00, 355.36, 355.76, 352.47, 346.67, 351.99
3、案例實現
準備好股票數據之后,接下來按照前面介紹的公式對這組數據進行操作,分別計算簡單收益率、對數收益率、年波動率和月波動率這幾個指標,具體步驟如下:
(1) 創建一個NumPy數組,用于保存一組股票數據;
(2) 獲取了股票數據之后,先根據簡單收益率公式計算簡單收益率,具體思路為:首先通過diff()函數計算離散差,得到一個包含相鄰元素差值的數組,然后通過切片獲取數組中除末尾元素的其他元素,得到一個不包含最后一個價格的數組,最后這兩個數組相除后得到的結果便是簡單收益率;
(3) 計算對數收益率。要想計算對數收益率,可以先通過log()函數計算所有價格的對數,再通過diff()函數得到一個包含價格對數差值的數組;
(4) 計算年波動率。要想計算年波動率,可以先通過std()函數得到對數波動率的;