Intersection_Strategy
  • fxdayu_alphaman.selector.admin.Admin.Intersection_Strategy(*args, **kwargs)

简要描述:

  • 对若干选股方案取交集

参数:

参数名 必选 类型 说明
selectors_result_dict dict 若干选股器结果组成的字典(dict),形式为:
{"selector_name_1":selector_1,"selector_name_2":selector_2}
每个选股器结果(selector_result)格式为一个MultiIndex Series,索引(index)为date(level 0)和asset(level 1),包含一列结果值。(1:选出,0:不选,-1:做空)
rank int 选出得分排名前rank的股票(个数排名) 该参数在交集方案下默认为空
rank_pct float 选出得分排名前rank_pct的股票(百分位排名) 该参数在交集方案下默认为空。
weight_dict dict 各选股器权重所组成的dict。该参数在交集方案下默认为空。

参数示例:

  • selectors_result_list:
{"test001":
 -----------------------------------
  date         |    asset   |
  -----------------------------------
               |   AAPL     |   1
               -----------------------
               |   BA       |   1
               -----------------------
  2014-01-01   |   CMG      |   0
               -----------------------
               |   DAL      |   1
               -----------------------
               |   LULU     |   0
               -----------------------,
"test002":
-----------------------------------
  date         |    asset   |
  -----------------------------------
               |   AAPL     |   0
               -----------------------
               |   BA       |   0
               -----------------------
  2014-01-01   |   CMG      |  -1
               -----------------------
               |   DAL      |   1
               -----------------------
               |   LULU     |   0
               -----------------------
,......}

返回参数说明:

参数名 类型 说明
strategy_result Strategy 对象 取交集的结果。Strategy 对象包含"strategy_name", "strategy_result", "weight_dict"三个属性。
"strategy_name":
组合的选股结果名称(str);
"strategy_result":
组合的选股结果(格式为一个MultiIndex Series,索引(index)为date(level 0)和asset(level 1),包含一列结果值。(>0:选出,0:不选,<0:做空));
"weight_dict":
各选股器权重所组成的dict(dict/None)。
Union_Strategy
  • fxdayu_alphaman.selector.admin.Admin.Union_Strategy(*args, **kwargs)

简要描述:

  • 对若干选股方案取并集

参数:

参数名 必选 类型 说明
selectors_result_dict dict 若干选股器结果组成的字典(dict),形式为:
{"selector_name_1":selector_1,"selector_name_2":selector_2}
每个选股器结果(selector_result)格式为一个MultiIndex Series,索引(index)为date(level 0)和asset(level 1),包含一列结果值。(1:选出,0:不选,-1:做空)
rank int 选出得分排名前rank的股票(个数排名) 该参数在并集方案下默认为空
rank_pct float 选出得分排名前rank_pct的股票(百分位排名) 该参数在并集方案下默认为空。
weight_dict dict 各选股器权重所组成的dict。该参数在并集方案下默认为空。

参数示例:

  • selectors_result_list:
{"test001":
 -----------------------------------
  date         |    asset   |
  -----------------------------------
               |   AAPL     |   1
               -----------------------
               |   BA       |   1
               -----------------------
  2014-01-01   |   CMG      |   0
               -----------------------
               |   DAL      |   1
               -----------------------
               |   LULU     |   0
               -----------------------,
"test002":
-----------------------------------
  date         |    asset   |
  -----------------------------------
               |   AAPL     |   0
               -----------------------
               |   BA       |   0
               -----------------------
  2014-01-01   |   CMG      |  -1
               -----------------------
               |   DAL      |   1
               -----------------------
               |   LULU     |   0
               -----------------------
,......}

返回参数说明:

参数名 类型 说明
strategy_result Strategy 对象 取并集的结果。Strategy 对象包含"strategy_name", "strategy_result", "weight_dict"三个属性。
"strategy_name":
组合的选股结果名称(str);
"strategy_result":
组合的选股结果(格式为一个MultiIndex Series,索引(index)为date(level 0)和asset(level 1),包含一列结果值。(>0:选出,0:不选,<0:做空));
"weight_dict":
各选股器权重所组成的dict(dict/None)。
Rank_Strategy
  • fxdayu_alphaman.selector.admin.Admin.Rank_Strategy(*args, **kwargs)

