case_02 股票波动率计算

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

 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]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章