量化双均线策略:(三)统计策略结果

统计指标包括:总收益,年化收益,夏普比率,平均每日涨幅,最大回撤。

基于上篇Strategy类run_simulation后将res_df存储到本地的一个csv文件中,然后读取csv后计算这些统计指标,具体实现如下。

    def annual_return(df):
        change = df['capital_market_value'].iloc[-1]/df['capital_market_value'].iloc[0]-1
        annual = pow(change+1, 250/len(df)) - 1
        print('总收益为%f,年化收益为%f\n' % (change, annual))

    def sharp_ratio(df):
        from math import sqrt
        rf = 0.0284
        change = df['capital_market_value'].iloc[-1] / df['capital_market_value'].iloc[0]
        annual = pow(change, 250 / len(df)) - 1
        volatility = df['profolio_daily_return'].std() * sqrt(250)
        sharp = (annual - rf)/volatility
        print('sharp ratio is %f\n'%sharp)

    def average_change(df):
        ave = df['profolio_daily_return'].mean()
        print('平均每日涨幅为%f'%ave)

    def max_dramdown(df):
        df['max_value_before_today'] = pd.Series.expanding(df['capital_market_value']).max()
        df['drawdown'] = df['capital_market_value']/df['max_value_before_today']
        temp = df.sort_values(by='drawdown').iloc[0][['date', 'drawdown']]
        end_date = temp['date']
        maxdd = temp['drawdown']
        maxdd = abs(maxdd-1)

        start_date = df[df['date'] <= end_date].sort_values(by='capital_market_value', ascending=False).iloc[0]['date']

        print('最大回撤为%f,开始时间为%s,结束时间为%s'%(maxdd, start_date, end_date))
总收益为最终的资产市值与初始资金的比值,年化收益为总收益开方年数(年数=len(df)/250),譬如某个数开3次方可以转为某个数的1/3次方,故年化收益为pow(change, 250/len(df))。

夏普比率为投资组合的收益率-无风险利率,再除以投资组合的波动率(即风险),但是注意同一资产的日波动率与年波动率计算的结果不一样,收益率与波动率的计算周期要一致(来自知乎的回答)。

volatility = df['profolio_daily_return'].std() * sqrt(250),通过每天的波动率求全年的波动率要乘以根号下的天数,如果是半年的波动率求全年的波动率,要乘以根号2。

最大回撤的计算,调用pd.Series.expanding(df).max()函数,会将每列按照之前的最大值排列。

量化双均线策略:(三)统计策略结果_第1张图片

按照输入code_list = ['002415', '002416', '000333'], 三只股票为海康威视,爱施德,美的集团,初始资金init_cash = 100000,回测时间从starttime = '2014-01-01'到endtime = '2017-11-30'。

回测结果如下,可以看到2015年股灾的时候出现的最大回撤,还不算太大,跟输入的code_list是什么股票很有关系,海康威视与美的集团都是涨幅很可观的白马股。

量化双均线策略:(三)统计策略结果_第2张图片

量化双均线策略:(三)统计策略结果_第3张图片

你可能感兴趣的:(量化双均线策略:(三)统计策略结果)