简要描述:

  • 各选股结果加权汇总后,取排名前rank/rank_pct且至少被某一个选股器选出过一次的股票。

参数:

参数名 必选 类型 说明
selectors_result_dict dict 若干选股器结果组成的字典(dict),形式为:
{"selector_name_1":selector_1,"selector_name_2":selector_2}
每个选股器结果(selector_result)格式为一个MultiIndex Series,索引(index)为date(level 0)和asset(level 1),包含一列结果值。(1:选出,0:不选,-1:做空)
rank int 选出得分排名前rank的股票(个数排名) 默认值为10
rank_pct float 选出得分排名前rank_pct的股票(百分位排名) (float) ,与rank二选一。该参数有值的时候,rank参数失效。
weight_dict dict 各选股器权重所组成的dict。默认等权重。字典键为选股器名称(str),包含了selectors_result_dict中的所有选股器;字典值为float,代表对应选股器的给分权重。形如:{'selector_name_1':1.0,'selector_name_2':2.0,...}

参数示例:

  • selectors_result_list:
{"test001":
 -----------------------------------
  date         |    asset   |
  -----------------------------------
               |   AAPL     |   1
               -----------------------
               |   BA       |   1
               -----------------------
  2014-01-01   |   CMG      |   0
               -----------------------
               |   DAL      |   1
               -----------------------
               |   LULU     |   0
               -----------------------,
"test002":
-----------------------------------
  date         |    asset   |
  -----------------------------------
               |   AAPL     |   0
               -----------------------
               |   BA       |   0
               -----------------------
  2014-01-01   |   CMG      |  -1
               -----------------------
               |   DAL      |   1
               -----------------------
               |   LULU     |   0
               -----------------------
,......}

返回参数说明:

参数名 类型 说明
strategy_result Strategy 对象 Strategy 对象包含"strategy_name", "strategy_result", "weight_dict"三个属性。
"strategy_name":
组合的选股结果名称(str);
"strategy_result":
组合的选股结果(格式为一个MultiIndex Series,索引(index)为date(level 0)和asset(level 1),包含一列结果值。(>0:选出,0:不选,<0:做空));
"weight_dict":
各选股器权重所组成的dict(dict/None)。
calculate_performance
  • fxdayu_alphaman.selector.admin.Admin.calculate_performance(*args, **kwargs)

简要描述:

  • 计算选股(含多策略组合)策略的绩效表现。

参数:

参数名 必选 类型 说明
strategy_name string 策略名称
strategy_result MultiIndex Series 策略结果(选股结果 或组合策略结果)格式为一个MultiIndex Series,索引(index)为date(level 0)和asset(level 1),包含一列结果值。(>0:选出,0:不选,<0:做空)
start datetime 回测起始时间
end datetime 回测结束时间
periods tuple 持有时间
benchmark_return pandas.MultiIndex 基准收益 mulitiIndex.索引(index)为factor_quantile(level 0)和date(level 1),columns 为持有时间(与periods一一对应)。
price pandas.Dataframe 计算绩效时用到的的个股每日价格,通常为收盘价(close)。索引(index)为datetime,columns为各股票代码。
price_high pandas.Dataframe 计算绩效时用到的的个股每日最高价格,pandas dataframe类型,形同price
price_low pandas.Dataframe 计算绩效时用到的的个股每日最低价格,pandas dataframe类型,形同price

参数示例:

  • strategy_name:
"test"
  • strategy_result:
-----------------------------------
  date         |    asset   |
  -----------------------------------
               |   AAPL     |   1
               -----------------------
               |   BA       |   1
               -----------------------
  2014-01-01   |   CMG      |   0
               -----------------------
               |   DAL      |   1
               -----------------------
               |   LULU     |   0
               -----------------------
  • start:
datetime.datetime(2010,1,1)
  • end:
datetime.datetime(2014,1,1)
  • period:
(1, 5, 10)
  • benchmark_return:
                                         1         5         10
