case_02 股票波动率计算

5 篇文章 1 订阅

一、常规年波动率及其计算方法

 1.计算 对数收益率 (= 对数差分):R_i = log(  **p_(i)** / **p_(i-1)** ),  log_returns = np.diff(log_prices) 
 2. 计算对数收益率序列的标准差std, log_returns_std = np.std(log_returns)
 3. 计算年波动率 = std * sqrt(252), volatility = log_rets_std * np.sqrt(252)
# 波动率
import os 
import sys
import numpy as np 

def read_data(filename):
    close_prices = np.loadtxt(
        filename, delimiter=',',usecols=(6),unpack=True)
    return close_prices

def cal_volatility(close_prices):
    log_close_prices = np.log(close_prices)
    log_rets = np.diff(log_close_prices)
    log_rets_std = np.std(log_rets)
    # 单位状态下的波动率
    volatility_per = log_rets_std / log_rets.mean() / np.sqrt(1/252)
    # 年波动率
    volatility = log_rets_std * np.sqrt(252)
    return volatility_per, volatility

def main(argc, argv, envp):
    close_prices = read_data('aapl.csv')
    volatility_per, volatility = cal_volatility(close_prices)
    print('volatility_per:',volatility_per)
    print('volatility:', volatility)
    return 0

if __name__ == '__main__':
    sys.exit(main(len(sys.argv), sys.argv, os.environ))

output:

volatility_per: 129.274789911
volatility: 0.205921506926      # 年波动率
[Finished in 1.2s]
  • 2
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值