mcpField
T
trader-timemachine

trader-timemachine

github.com/jakeschincariol数据与数据库2.6k116 次安装1 周前更新
代码仓库

关于 trader-timemachine

trader-timemachine 是面向日内交易流程的模拟技能,用股票近期 5 分钟行情重放交易计划,并对照历史交易规则结果。它提供概率与评估,不预测行情,也不下单。

主要功能

  1. 01重放交易计划并计算多种结果概率
  2. 02基于近期 5 分钟行情模拟
  3. 03回测规则在历史交易日的表现
  4. 04输出价格区间、平均 R 值和评估
  5. 05支持离线数据、JSON 和图表

适用场景

  1. 01下单或仓位计算前检查计划情境
  2. 02比较模拟结果与历史规则表现
  3. 03按指定离场时间模拟交易
  4. 04保存并查看模拟结果图表

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jakeschincariol/day-trader-skill --skill trader-timemachine

安装后在 Claude Code 中输入/trader-timemachine确认已加载。

附带文件timemachine.py

详细介绍

trader-timemachine

Time Machine 位于计划与资金之间。trader-exit 已设定入场价、止损价和目标价。在进行仓位计算或发送任何内容之前,这项技能会提出一个问题:如果今天的走势和该股票过去 60 天的走势相似,这个计划有多大概率先触及目标价、先触及止损价,或两者都不触及?它通过 10,000 次重放,以及同一规则在过去每个交易日的真实记录来回答。模拟基于该股票近期的 K 线构建,并非预测。日内交易会让大多数人亏钱,而回放结果看起来不错也改变不了这一点。

下文中的 ${CLAUDE_SKILL_DIR} 是此技能所在的文件夹(即 SKILL.md 所在的位置)。

python3 "${CLAUDE_SKILL_DIR}/timemachine.py" run                    # trader/plan.json, 10,000 replays, seed 19
python3 "${CLAUDE_SKILL_DIR}/timemachine.py" run --write            # also save trader/timemachine.json
python3 "${CLAUDE_SKILL_DIR}/timemachine.py" run --until 15:55      # end each replay at your flat-by time
python3 "${CLAUDE_SKILL_DIR}/timemachine.py" run --json
python3 "${CLAUDE_SKILL_DIR}/timemachine.py" run --symbol TSLA --date 2026-10-19 \
    --entry 364.18 --stop 358.32 --target 370.04 --entry-time "10:15 AM"
python3 "${CLAUDE_SKILL_DIR}/timemachine.py" chart --from           # ASCII fan chart of the saved run

其他标志:--replays N、--seed N(默认值为 19)、--window N(默认值为 2 根 K 线)、--offline FILE(已保存的 Yahoo chart JSON,.json 或 .json.gz)、--now "2026-10-19 10:15"(纽约时间),用于固定时钟。

读取和写入的内容

文件内容
trader/plan.json来自 trader-exit 的计划:股票代码、日期、入场价、entry_time / entry_bar、止损价、stop_rule、目标价、target_r、开盘区间
Yahoo chart API一次请求:60 天的 5 分钟 K 线(range=60d&interval=5m),免费且非官方,数据可能延迟
trader/timemachine.json使用 --write 时写入:{plan, mc, history} 以及结论。mc 包含赔率、百分位数、扇形图区间、160 条样本路径,以及收盘价的 24 桶直方图

工作原理

  1. 样本池。 只保留计划日期之前的完整交易时段:从纽约时间 9:30 到 4:00 的全部 78 根五分钟 K 线。半日交易、数据缺口和当天的数据都不纳入。每根 K 线都会转换成相对于前一根 K 线收盘价的四个比率: 开盘价、最高价、最低价和收盘价。
  2. 单次回放。 从入场价开始。对于当天剩余的每根 K 线,随机选取一根过去同一时段(前后 2 根 K 线范围内)的 K 线,并按当前价格缩放。逐根检查时,先检查止损,再检查目标价。如果一根 K 线同时触及两者,则计为触及止损。
  3. 10,000 次回放会得出四种概率:先触及目标价、先触及止损、两者都未触及(即交易在 --until 时仍未平仓;默认时间为下午 4:00,即收盘时间;NYSE 提前收盘日则为下午 1:00),以及盈利(即先触及目标价,或在 --until 时高于入场价)。 目标价为 1R 时,R 为 +1;触及止损时为 -1;否则,R 为 --until 时价格与入场价的距离除以风险。即使价格跳空越过止损,这里仍按 -1R 计算。实际成交结果可能更差。
  4. 历史表现。 计划本身的规则(相同的开盘区间、止损规则和目标 R)会在每个过去的交易时段重新运行。这反映的是实际发生的情况,而非模拟结果。
  5. 结论会根据这些数字用一行给出。只看触及其中一方的回放,并计算目标价先被触及的频率。目标价越高,盈亏平衡所需的胜率越低:1 / (1 + R)。1R 时为 50%,2R 时为 33%,3R 时为 25%。与盈亏平衡点相差不到 5 个百分点:1R 时标为“接近抛硬币”,其他 R 值时标为“接近盈亏平衡”。相差 5 到 15 个百分点:标为“偏向目标价”或“偏向止损”。相差 15 个百分点或以上:标为“明显偏向”其中一方。因此,目标价先被触及的概率为 24.1%、止损先被触及的概率为 50.5% 的 2R 计划,结论是接近盈亏平衡(在 74.6% 触及一方的回放中,它需要达到 33%,实际为 32%),而不是亏损计划。
  6. 结论下方,在适用时会显示:当超过 40% 的回放两者都未触及时,会显示一行提示(这些回放由 --until 时的价格决定);如果平均 R 的符号与倾向相反,也会显示平均 R。这些情况只可能是由两者都未触及的回放导致的反向信号。