factor_quantile date
HS300           2013-01-01 15:00:00  0.000000  0.000000  0.000000
                2013-01-02 15:00:00  0.000000  0.000000  0.000000
                2013-01-03 15:00:00  0.000000  0.000000  0.000000
                2013-01-04 15:00:00  0.004587 -0.016313  0.028137
                2013-01-05 15:00:00  0.000000  0.000000  0.000000
                2013-01-06 15:00:00  0.000000  0.000000  0.000000
                2013-01-07 15:00:00 -0.004203  0.016459  0.029539
                2013-01-08 15:00:00  0.000317  0.027929  0.028341
                2013-01-09 15:00:00  0.001758  0.020173  0.032195
                2013-01-10 15:00:00 -0.018707  0.008769  0.020620
                .................................................
  • price:
                   600011.XSHG 600015.XSHG 600018.XSHG 600021.XSHG 00028.XSHE
datetime
2014-10-08 15:00:00    18.743    17.639       NaN     7.463     9.872
2014-10-09 15:00:00    18.834    17.556       NaN     7.536     9.909
2014-10-10 15:00:00    18.410    17.597       NaN     7.580     9.835
2014-10-13 15:00:00    18.047    17.515       NaN     7.536     9.685
2014-10-14 15:00:00    18.773    17.494       NaN     7.433     9.704
2014-10-15 15:00:00    18.561    17.597       NaN     7.477     9.704
2014-10-16 15:00:00    18.501    17.659       NaN     7.448     9.685
2014-10-17 15:00:00    18.349    17.535       NaN     7.272     9.611
2014-10-20 15:00:00    18.319    17.618       NaN     7.360     9.629
.....................................................................

返回参数说明:

参数名 类型 说明
performance Performance object 该策略的绩效。包含"strategy_name","mean_return","key_performance_indicator","holding_return", "holding_distribution_features","upside_return","upside_distribution_features","downside_return","downside_distribution_features" 这些属性
rank_performance
  • fxdayu_alphaman.selector.admin.Admin.rank_performance(*args, **kwargs)

简要描述:

  • 将若干Performance对象所组成的列表(strategies_performance)按指定持有期(target_period)下的指定指标(target_indicator)排序,默认为降序。

参数:

参数名 必选 类型 说明
strategies_performance list 若干Performance对象所组成的列表(list)。Performance object包含"strategy_name","mean_return","key_performance_indicator","holding_return", "holding_distribution_features","upside_return","upside_distribution_features","downside_return","downside_distribution_features" 这些属性
target_period int 指定持有期
target_indicator "Annual return";"Cumulative returns";"Annual volatility";"Sharpe ratio";"Calmar ratio";"Stability";"Max drawdown";"Omega ratio";"Sortino ratio";"Skew";"Kurtosis";"Tail ratio";"Daily value at risk";"Alpha";"Beta" 指定用于排序的绩效指标,默认为"Sharpe ratio"
ascending bool 是否升序。默认False(降序)

返回参数说明:

参数名 类型 说明
ranked_performance_list list of Performance object 排序后的Performance对象所组成的列表
show_strategies_performance
  • fxdayu_alphaman.selector.admin.Admin.show_strategies_performance(*args, **kwargs)

简要描述:

  • 批量计算strategies_result_dict中所有选股方案(含组合方案)的表现,并汇总成列表——list。

参数:

