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