跳转到正文

运行与配置 ​

首次运行见各资产的日频示例:股票、基金、期货。本页说明公共入口和配置,资产费用与账户设置由各资产页定义。

Python 入口 ​

均从 localquant 导入,返回按 mod 名组织的字典;分析结果位于 result["sys_analyser"]。

调用用途
run_func(config=config, init=init, open_auction=open_auction, handle_bar=handle_bar)传入函数;只传实际需要的回调
run_file("strategy.py", config=config)策略位于独立 Python 文件,路径相对启动目录
run_code(source_code, config=config)策略为字符串,适合短实验
run(config, source_code=None)按配置指定的策略文件或 source_code 字符串运行;文件路径使用 base.strategy_file

前三种入口会在每轮运行前清理框架缓存,适合同进程顺序多轮运行。策略自己的模块全局变量仍由调用方重置;不在同一进程内用线程并发回测。批量任务见 参数优化。策略字符串传给 run_code 或 run 的参数,不写入 base.source_code。

run_func 会向回调所在模块注入策略 API 名称,包括 logger。入口自己的日志对象使用不同名称;策略 logger 在回测回调内使用,回测结束后可用普通 print 输出结果。

配置覆盖 ​

Python 显式 config > 策略文件或字符串中的 __config__ > 启动目录的 config.yml / mod_config.yml > ~/.localquant/ 下的同名配置 > 框架默认值。run_func 不读取策略文件的 __config__。

推荐在策略入口集中构造配置。策略文件中的顶层代码可能在读取 __config__ 时执行,取数和读大文件放到入口或 init。传给回调的文件路径宜使用绝对路径;框架不会把工作目录切换到策略目录。

运行入口会修改传入的配置字典;多轮运行从独立副本构造本轮配置。extra.context_vars 的普通嵌套字典在 init 前还原为字典,可用 context.params["risk"]["limit"] 访问。

基本配置 ​

下表列框架默认值。账户、日期和需要固定的交易假设应显式配置。

键默认用法
base.start_date / base.end_date2015-06-01 / 2050-01-01实际使用时显式设置,日期用 YYYY-MM-DD
base.frequency1d1d,或已加载/挂载分钟数据的 1m
base.accounts无有效账户股票基金用 {"stock": 初始现金},期货用 {"future": 初始现金}
base.custom_trading_days_a_yearNone,使用 252日收益指标统一使用的年化交易日数;写入结果并用于摘要、年度表和滚动指标,见指标口径
base.run_typeb本指南使用历史回测
base.use_risk_free_rateFalse指标是否采用国债曲线,须与 曲线加载 配合
base.capital_gain_tax_rate0示例显式设 0;不设置会产生配置警告
base.partial_fill_on_insufficient_cashFalse是否在撮合时按资金缩量,见 资金不足
extra.context_varsNoneinit 前注入 context 的字典;init 不应覆盖需要注入的参数
extra.log_levelinfo系统日志级别,如 debug、info、warning、error
extra.logger[]单独设置日志级别,如 [["user_log", "info"]]
extra.log_fileNone日志路径;同进程多轮运行时不用此项,见优化指南
extra.report_metadata未设置策略身份和实际参数快照,见 结果与报告

需要初始持仓时,base.init_positions 使用字符串,如 "600000.SH:100,000001.SZ:200",不传字典。按起点前一交易日价格初始化,需加载相应行情;股票基金持仓价值在初始现金之外计入权益。期货仅接受真实月合约,按保证金和持仓盈亏核算,不能把合约名义金额当作新增本金。初始持仓不恢复原策略状态或历史成交成本。

实际执行区间受交易日历和数据源可用范围约束,以 summary.start_date/end_date 为准。日期裁剪不保证每只标的、基准或因子窗口的数据完整,也不代表必要数据缺失时会自动缩短区间,相关条件见数据接入。

模块配置 ​

功能模块配置在 config["mod"][模块名]。系统默认启用账户、撮合、风控、费用、分析器、scheduler 和进度条模块;数据源 seeddata_source 须显式启用。enabled 是开关,lib 是已安装模块的导入路径,priority 越小越早启动;数据源使用 0。

设置说明位置
sys_simulation 成交与滑点、base.partial_fill_on_insufficient_cash撮合与交易约束
sys_accounts、sys_transaction_cost股票、基金、期货
base.margin_multiplier、base.forced_liquidation期货保证金与结算

sys_risk 默认开启 validate_price、validate_is_trading、validate_cash,默认关闭 validate_self_trade。它们分别校验限价、可交易性、资金和自成交;关闭校验不能补齐缺失行情。sys_progress.show=True 显示进度条,默认不显示;enabled=False 可禁用进度条模块。

分析器与基准 ​

配置位置:mod.sys_analyser。

键默认作用
recordTrue启用每日记录
output_fileNonepkl 路径;不设置则只返回内存结果,运行前创建父目录
strategy_nameNone结果中的策略名,建议显式填写
benchmarkNone无基准;显式字典选择单标的、固定权重组合或外部净值,见基准契约

即使 record=False,设置 benchmark 或 output_file 仍会启用记录;完全不需要分析结果时可将 sys_analyser.enabled=False,此时返回值没有该结果。

基准配置、CSV/Series/DataFrame 输入、首日收益与期初净值统一见基准与期初净值。结果导出操作见报告操作。

股票基金账户 ​

股票与基金共用 mod.sys_accounts 的以下设置。使用混合账户时不能按标的分别开启。

键框架默认值作用
stock_t1True按合约 market_tplus 限制当日可平数量
dividend_reinvestmentFalse派息日盘前按当时持仓估值价再投资,余款保留为现金
dividend_tax_enabledFalse按持有期限计算差异化红利税
cash_return_by_stock_delistedTrue退市时按引擎持仓市值返还现金
validate_stock_positionTrue卖出前校验可平数量
auto_switch_order_valueFalse适用的下单 API 资金不足时改按可用现金估量,见资金不足

公司行为的输入条件和实际入账方式见各资产页;这些配置不使本数据源自动具备可转债、期权或场外申赎能力。

localquant documentation