股票收益評價指標的幾個計算(用於回測)

最大回測率計算

import numpy as np
import matplotlib.pyplot as plt
def MaxDrawdown(return_list):
    '''最大回撤率'''
    return_list = np.array(return_list)
    i = np.argmax((np.maximum.accumulate(return_list) - return_list) / np.maximum.accumulate(return_list)) 
    # 結束位置
    if i == 0:
        return 0
    j = np.argmax(return_list[:i])  # 開始位置
    return (return_list[j] - return_list[i]) / (return_list[j])
return_list=[12,12,21,15,27,16,21,22,25,20,16,17]
print(MaxDrawdown(return_list))

計算貝塔係數

def beta(gcode,start_date,end_date,zcode='399300.SZ'):
    df1 = pro.daily(ts_code=gcode, start_date=start_date, end_date=end_date).sort_values(by='trade_date')
    #提取深市指數
    df2 = pro.index_daily(ts_code=zcode, start_date=start_date, end_date=end_date).sort_values(by='trade_date')
    #計算貝塔係數
    s1 = df1['pct_chg']
    s2 = df2['pct_chg']
    s = (np.cov(s1, s2))[0][1]/np.var(s2)
    return s 

##計算夏普比率

def shape(gcode,start_date,end_date):
    df1 = pro.daily(ts_code=gcode, start_date=start_date, end_date=end_date).sort_values(by='trade_date')
    x = df1['pct_chg'] - 0.04/252
    s = (x.mean() * math.sqrt(252))/x.std()#粒度是以天算的,要乘以252天
    return s
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章