模拟资金池 · 双引擎每日模拟
本页是把原「综合分析」里第七节(模拟资金池)和第八节(量化工具箱)独立出来的专用页,并新增了「明日操作计划」与「实盘模拟」两块内容——因为这两件事放在决策仪表板里容易被冲淡,而它们恰恰是每天真正要用的。
它在做什么:把 ¥100,000 静态切成两条腿——¥50,000 做轮动(黄金ETF 518880 ⇄ 银华日利 511880 二选一),¥50,000 做网格(对 518880 挂等额限价单)。从 2022-09-26 起,每个交易日按同一套固定规则自动决策,一天都没跳过,净值逐日累积到今天。所有真实摩擦(换手成本、滑点、T+1 成交、货币腿分红、网格限价成交)都算了进去。
本页怎么读:第一节回答「明天该做什么」,第二节回答「现在拿一笔新钱该怎么起步」,第三节回答「实盘成绩怎么记」,第四节是成绩单与口径,第五节是你可以自己调参数试算的工具。全部数字实时来自 live 后端。
一、明日操作计划 · 两个策略明天各做什么
第四节的净值曲线回答的是「这套规则过去跑得怎么样」。但每天真正要面对的是另一个问题:明天该做什么。所以每个交易日收盘后,系统会把「下一交易日」的操作清单算出来、并且立刻冻结存档(写进 sim_signal 表)。
为什么强调「冻结」:如果计划可以事后修改,那任何「实盘复盘」都是自欺欺人。冻结之后,第二天收盘再拿实际成交去和前一天的计划逐条对照(见 三-C),有没有按规则执行一眼就能看出来。
一-A · 明日计划总览
| 加载中… |
一-B · 策略一:轮动腿(黄金ETF ⇄ 货币ETF)
轮动腿的明日动作是唯一确定的:要么保持不动,要么在收盘时整体换到另一条腿。它没有「价格到某个位置才触发」的条件,所以计划里只有一条指令。
| 加载中… |
一-C · 策略二:网格腿(518880 等额网格)
网格腿的明日动作是一张挂单表。注意一处容易看错的地方:明日用的网格线要用「含今日收盘」的 60 日窗口重新计算,所以它和今天正在生效的那组线并不完全相同——这正是「网格跟着价格漂移」的设计本身。
| 加载中… |
| 触发价 | 买入金额 | 预估份数 | 成交后该腿剩余现金 |
|---|---|---|---|
| 加载中… | |||
| 触发价 | 卖出份数 | 该批持仓买入价 | 买入日期 | 预估盈亏 |
|---|---|---|---|---|
| 加载中… | ||||
一-D · 计划是怎么算出来的
- 轮动腿:收盘后用分红还原的两条腿序列各算「40 日加权对数斜率 × R²」,取差值(黄金分 − 货币分)。持仓在货币腿且差值 ≥ +0.020 → 挂「明日收盘换黄金腿」;持仓在黄金腿且差值 ≤ −0.020 → 挂「明日收盘换货币腿」;中间区间不挂任何单(迟滞带内保持,避免临界抖动)。计划里会给出距阈值还差多少分,方便提前判断会不会动。
- 网格腿买单:取「含今日收盘」的 60 日极值区间、外扩 15%、切成 11 条线,所有低于今日收盘价的线各挂一张买单,金额固定 = 5万 × 80% ÷ 10 = ¥4,000。受两个硬约束限制:① 持仓档数上限 10 档;② 该腿的可用现金。任一不满足就不挂,且页面上会写明原因。
- 网格腿卖单:所有高于今日收盘价的线,逐条去匹配一条满足「触发价 ≤ 该线」且「买入日早于次日」的持仓(先买先卖 FIFO)。匹配不到就不挂——「卖单为空」正是持仓被套在网格带之外的数学表现,本页会把它明确标出来。
- 成交口径:轮动腿 T+1 日收盘市价成交(0.05% 滑点 + 0.03% 费用);网格腿按限价单成交(盘中触及即成交,0.03% 费用,无滑点)。完整口径见 四-F。
- 日期口径:目标日是按周一~周五推算的下一交易日,没有扣法定节假日——所以它只是展示与对账的锚点。真正的对账以净值表里实际出现的交易日为准。
二、新资金入场参考 · 如果今天从零开始
第一节说的是模拟账户明天要做什么。但它回答不了另一件事:你现在拿一笔新钱开始跟,今天该怎么起步? 这两个问题的答案是不同的——模拟账户的持仓是它 964 个交易日走出来的历史路径,你要复制的是规则,不是它的持仓快照。
二-A · 轮动腿:一次到位,没有分批
轮动腿没有「档位」概念:规则说持哪条腿,就全额持哪条腿。所以对新资金来说,当前的信号本身就是持仓信号—— 「等下一个买入信号再进」在轮动腿上不成立,那等于赌它会跌,与规则相反。
| 加载中… |
二-B · 网格腿:今天该持几档
网格腿的规则是「价格每跌穿一条线,买一档」。所以「此刻该持几档」只由当前价在网格带里的位置决定, 与模拟账户已经持了几档毫无关系。这也是为什么不能照抄它的满仓状态——那个满仓是卡死,不是看多。
| 加载中… |
二-C · 补齐表:按规则此刻应持有的档位
现价上方的网格线已被向下击穿,按规则此刻就应持有这么多档。注意实际成交价是今天的价(历史线价已经买不到了), 而卖点仍按规则 = 该档线价 + 步长,正好落在上方相邻的那条线上。最低那档卖得最早。
| 档 | 所属网格线 | 成交价(现价) | 金额 | 预估份数 | 卖出触发价 | 距现价 |
|---|---|---|---|---|---|---|
| 加载中… | ||||||
二-D · 待命表:留给更低价格的档位
档位上限 10 档,补齐后剩下的才留给更低的价。这是网格的全部意义所在——一次性把 10 档买满,等于把它变成一次性买入, 而且真跌下去你没子弹。模拟账户现在就是这个状态。
| 档 | 买入触发价 | 距现价 | 金额 | 买后卖出触发价 |
|---|---|---|---|---|
| 加载中… | ||||
二-E · 为什么新资金不会重蹈覆辙
模拟账户的网格腿现在卡死了:10 档全部买在 2026-01~03 的高位,卖点全在网格带上沿之上,既买不了也卖不了。 这容易让人以为「网格这东西废了」。但那只是它的成本价造成的——你的成本是今天的价,卖点自然跟着今天走。
| 对比项 | 模拟账户网格腿(历史) | 新资金(今天起步) |
|---|---|---|
| 加载中… | ||
二-F · 实盘取整与摩擦(模拟盘没算的部分)
| 加载中… |
- ETF 最小单位 100 份,每档金额除下来通常除不尽,只能取邻近的整数手——这会带来 10% 上下的金额误差,需要在心里打个折。
- 券商最低佣金:回测里网格腿累计约 400 笔成交,若按最低 5 元/笔计,单这一项就是约 ¥2,000,接近网格腿本金的 4%。 回测只算了 0.03% 费用 + 滑点,没有算最低佣金。每档金额越大,这项的摊薄越小。
- 轮动腿按 T+1 收盘 + 0.05% 滑点建模:实盘只能在收盘前几分钟下单近似,不可能完全同步。
- 本站的「实盘段」≠ 你的实盘:第三节统计的是模拟账户从起点日之后的样本外表现; 你自己真金白银的部分需要另外记账,两者不要混在一起看。
三、实盘模拟 · 从起点日起单独统计
回测再好看,也是「已经知道答案之后」跑出来的。所以本站给这个模拟账户打上实盘标记:起点之前的净值归入「样本内回测」,起点之后归入「实盘模拟(样本外)」,两段分开统计,而且回测段的数字从此不再改写。
三-A · 实盘阶段状态
| 加载中… |
三-B · 实盘段成绩(样本外)
实盘段的收益以实盘起点前一交易日的净值为基准计算,所以它和回测段首尾相接、不重不漏。
| 分段 | 期末资产 | 累计收益 | 年化 | 最大回撤 | 说明 |
|---|---|---|---|---|---|
| 加载中… | |||||
三-C · 计划 vs 实际:最近一次对账
把前一交易日冻结的计划和当日的实际成交并排比对。这是检验「规则有没有被真正执行」的地方——包括「计划说不动、当天也确实没动」这种沉默的符合。
| 腿 | 前一交易日的计划 | 当日实际 | 判定 |
|---|---|---|---|
| 加载中… | |||
三-D · 实盘统计的口径与局限
- 实盘起点是把该日之前的数据排除在统计之外,不是「从起点日重新起算 10 万」。实盘段沿用同一个账户的存量持仓,只是收益从起点前一日开始单独计量——所以实盘段的基期值是当时的真实净值(约 18 万),不是 10 万。
- 标的仍来自公开日线(新浪财经),不是券商实时成交回报。所以「实盘模拟」更准确的叫法是样本外规则验证:它剔除了参数挑选偏差,但没有剔除数据口径偏差(除权除息还原、成交假设)。
- 样本外天数会很少。刚上线的头几十个交易日,实盘段的「年化」基本没有统计意义,请重点看累计收益和与基准的差距,不要看年化。
- 对账只比对「是否符合计划」,不评价「计划本身赚不赚钱」。一个完全按规则执行、但当月亏钱的分段,在对账里仍然算符合——这是故意的,两个问题必须分开看。
- 不构成投资建议。
四、模拟资金池:10 万双引擎 · 每日自动运行
第五节的工具都是一次性试算——你给参数,它算一遍给你看。但真实交易是每天都要做决定的:昨天该不该换腿?今天这一格该不该买?所以这里另跑了一个持续运行的模拟账户:把 ¥100,000 静态切成两腿,从 2022-09-26 起每个交易日按固定规则自动决策,净值逐日累积到今天,一天都没跳过。
为什么值得看:一次性回测容易挑到好看的参数;而「每天按同一套规则跑」没法挑参数,并且把换手成本、滑点、T+1 成交、货币腿分红、网格限价成交这些真实摩擦全算进去了。跑出来的净值就是这套规则的成绩单,包括它难看的地方——下面的「口径与局限」一节把每一处不利因素都写明了。
四-A · 资金怎么分
| 资金池 | ¥100,000 · 静态切分(盈利不再追加投入,避免复利美化成绩) |
|---|---|
| 轮动腿 | ¥50,000 · 黄金ETF 518880 ⇄ 银华日利 511880(场内货币ETF)二选一,永远是满仓其中一边 |
| 网格腿 | ¥50,000 · 对 518880 做波动自适应等额网格,固定 10 档、每档 ¥4,000,留 20% 现金垫不参与买入 |
| 基准线 | ¥100,000 于同一天一次性买入 518880 并持有(仅作对照。它的风险特征与组合完全不同,不是"同样的东西") |
| 运行频率 | 每交易日 16:55 自动运行(日报 16:45 之后),同日重跑幂等、不会重复扣费 |
四-B · 净值曲线 & 核心指标
四-C · 分段成绩对比
把组合拆成两条腿单独看,再和「买入持有黄金 ETF」对照。注意基准的风险敞口是 100% 黄金,组合只有 50%,两者不是同一个风险等级的东西,所以看收益必须同时看回撤。
| 分段 | 期末资产 | 累计收益 | 年化 | 年化波动 | 夏普 | 最大回撤 |
|---|---|---|---|---|---|---|
| 加载中… | ||||||
夏普已扣无风险利率 1.5%/年(取货币腿口径)。四条曲线的夏普很接近,这是数学上的必然:两条腿都是黄金价格的衍生品,高度同源,按比例混合不会改变「单位风险收益」,只会改变暴露大小。真正的差异在回撤上。
四-D · 两条腿现在各持什么
| 加载中… |
| 加载中… |
四-E · 最近的成交
| 日期 | 腿 | 方向 | 标的 | 数量 | 成交价 | 金额 | 已实现盈亏 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 加载中… | ||||||||
四-F · 规则与成交口径(重要)
- 轮动腿打分:对两条腿各算「40 日加权对数斜率 × R²」(最近一天权重是 40 天前的 4 倍),比较两者之差。差值 ≥ +0.02 切到黄金,≤ −0.02 切回货币,中间区间保持不变——这个"迟滞带"是为了防止在临界点来回抖动。
- 轮动腿成交:T 日收盘算出信号,T+1 日收盘价成交(市价单,无未来函数),计 0.05% 滑点 + 0.03% 费用。
- 货币腿的口径坑:511880 的日线是除息价,收益以年度分红派发(实测 2022-12-30 / 2023-12-29 / 2024-12-31 / 2025-12-31 各回落 1.10%~1.70%)。若直接用收盘价算收益,年化会从 +1.35% 掉到 −0.06%——整条腿白干。因此本模拟:① 打分用分红还原后的总收益序列;② 持仓期间遇除息日按份额派现金入账。
- 网格带:取最近 60 日收盘极值区间,外扩 15%(下限不低于中值 ±4%),切成 10 档,每档 ¥4,000(= 5万 × 80% ÷ 10)。网格线每日按最新 60 日窗口重算,所以它会跟着价格漂移,不是一条死区间。
- 网格成交:按限价单建模——前一交易日收盘后算出的网格线,当日盘中触及即按该线价格成交(无滑点,按档位金额计费)。日内路径用 OHLC 标准假设:收盘 ≥ 开盘 走 O→低→高→收,收盘 < 开盘 走 O→高→低→收;单日单边最多成交 6 档。
- 防路径假设红利:当日买入的档位当日不卖。否则上述路径假设会凭空造出"日内低买高卖"的往返利润。
- 费用:所有成交按单边 0.03% 计费;轮动腿另加 0.05% 滑点。网格限价单不计滑点。
- 幂等:每日完整状态存档,同日重跑先删当日记录再从上一日状态重算,不会重复成交或重复扣费。
四-G · 口径与局限(这些必须知道)
四-H · 参数敏感性:这些数字不是挑出来的
最容易骗人的回测是「调遍所有参数、只展示最好那一组」。所以下面把三个关键参数各扫一遍,全部结果都列出来——包括比默认参数更好看的那几行。
下表是参数扫描当日的快照(样本 2022-09-26 ~ 2026-09-15,963 个交易日)。此后每新增一个交易日,默认那一行的成绩都会微幅变化,所以这里显示的数字与 四-B 净值卡的当前数字可能有 ±0.2 个百分点的小差异——这不是矛盾,是样本在增长。
| 参数 | 取值 | 组合年化 | 组合最大回撤 | 该参数影响的腿 |
|---|---|---|---|---|
| 轮动阈值 rot_th 默认 0.020 | 0.005 | +13.42% | 15.26% | 轮动腿 +16.31% |
| 0.010 | +12.07% | 19.86% | 轮动腿 +13.78% | |
| 0.020(默认) | +16.30% | 19.42% | 轮动腿 +21.51% | |
| 0.040 | +18.62% | 19.70% | 轮动腿 +25.51% | |
| 0.080 | +18.29% | 19.64% | 轮动腿 +24.95% | |
| 0.150 | +17.73% | 19.65% | 轮动腿 +24.00% | |
| 网格带外扩 grid_pad 默认 0.15 | 0.05 | 组合 +16.43% / 19.15% | 网格腿 +10.59% | |
| 0.15(默认) | +16.30% / 19.42% | 网格腿 +10.28% | ||
| 0.30 | +16.90% / 19.37% | 网格腿 +11.68% | ||
| 0.50 | +16.93% / 19.36% | 网格腿 +11.75% | ||
| 网格档数 grid_lines 默认 10 | 6 | +16.49% / 20.24% | 网格腿 +10.74% | |
| 8 | +16.13% / 19.35% | 网格腿 +9.90% | ||
| 10(默认) | +16.30% / 19.42% | 网格腿 +10.28% | ||
| 14 | +16.80% / 18.97% | 网格腿 +11.44% | ||
| 20 | +16.17% / 19.31% | 网格腿 +9.99% | ||
五、量化工具箱:轮动 + 网格(参数试算)
第四节的模拟账户用的是固定规则。如果你想自己调参数看效果——比如换标、换区间、换档距——用下面这两个交互工具。所有数据实时调 live backend,每个数字都来自同一份价格序列。
五-A · 量化轮动(5 标的 40 日加权斜率 + Z-score 排序)
白话 · 做什么:同一段时间里,5 类金价哪个涨得最干净?本工具对每个标的计算「40 日加权斜率 × R²」(最近 1 天的权重是 40 天前的 4 倍),再做 Z-score 标准化——拿当前斜率跟自己过去 250 天比,看在历史分布的什么位置。Z 越大 = 越在涨,越值得买。
白话 · 怎么读:表格按 Z-score 从大到小排,最上面就是当下"动量最强"的标的。Z > 0 = 当前在涨;Z > 1 = 历史上很少见的强趋势(属于过去 250 天的前 16%);Z < 0 = 当前在跌。该"轮动"层通常用于"主标的是黄金ETF,但想知道 xau / cnyg / jcj / gld 哪个当前更值得切换"的场景——比直接看 K 线条主观判断更稳。
| 标的 | 年化斜率% | R² | Z-score | 建议 |
|---|---|---|---|---|
| 加载中… | ||||
👉 Long = Z 排名前 1/3 且 R²>0.3(系统判做多组);Avoid = Z 排名后 1/3(系统判回避组);中间 = 观望。阈值是经验值,可在 backend 调整。
五-B · 量化网格(FIFO 回测模拟器)
白话 · 做什么:把上下边界(upper/lower)和每格步长(step)想成一条「鱼骨」:价格每跌到下一格就买入一份,每涨到上一格就卖出一份(先买先卖 FIFO)。回测就是把历史数据按这套规则跑一遍,看总共赚多少、最大亏多少。
白话 · 怎么用:网格适合震荡市,最怕单边趋势——单边涨会踏空、单边跌会一路接刀。所以这个工具适合在趋势不明确的时段跑一跑,看历史命中。这是"如果过去这样设网格,过去能赚多少"的回测,不是预测。
默认参数:黄金ETF (518880) 当前价约 8.94,上下界 7~10、步长 0.2、每格 1000 元。可以自行改成任意标的、任意区间试。
👉 输出 4 个核心指标:成交笔数、胜率、净收益、最大回撤。网格层 = 价格网共有多少格;未平持仓 = 测试结束时还剩多少手没平掉。一般胜率 > 50% + 最大回撤 < 净收益的 30% 算可接受组合。