随机种子。 抽样使用 Python 的 random.Random(seed),默认种子为 19。计划、数据和种子相同,无论在哪台机器上,结果都相同。每次报告结果时都要说明种子,以便用户复现。

仅使用五分钟 K 线。 Yahoo 保留 60 天的五分钟 K 线,但只保留约 7 天的一分钟 K 线,不足以构成公平的样本池。如果完整交易时段少于 20 个、入场 K 线不在数据中(日期错误、尚未收盘或属于未来日期),或计划不合理(买入计划的止损高于入场价、入场价不在五分钟网格上),程序就会用一行直白的提示拒绝执行。绝不会使用尚未完成的实时 K 线。

步骤

  1. 确认 trader/plan.json 是来自 /trader-exit 的今日计划。如果没有计划,先运行该工具,或通过标志传入计划。
  2. 运行 timemachine.py run --write。如果计划设有到时平仓时间,则添加 --until 15:55,这样“两者都未触及”就表示在你会退出交易的时间仍未平仓。
  3. 按以下顺序告知用户:四种概率、收盘价的中位数和 5 到 95 百分位区间、平均 R、历史表现一行,然后是结论一行及其下方的任何内容,并且完全按照程序输出的内容照述。说明随机种子。
  4. 如果结论是接近抛硬币或接近盈亏平衡,就直说,不要粉饰。如果历史表现与回放结果不一致,也要说明。
  5. 只需说明一次:这些结果基于最近 60 天的数据,并非预测。财报、新闻和停牌可能带来这 60 天的数据从未出现过的情况。继续之前,请查看该股票的 /trader-news。
  6. 如果用户仍想进行这笔交易,请转交给 /trader-budget 来确定仓位规模。

示例:回放

TSLA,2026-10-19,星期一。15 分钟开盘区间为 354.47 至 362.18。 10:10 的 K 线收盘价高于区间:入场价为上午 10:15(第 8 根 K 线)的 364.18,止损价为 358.32 (区间中点,向下取整),目标价为 370.04(1R,每股风险为 5.86)。

10,000 replays of the rest of the session, 10:15 AM to 4:00 PM (69 five-minute bars), seed 19.
  target first   29.4 %
  stop first     25.5 %
  neither        45.1 %   still open at 4:00 PM
  green          51.7 %   target first, or above the entry at 4:00 PM
  Price at 4:00 PM: median 364.36, 90 % of replays between 355.54 and 373.54.
  Average R: +0.034
History: the same rule on each of those 59 real sessions fired 33 times:
13 target, 15 stop, 5 neither. Average R -0.062.
Close to a coin flip: target first 29.4 % vs stop first 25.5 %.
45.1 % of the replays hit neither by 4:00 PM; the price at 4:00 PM decides those.

在 1R 时,在触及一侧的回放中,目标价必须先于止损价触及的比例为一半。实际为 53.6%。回放结果接近抛硬币,真实历史表现则略逊于五五开。这是该策略的真实情况,也是用户在 /trader-budget 计算 8 股仓位前应该听到的答案。

规则

  • 每个数字都来自运行结果。绝不能把五五开的结果向上取整成优势。
  • 结论行及其下方的内容由工具打印。照原样重复,不要改写。绝不能只凭目标价先于止损价触及来判断 2R 或 3R 计划:结论已考虑目标价对应的 R 值。
  • 模拟胜算不是预测,也不是承诺。直白地说明一次即可。
  • 免费的 Yahoo 数据未经官方认证,可能存在延迟。K 线为 5 分钟线,逐根检查,绝非逐笔检查,也不是实时数据。
  • 始终说明随机种子,以便重复运行。
  • 每次运行只处理一个计划。更改入场价、止损价、目标价或日期,都算新的运行。

它绝不会做的事

它绝不会下单、确定仓位大小、修改计划,也绝不会把结果说成必然。它绝不会打印盈亏或利润。 它绝不会使用尚未收盘的 K 线,也绝不会将今天的 K 线混入数据池。

安全

  • 用于教育和工具辅助,不构成财务建议。PASS 仅表示通过规则检查,不构成推荐。
  • 默认使用模拟交易("paper": true)。是否实盘由用户自行决定,并在自己的配置中设置。
  • 除 trader-broker 外,此套件中的任何内容都不会下单;且只有同时满足以下三项时才会下单:trader-risk 当天已通过该笔确切订单;用户已在聊天中明确输入“是”以确认该笔订单;用户已在 Claude 自己的卡片上点击一次 Allow,因为订单工具设置为“需要批准”(Customize > Connectors > tool permissions)。绝不要将订单工具设置为“始终允许”。
  • 除非配置允许且用户确认,否则不得使用期权、保证金、卖空或杠杆。
  • 经纪商密钥应存放在环境变量或 Claude Desktop 配置中,绝不能放在聊天里。

评论

支持 Markdown