3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在聚宽(JoinQuant)平台上,涨停股池轮动策略(如追涨、打板、强势股轮动)因其高波动性,在模拟盘中常能跑出极高的短期收益。然而,这类策略在实盘中极易遭遇“回测/模拟盘很丰满,实盘很骨感”的窘境。要验证其收益的真实性并优化实盘逻辑,建议从以下几个核心维度进行系统性排查:
涨停策略对时间极其敏感,稍有不慎就会引入未来数据:
set_option("avoid_future_data", True)。开启后,若策略在盘中试图获取未收盘的未来数据(如当日收盘价),系统会直接抛出 FutureDataError,帮助你快速定位逻辑漏洞。history 或 attribute_history 获取天数据时,默认是不包含当天的。但若在盘中(如14:50)使用 get_price 且未严格限制 end_date,可能会误拿当天收盘价。get_call_auction,需注意当日集合竞价数据最晚于 09:28 分返回,确保下单逻辑在此时间之后触发。模拟盘与实盘最大的偏差往往在于“能不能买进去”和“能不能卖出来”:
order_volume_ratio):
initialize 中设置 set_option('order_volume_ratio', 0.25)(甚至更低,如 0.1),限制单笔订单成交量不得超过当日全市场总成交量的 10%~25%,以模拟真实的资金吞吐量。set_option('match_with_order_book', True)。这会优先从买一/卖一档开始撮合,能更真实地反映盘口排队情况。对于高频轮动的涨停策略,复权因子的变动对持仓股数和价格影响极大:
initialize 中调用 set_option('use_real_price', True)。涨停股在开盘或盘中拉升时,瞬时价格跳动剧烈,默认滑点往往无法覆盖真实摩擦成本:
PriceRelatedSlippage(0.00246) 对于追涨策略可能偏低。建议针对股票调高滑点,例如:set_slippage(PriceRelatedSlippage(0.005), type='stock'),甚至使用固定值滑点 FixedSlippage(0.02)(买入加2分钱,卖出减2分钱)。set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')
enable_profile):追涨策略对下单速度要求极高。在回测时最上方加入 enable_profile(),分析 handle_data 或 run_daily 中是否有耗时过长的代码(如频繁读取大容量历史数据),优化代码结构以减少实盘中的下单延迟。