@Channelchan
2017-11-27T06:06:51.000000Z
字数 1668
阅读 12279
组合方案以交集为例
Step_1: 读取选股结果的Excel
Step_2: 初始化admin,并计算交集的结果
Step_3: 计算交集的绩效
Step_4: 可视化收益绩效
import pandas as pdfactor_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 Adminadmin = 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 datetimeintersection_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')
