投资组合|PF

在 Hikyuu 中 Portfolio 投资组合是以系统交易策略为单位的,Hikyuu 即可以使用不同目标同一交易策略的组合,未来也可以使用不同目标不同交易逻辑的系统策略进行组合(需要 tm 和各组件支持),和常见程序化交易中的多目标但策略逻辑相同的投资组合并不完全相同。

PF部件说明:

部件命名规范 部件说明 部件用途
MF_Xxx 多因子合成(时间截面评分板) 多因子本质是在时间截面上对候选标的进行评分,所以实际需要配合 Selector (策略选择算法) 使用。
SE_Xxx 系统选择算法 实现标的、系统策略的评估和选取算法。
注意:滚动寻优系统中的寻优选择器同样以 SE 为前缀命名,但不能再这里。
AF_Xxx 资产分配算法 用于对时间截面上选中的系统进行资产分配。

hikyuu.trade_sys.PF_Simple([tm, se, af, adjust_cycle=1, adjust_mode="query", delay_to_trading_day=True])

创建一个多标的、单系统策略的投资组合

调仓模式 adjust_mode 说明: - "query" 模式,跟随输入参数 query 中的 ktype,此时 adjust_cycle 为以 query 中的 ktype决定周期间隔; - "day" 模式,adjust_cycle 为调仓间隔天数 - "week" | "month" | "quarter" | "year" 模式时,adjust_cycle

为对应的每周第N日、每月第n日、每季度第n日、每年第n日,在 delay_to_trading_day 为 false 时 如果当日不是交易日将会被跳过调仓;当 delay_to_trading_day 为 true时,如果当日不是交易日 将会顺延至当前周期内的第一个交易日,如指定每月第1日调仓,但当月1日不是交易日,则将顺延至当月 的第一个交易日。

参数:
  • tm (TradeManager) -- 交易管理

  • se (SelectorBase) -- 交易对象选择算法

  • af (AllocateFundsBase) -- 资金分配算法

  • adjust_cycle (int) -- 调仓周期

  • adjust_mode (str) -- 调仓模式

  • delay_to_trading_day (bool) -- 如果当日不是交易日将会被顺延至当前周期内的第一个交易日

hikyuu.trade_sys.PF_WithoutAF([tm, se, adjust_cycle=1, adjust_mode="query", delay_to_trading_day=True, trade_on_close=True, sys_use_self_tm=False, sell_at_not_selected=False])

创建无资金分配算法的投资组合,所有单系统策略使用共同的 tm 管理账户

调仓模式 adjust_mode 说明: - "query" 模式,跟随输入参数 query 中的 ktype,此时 adjust_cycle 为以 query 中的 ktype 决定周期间隔; - "day" 模式,adjust_cycle 为调仓间隔天数 - "week" | "month" | "quarter" | "year" 模式时,adjust_cycle

为对应的每周第N日、每月第n日、每季度第n日、每年第n日,在 delay_to_trading_day 为 false 时 如果当日不是交易日将会被跳过调仓;当 delay_to_trading_day 为 true时,如果当日不是交易日 将会顺延至当前周期内的第一个交易日,如指定每月第1日调仓,但当月1日不是交易日,则将顺延至当月 的第一个交易日。

参数:
  • tm (TradeManager) -- 交易管理

  • se (SelectorBase) -- 交易对象选择算法

  • adjust_cycle (int) -- 调仓周期

  • adjust_mode (str) -- 调仓模式

  • delay_to_trading_day (bool) -- 如果当日不是交易日将会被顺延至当前周期内的第一个交易日

  • trade_on_close (bool) -- 交易是否在收盘时进行

  • sys_use_self_tm (bool) -- 原型系统使用自身附带的tm进行计算

  • sell_at_not_selected (bool) -- 调仓日未选中的股票是否强制卖出

投资组合类定义

class hikyuu.trade_sys.Portfolio

实现多标的、多策略的投资组合

name  名称
query 运行条件
tm 关联的交易管理实例
se 选择器策略
af 资产分配算法
proto_sys_list 原型系统列表
real_sys_list 运行时的实际系统列表
get_param(self, name)

获取指定的参数

参数:

name (str) -- 参数名称

返回:

参数值

抛出:

out_of_range -- 无此参数

set_param(self, name, value)

设置参数

参数:
  • name (str) -- 参数名称

  • value (int | bool | float | string) -- 参数值

抛出:

logic_error -- Unsupported type! 不支持的参数类型

reset(self)

复位操作

clone(self)

克隆操作

run(self, query[, force=false])

运行投资组合策略。在查询条件及各组件没有变化时,PF在第二次执行时,默认不会实际进行计算。 但由于各个组件的参数可能改变,此种情况无法自动判断是否需要重计算,可以手工指定进行强制计算。

参数:
  • query (Query) -- 查询条件

  • force (bool) -- 强制重新计算