参数名 必选 类型 说明
strategies_result_dict dict 若干选股策略结果组成的字典(dict),形式为:
{"strategy_name_1":strategy_1,"strategy_name_2:strategy_2}。
每个选股策略结果(选股结果 或组合策略结果)格式为一个MultiIndex Series,索引(index)为date(level 0)和asset(level1),包含一列结果值。(>0:选出,0:不选,<0:做空)
start datetime 回测起始时间
end datetime 回测结束时间
periods tuple 持有时间 ,默认(1,5,10)
benchmark_return pandas.MultiIndex 基准收益 mulitiIndex.索引(index)为factor_quantile(level 0)和date(level 1),columns 为持有时间(与periods一一对应)。
price pandas.Dataframe 计算绩效时用到的的个股每日价格,通常为收盘价(close)。索引(index)为datetime,columns为各股票代码。
price_high pandas.Dataframe 计算绩效时用到的的个股每日最高价格,pandas dataframe类型,形同price
price_low pandas.Dataframe 计算绩效时用到的的个股每日最低价格,pandas dataframe类型,形同price
parallel bool 是否执行并行计算(bool) 默认不执行。 如需并行计算需要在jupyter notebook下启动工作脚本

返回参数说明:

参数名 类型 说明
performance_list list of Performance object 选股方案的表现 (Performance object)所组成的列表(list),列表里每个元素为选股方案的表现 (Performance object)。包含"strategy_name","mean_return","key_performance_indicator", "holding_return", "holding_distribution_features","upside_return","upside_distribution_features","downside_return","downside_distribution_features" 这些属性
enumerate_selectors_weight
  • fxdayu_alphaman.selector.admin.Admin.enumerate_selectors_weight(*args, **kwargs)

简要描述:

  • 按指定的组合方法,枚举不同权重(不同打分),对若干选股器进行组合打分。

参数:

参数名 必选 类型 说明
func Admin.Intersection_Strategy;Admin.Union_Strategy;Admin.Rank_Strategy 指定选股器的组合策略
weight_range_dict dict 描述selectors_result_dict当中每个选股器的权重优化空间。键为选股器名称,值为range对象,表示优化空间的起始、终止、步长。如weight_range_dict ={"selector1":range(0,10,1),"selector2":range(0,10,1)}。
selectors_result_dict dict 若干选股器结果组成的字典(dict),形式为:{"selector_name_1":selector_1,"selector_name_2":selector_2}
rank int 选出得分排名前rank的股票(个数排名)
rank_pct float 选出得分排名前rank_pct的股票(百分位排名) (float) ,与rank二选一。该参数有值的时候,rank参数失效。
parallel bool 是否执行并行计算(bool) 默认不执行。 如需并行计算需要在jupyter notebook下启动工作脚本。

返回参数说明:

参数名 类型 说明
strategy_list list of Strategy object 不同权重下的组合选股结果。由Strategy 对象所组成的列表(list),每个由Strategy 对象包含"strategy_name", "strategy_result", "weight_dict"三个属性。
"strategy_name":
组合的选股结果名称(str);
"strategy_result":
组合的选股结果(格式为一个MultiIndex Series,索引(index)为date(level 0)和asset(level 1), 包含一列结果值。(>0:选出,0:不选,<0:做空));
"weight_dict":
各选股器权重所组成的dict(dict/None)
instantiate_selector_and_get_selector_result
  • fxdayu_alphaman.selector.admin.Admin.instantiate_selector_and_get_selector_result(*args, **kwargs)

简要描述:

  • 计算某个选股器指定时间段的选股结果。

参数:

参数名 必选 类型 说明
selector_name str 选股器名称(str) 需确保传入的selector_name、选股器的类名、对应的module文件名一致(不含.后缀),选股器才能正确加载
pool list 股票池范围(list),如:["000001.XSHE","600300.XSHG",......]
start datetime 起始时间
end datetime 结束时间
Selector Selector 选股器(selector.selector.Selector object),可选。可以输入一个设计好的Selector类来执行计算。
data 自定义 计算选股结果需用到的数据,根据计算需求自行指定。(可选)
data_config dict 在data参数为None的情况下(不传入自定义数据),可通过该参数调用fxdayu_data api 访问到数据 (dict),与data参数二选一。例如:{"freq": "D", "api": "candle", "adjust": "after"}
para_dict dict 外部指定选股器里所用到的参数集(dict),为空则不修改原有参数。 形如:{"fast":5,"slow":10}

返回参数说明:

参数名 类型 说明
selector_result pandas.MultiIndex 选股器结果 格式为一个MultiIndex Series,索引(index)为date(level 0)和asset(level 1),包含一列结果值。(1:选出,0:不选,-1:做空)
enumerate_parameter
  • fxdayu_alphaman.selector.admin.Admin.enumerate_parameter(*args, **kwargs)

简要描述:

  • 枚举选股器的不同参数。

参数:

参数名 必选 类型 说明
selector_name str 选股器名称(str) 需确保传入的selector_name、选股器的类名、对应的module文件名一致(不含.后缀),选股器才能正确加载
para_range_dict dict 描述了selector当中待优化参数的选择空间(dict)。键为参数名称,值为range对象,表示优化空间的起始、终止、步长。如:para_range_dict = {"fast":range(0,10,1),"slow":range(0,10,1)}
pool list 股票池范围(list),如:["000001.XSHE","600300.XSHG",......]
start datetime 起始时间
end datetime 结束时间
Selector Selector 选股器(selector.selector.Selector object),可选。可以输入一个设计好的Selector类来执行计算。
data 自定义 计算选股结果需用到的数据,根据计算需求自行指定。(可选)
data_config dict 在data参数为None的情况下(不传入自定义数据),可通过该参数调用fxdayu_data api 访问到数据 (dict),与data参数二选一。例如:{"freq": "D", "api": "candle", "adjust": "after"}
parallel bool 是否执行并行计算(bool) 默认不执行。 如需并行计算需要在jupyter notebook下启动工作脚本。

返回参数说明:

参数名 类型 说明
selector_result_by_para_list,
para_dict_list
(list,list) selector_result_by_para_list:
不同参数下得到的选股结果所组成的list(list)。
para_dict_list:
不同参数集所组成的list(list),与selector_result_by_para_list一一对应。每个参数集格式为dict,形如:{"fast":5,"slow":10}
get_all_selectors_result
  • fxdayu_alphaman.selector.admin.Admin.get_all_selectors_result(*args, **kwargs)

简要描述:

  • 计算admin下加载的所有选股器的选股器结果。

参数:

参数名 必选 类型 说明
pool list 股票池范围(list),如:["000001.XSHE","600300.XSHG",......]
start datetime 起始时间
end datetime 结束时间
all_Selectors_dict dict 加载到admin下的所有Selector类(selector.selector.Selector object)构成的字典, 可以输入一系列设计好的选股器类(与Admin._all_selectors_name一一对应)直接执行计算。形如:{"selector_name_1":Selector_1,"selector_name_2":Selector_2,...}。(可选)
all_selectors_data_dict dict 计算选股器需用到的自定义数据组成的字典(dict),根据计算需求自行指定。字典键名为所有载入的选股器的选股器名(admin._all_selectors_name),值为对应选股器所需的数据。形如:{"selector_name_1":data_1,"selector_name_2":data_2,...}。
all_selectors_data_config_dict dict 在all_selectors_data_dict参数为None的情况下(不传入自定义数据),可通过该参数调用fxdayu_data api 访问到数据 (dict)。二选一(未指定数据通过fxdayu_data api获取)。字典键名为所有载入的选股器的选股器名(admin._all_selectors_name),值为对应选股器所需的数据api访问参数设置dict(data_config)。形如:{"selector_name_1":data_config_1,"selector_name_2":data_config_2,...}
all_selectors_para_dict dict 所有选股器外部指定参数集(dict)所构成的字典(dict),可选。为空则不修改选股器原有参数。字典键名为所有载入的选股器的选股器名(admin._all_selectors_name),值为对应选股器的指定参数集(dict)。形如: {"selector_name_1":{"fast":5,"slow":10},"selector_name_2":{"fast":4,"slow":7},...}
parallel bool 是否执行并行计算(bool) 默认不执行。 如需并行计算需要在jupyter notebook下启动工作脚本。
update bool 是否更新已有记录值(bool)。默认为False——如果admin曾经计算过所有选股器结果,则不再重复计算。 True 则更新计算所加载的选股器结果。

返回参数说明:

参数名 类型 说明
all_selectors_result dict admin下加载的所有选股器的选股器结果(dict)。字典键名为所有载入的选股器的选股器名(admin._all_selectors_name)。值为 选股器结果(selector_result) 格式为一个MultiIndex Series,索引(index)为date(level 0)和asset(level 1),包含一列selector结果。