@Channelchan
2017-11-27T14:06:51.000000Z
字数 1668
阅读 12100
组合方案以交集为例
Step_1: 读取选股结果的Excel
Step_2: 初始化admin,并计算交集的结果
Step_3: 计算交集的绩效
Step_4: 可视化收益绩效
import pandas as pd
factor_opt = pd.read_excel('factor_opt.xlsx', index_col="date").stack()
selector_opt = pd.read_excel('selector_opt.xlsx', index_col="date").stack()
from fxdayu_alphaman.selector.admin import Admin
admin = Admin()
selector_name_list = ['factor_opt', 'selector_opt']
selector_result_list = [factor_opt, selector_opt]
Intersection = admin.Intersection_Strategy(dict(zip(selector_name_list,selector_result_list)))
from datetime import datetime
intersection_perf = admin.calculate_performance('intersection', Intersection.strategy_result, start=datetime(2016,8,1), end=datetime(2017,4,20),
periods=(5,10))
intersection_perf.key_performance_indicator
{'period_10': Annual return 0.392246
Cumulative returns 0.410649
Annual volatility 0.677822
Sharpe ratio 0.806029
Calmar ratio 0.964976
Stability 0.124383
Max drawdown -0.406482
Omega ratio 1.289168
Sortino ratio 1.379652
Skew 3.561108
Kurtosis 56.521566
Tail ratio 1.109034
Daily value at risk -0.083229
dtype: float64, 'period_5': Annual return 0.393688
Cumulative returns 0.412168
Annual volatility 0.617618
Sharpe ratio 0.832133
Calmar ratio 0.746088
Stability 0.002849
Max drawdown -0.527669
Omega ratio 1.355400
Sortino ratio 1.484751
Skew 3.068953
Kurtosis 52.906192
Tail ratio 0.946620
Daily value at risk -0.075773
dtype: float64}
from fxdayu_alphaman.selector.selector_analysis import *
plot_cumulative_returns(intersection_perf.mean_return, period=10)
plt.show()
Intersection.strategy_result.unstack().replace(np.nan,0).replace(2,1).to_excel('intersection.xlsx')