quant.backtest

class quant.backtest.strategy.AbstractStrategy[源代码]

股票回测策略基类

Attributes:
end_date
mods
net_value

净值序列, pd.Series

start_date

Methods

change_position(tobuy_pct) 更新持仓比例
handle(today, universe) 每日调仓函数,用户逻辑,需重载
run() 运行回测过程
change_position(tobuy_pct: dict)[源代码]

更新持仓比例

Parameters:
tobuy_pct: dict

以股票代码为键,持仓比例为值

end_date = None

结束日期 %Y-%m-%d

handle(today, universe)[源代码]

每日调仓函数,用户逻辑,需重载

mods = None

可用Mod列表

name = 'strategy'

策略名称,用于结果输出

net_value

净值序列, pd.Series

run()[源代码]

运行回测过程

start_date = None

起始日期 %Y-%m-%d

class quant.backtest.strategy.SimpleStrategy(predicted, name=None, buy_count=50, mods=None)[源代码]

简单的回测,只需要输入一个预测收益率的DataFrame, 每期自动等权做多预测最高的`buy_count`只股票

Attributes:
end_date
mods
net_value

净值序列, pd.Series

start_date

Methods

change_position(tobuy_pct) 更新持仓比例
handle(today, universe) 每日调仓函数,用户逻辑,需重载
run() 运行回测过程
__init__(predicted, name=None, buy_count=50, mods=None)[源代码]
Parameters:
predicted: pd.DataFrame

预测收益率

name: str

策略名称,用于显示

buy_count: int

每期做多股票数量

mods: ModManager

使用的模块列表,None则为全部已注册模块

class quant.backtest.strategy.ConstraintStrategy(*args, constraint_config=None, **kwargs)[源代码]

中性策略,在SimpleStrategy的基础上控制行业和因子暴露 # TODO: cost in objective

Attributes:
end_date
mods
net_value

净值序列, pd.Series

start_date

Methods

change_position(tobuy_pct) 更新持仓比例
handle(today, universe) 每日调仓函数,用户逻辑,需重载
optimize_with_mosek(predicted, today) 使用Mosek来优化构建组合。在测试中Mosek比scipy的单纯形法快约18倍,如果可能请尽量使用Mosek。 但是Mosek是一个商业软件,因此你需要一份授权。如果没有授权的话请使用scipy或optlang。
optimize_with_optlang(predicted, today) Optlang是一个支持很多后端优化器的接口,包括scipy。
optimize_with_scipy(predicted, today) 最大化预期收益,最小化风险暴露。
run() 运行回测过程
__init__(*args, constraint_config=None, **kwargs)[源代码]