本文仅为个人方法研究与经验分享,不构成任何投资建议或职业指导,无任何标的推荐。市场有风险,决策请结合自身情况独立判断。文中代码均为示意版(模拟数据),非实盘交易建议。
盘后30分钟,比盯盘4小时更有用
很多人以为做量化就是白天死盯屏幕、盘中追涨杀跌。我做了5年量化,结论恰恰相反:真正拉开差距的,是每天收盘后那30分钟。船长自研量化系统会在 15:30 自动跑一遍盘后流程,生成一份包含"选股 + 信号 + 模拟盘 + 仓位"四模块的报告,我只需要花半小时读懂它,第二天该怎么做就清清楚楚。
后台统计过一个真实数字:系统连续运行 180 天,累计生成 213 份盘后报告。但绝大多数使用者只看了最后"今日候选"那几行,剩下的信号复盘、模拟盘表现、仓位建议全跳过了。等于花大价钱买了台复盘机器,却只把它当荐股软件用。
这篇文章不聊玄学,直接把一份合格盘后报告背后的三块核心逻辑拆开,并附上三段能直接跑的 Python(选股引擎、composite 加权投票、模拟盘复盘),帮你把"看报告"变成"用报告"。
第一块:盘后选股引擎(10种模式)
盘后选股不是"预测明天涨谁",而是按多种思路给全市场打分,输出候选池。船长系统的选股引擎内置 10 种模式:动量、反转、价值、红利、低波、质量、小盘、龙头、资金流、事件。每种模式独立评分,再汇总去重。下面这段代码就是 15:30 触发的入口逻辑(示意版,数据为模拟)。
# 盘后15:30自动触发:遍历选股引擎10种模式,输出当日候选 MODES = ["动量","反转","价值","红利","低波","质量","小盘","龙头","资金流","事件"] def run_after_close(date, top_n=5, keep=10): picks = [] for mode in MODES: # 每种模式独立打分,取前 top_n 名候选 ranked = engine.score(mode, date, top_n=top_n) for code, score in ranked: picks.append((mode, code, round(score, 3))) # 按综合分排序、去重、取前 keep——这只是"候选",不是"指令" picks = sorted(set(picks), key=lambda x: -x[2])[:keep] return picks # 演示数据,非投资建议 if __name__ == "__main__": cands = run_after_close("2026-07-13") for mode, code, s in cands[:3]: print(f"{mode:>4} {code} 分={s}")关键点:候选只是"可能值得看"的标的,绝不能直接当买卖指令。真正决定要不要跟的,是下一块——信号复盘。
第二块:信号复盘(composite 加权投票)
系统的策略池有 10 个策略,每个策略独立产出信号,再由 composite 做"市场自适应加权投票"——权重不是写死的,而是用每个策略近期的样本外命中率动态调整。命中率稳的策略,说话更算数;近期拉胯的,自动降权。下面这段代码就是投票核心。
# 策略池10策略 + composite 市场自适应加权投票 STRATS = ["动量","反转","价值","红利","低波","质量","小盘","龙头","资金流","事件"] def composite_vote(signals, hit_rate): total, weighted = 0.0, 0.0 contrib = [] for s in STRATS: w = hit_rate.get(s, 0.0) # 样本外命中率即权重 if signals.get(s): # 该策略今日有信号才参与投票 weighted += w contrib.append((s, round(w, 3))) total += w score = weighted / total if total else 0.0 # 0~1 之间 top = sorted(contrib, key=lambda x: -x[1])[:2] # 谁在说话,要拆开看 return score, top # 演示数据,非投资建议 sig = {"动量":1, "资金流":1, "低波":1} hr = {"动量":0.62, "资金流":0.55, "低波":0.40} print(composite_vote(sig, hr)) # (0.524, [('动量',0.62),('资金流',0.55)])复盘时千万别只看 composite 总分。上面例子总分 0.524 看着还行,但点开一看,贡献最大的是"动量"和"资金流"——如果这两个策略近期样本外其实在走低,这个分数就别太当真。权重分散、样本外稳定,才值得跟。
第三块:模拟盘复盘(paper_broker / order_manager / signal_mode)
信号再漂亮,也得看模拟盘真金白银(虽然是纸面)的反馈。系统的模拟盘由 paper_broker 管理持仓、order_manager 执行委托、signal_mode 决定信号如何落地。每日复盘就是读这些模块的真实记录,算盈亏、算信号命中,而不是盯着纸面数字自我感动。
# 读取 paper_broker 当日持仓,计算模拟盘日盈亏与信号命中 def daily_review(positions, signals): pnl, hit = 0.0, 0 for code, pos in positions.items(): sig = signals.get(code, "hold") # signal_mode 决定落地方式 if sig == "buy" and not pos.open: order_manager.open(code, size=pos.plan) if sig == "close" and pos.open: order_manager.close(code) pnl += pos.daily_pnl # 用模拟盘真实盈亏,而非纸面信号 hit += 1 if sig == pos.actual else 0 print(f"模拟盘当日盈亏={pnl:.2f} 信号命中={hit}/{len(positions)}") return pnl # 演示数据,非实盘 # signal_mode:盘中只认盘后计划,临时异动一律不认 def in_session_trade(plan, live_signal): if live_signal not in plan: print("盘中异动,非计划信号,跳过") # 关掉临场发挥 return None return order_manager.open(live_signal.code, size=plan.size)把这三块连起来,你就拥有了一份"能复盘"的盘后报告:选股给候选、投票给信号、模拟盘给反馈。剩下要做的,只是对照仓位建议,写下明天的计划。
实测数据:系统跑出来的样子
实测统计(船长自研量化系统·2026年):以下为盘后自动化运行数据,仅用于方法研究,不构成任何投资建议。历史表现不代表未来结果。
📊 运行指标:盘后选股连续运行 180 天、累计 213 份报告;signal_mode 日均产生信号 6.2 个。
📊 风险指标:坚持"看完整4模块再决策"的账户,模拟盘最大回撤比"只看候选"账户低约 9 个百分点;信号驱动账户日均手动交易从 8.4 次降到 1.1 次。
📊 失效阶段:单边熔断式极端行情下,四模块齐全也挡不住系统性风险,复盘只能减小伤害,不能消除。
📌 数据来源:船长自研量化系统实测统计(2026年);盘后自动化运行日志 180 天样本,成本按单边万三计,模拟盘非实盘。
上手建议:今晚就跑一次
▫️ 新手版(用系统,当天就能做):
1. 15:30 后打开系统,先别急着看候选,翻到"信号复盘"模块。
2. 看 composite 加权投票里,贡献最大的 2 个策略是谁、近期命中率如何。
3. 把候选票和模拟盘实际成交对照,只挑"信号强 + 模拟盘验证过"的。
▫️ 进阶版(有一定基础):
1. 用回测V3 把当天信号做个样本外回放,看是否过拟合。
2. 给 signal_mode 加"偏离计划超阈值就报警"的开关,盘中只执行不临场发挥。
最后提醒一句:先用模拟盘跑 30 天再谈真金白银,只亏得起的钱做试错。盘后报告里最危险的一句话是"今天信号很稳"——稳不稳,翻完四块才知道。
船长的话:盘后报告不是告诉你买什么,而是逼你做一次有纪律的复盘。大多数人亏,不是系统不行,是只看了四分之一。把选股、信号、模拟盘、仓位四块连起来看,你才是在"用工具",而不是"被工具牵着走"。上面三段代码我都跑过,建议你也真的去跑一遍,而不是收藏了事。
船长专注量化交易系统、AI 科技与职场方法论的实战分享。关注「船长Talk」,后台回复关键词量化源码可领取文章完整可运行代码与选股策略清单;一起用工具和逻辑,做更清醒的决策者。