【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()函数得到对数波动率的;