[关闭]
@Channelchan 2017-11-27T14:06:51.000000Z 字数 1668 阅读 12100

如何对不同选股方案进行组合?

步骤

组合方案以交集为例

Step_1: 读取选股结果的Excel

Step_2: 初始化admin,并计算交集的结果

Step_3: 计算交集的绩效

Step_4: 可视化收益绩效

读取选股结果的Excel

  1. import pandas as pd
  2. factor_opt = pd.read_excel('factor_opt.xlsx', index_col="date").stack()
  3. selector_opt = pd.read_excel('selector_opt.xlsx', index_col="date").stack()

Step_2: 初始化admin,并计算交集的结果

  1. from fxdayu_alphaman.selector.admin import Admin
  2. admin = Admin()
  3. selector_name_list = ['factor_opt', 'selector_opt']
  4. selector_result_list = [factor_opt, selector_opt]
  5. Intersection = admin.Intersection_Strategy(dict(zip(selector_name_list,selector_result_list)))

Step_3: 计算交集的绩效

  1. from datetime import datetime
  2. intersection_perf = admin.calculate_performance('intersection', Intersection.strategy_result, start=datetime(2016,8,1), end=datetime(2017,4,20),
  3. periods=(5,10))
  4. 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}
  1. from fxdayu_alphaman.selector.selector_analysis import *
  2. plot_cumulative_returns(intersection_perf.mean_return, period=10)
  3. plt.show()

output_8_1.png-35.8kB

  1. Intersection.strategy_result.unstack().replace(np.nan,0).replace(2,1).to_excel('intersection.xlsx')
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注