← 返回工具目录 · 全部教程

模拟盘对接:回测通过后先跑两周模拟盘

系列·回测篇 05 — 回测数字好看不等于能上真钱,中间隔着滑点、涨跌停、停牌和你自己的手

📖 本篇是《量化实操教程》第 5 篇,前置:backtrader 回测入门(策略在历史数据上先站住脚)。

01 · 为什么回测和实盘之间必须隔一层

回测有三个先天盲区:成交假设理想化(信号价就当成交价,实盘有滑点和买不到)、未来函数漏网(写得再小心,也可能有一处用了当天才知道的信息)、没有你自己(回测不会手抖,你会)。模拟盘用活的数据、死的纪律把这三个盲区 在不上真钱的情况下暴露出来。

02 · 四种方案,怎么选

03 · 纸面账本骨架(方案①)

每天收盘后跑一次,三张表讲清全部事实:

import sqlite3
conn = sqlite3.connect("paper.db")
conn.executescript("""
CREATE TABLE IF NOT EXISTS signals(     -- 策略出的原始信号
  date TEXT, code TEXT, side TEXT, note TEXT);
CREATE TABLE IF NOT EXISTS fills(       -- 次日按开盘价虚拟成交
  date TEXT, code TEXT, side TEXT, price REAL, shares INTEGER);
CREATE TABLE IF NOT EXISTS equity(      -- 每日收盘估值
  date TEXT, cash REAL, market_value REAL);
""")
# 成交规则(写死在代码里,模拟期间不许改):
#   买入价 = 信号次日开盘价; 涨停价买不到 -> 记 "missed"
#   卖出价 = 触发条件次日开盘价; 跌停卖不出 -> 顺延到能卖的那天
#   手续费按万 2.5 + 千 1 印花税(卖出) 计,和回测口径一致

跑两周,你就有了一份和回测同口径的活体对照

04 · 对账:模拟 vs 回测,差异去哪了

模拟期结束时,把两边同期的成交逐笔对比,差异通常落在这四类:

05 · 什么时候算"通过",可以上小资金

四条全过,再用亏光了也不心疼的钱上小额实盘,继续记录;任何一条不过,回炉。

06 · 避坑清单

🏁 路径二主线(工作台 → 数据 → 回测 → 模拟盘)到此走完。 数据源想扩展到美股,回看 EODHD 海外数据实操; 全部教程见 教程路径总览

教程不构成任何投资建议;A 股无官方统一模拟盘接口,文中方案为自建对照,用于研究流程验证。