TradeTrace 是一个可复现的交易研究项目:基于 Paul Wei(@coolish)公开的 BitMEX 账本,研究其下单、挂单、成交、动态仓位、风险放大与回撤恢复方式。
项目使用 Binance USDⓈ-M 永续 BTCUSDT 的 1 分钟 K 线为 XBTUSD 提供市场背景;不调用 BitMEX 行情 API,也不需要任何 API key。成交价、仓位均价、实现盈亏和手续费始终使用账本记录的 lastPx 与原始字段。
这是一份历史行为研究,不是收益承诺、投资建议、自动下单系统或跟单策略。
当前报告覆盖 2020-05-01 至 2026-07-19 的公开账本,并对 XBTUSD 做深入分析:
- 98,874 条
XBTUSDTrade 执行,688 个归零或反转持仓段。 - 约 88.3% 的样本时间处于非零仓位;Stop/StopLimit 仅占 XBTUSD 订单的 0.40%。
- Limit 订单最终 Filled 占 66.4%,数量加权填充率 56.7%;Market/IOC 的数量填充率 97.3%。
- 在可与 Binance 分钟区间匹配的成交中,maker Buy 更靠近分钟低位,maker Sell 更靠近分钟高位;taker 更偏向快速完成仓位。
- 活跃日峰值杠杆最高五分位累计为 -26.91 XBT,调整后财富最大回撤为 -80.6%;数据支持风险分档,不支持无限放大仓位。
- 公开的“100 天”窗口没有机械地产生多头仓位,更像趋势确认概率与风险预算框架,而不是固定买入信号。
完整解释、表格、图表、案例和方法边界见 HTML 报告 与 Markdown 报告。
brew install git-lfs # macOS;其他系统见 Git LFS 官方安装说明
git lfs install
git clone https://github.com/AaronL725/TradeTrace.git
cd TradeTrace
git lfs pull
git submodule update --init --recursive
uv sync如果已经克隆过仓库但看到的是 LFS pointer 文件,先运行:
git lfs install
git lfs pull# 离线单元测试
uv run python -m unittest test_tradetrace.py
# 可选:从 Binance Data Vision 下载并校验完整月份/末端日度 ZIP
uv run python tradetrace.py fetch
# 审计账本、匹配 K 线、重建仓位并生成报告
uv run python tradetrace.py analyzefetch 使用官方 .CHECKSUM 做 SHA-256 校验,已有且校验通过的档案会复用;analyze 是幂等的,可重复运行。分析前必须存在 data/market/binance-btcusdt-perp-1m.sqlite,否则先运行 fetch 或拉取 LFS 文件。
BTC-Trading-Since-2020 是独立 Git 子模块,当前项目固定到一个可复核的提交。它包含执行、订单、钱包事件、终态快照、manifest 和派生财富曲线。初始化方式:
git submodule update --init --recursive原始数据字段语义、隐私处理和版本策略见子模块的 中文说明。
| 账本标的 | 市场标的 | 市场 | 粒度 |
|---|---|---|---|
XBTUSD |
BTCUSDT |
Binance USDⓈ-M Perpetual | 1 分钟 |
行情来源是 Binance Public Data。项目下载月度 ZIP,数据末端的不完整月份下载日度 ZIP,并保存到:
data/market/binance/archives/
data/market/binance-btcusdt-perp-1m.sqlite
这些文件按照当前 .gitignore 规则保留在仓库中,并通过 .gitattributes 使用 Git LFS。不要把 API key、secret 或其他凭据写入仓库。
只匹配 execType=Trade 且存在 lastPx 的 XBTUSD 执行。统一使用 UTC,并按以下规则确定分钟:
candle_open_time = floor(execution_timestamp_ms / 60000) * 60000
对应分钟不存在时标记 missing_candle,不使用相邻 K 线替代。每笔成交保留原始 lastPx,并生成:
in_range:low <= lastPx <= highbelow_range:成交价低于分钟最低价above_range:成交价高于分钟最高价missing_candle:分钟不存在
Binance 的 open/high/low/close 只用于成交位置、MAE/MFE、日度盯市和价格路径;不会替换账本成交价。
- 使用 XBTUSD 反向合约公式和实际
lastPx重建仓位、均价、加仓、减仓、平仓和反手。 - 钱包账本的
realisedPnl、手续费、资金费和余额是权威核算层。 - 公式重建结果用于交叉校验和持仓段分析。
- 持仓段在仓位归零或方向反转时切分。
报告重点检验:
- GTC Limit、Market/IOC、Stop 的订单意图和填充结果。
- maker/taker、分钟成交位置、价格层级、分批成交和订单簇。
- 目标库存重估、浮亏加仓、持仓段时长、MAE/MFE 和有效杠杆。
- 普通风险档与高风险档的收益集中度、回撤和恢复。
- 公开“100 天”窗口内外的方向、仓位、收益和回撤。
- 2020 初期回撤、2021 高活跃、2022 去杠杆、2026 末端空头等案例。
TradeTrace/
├── BTC-Trading-Since-2020/ # Git 子模块:公开交易账本
├── data/market/ # Binance ZIP 与 SQLite,Git LFS
├── tradetrace.py # fetch/analyze CLI 与全部核心分析
├── test_tradetrace.py # 离线单元测试
├── research/ # Paul 本人公开帖与官方来源索引
├── reports/
│ ├── paulwei-analysis.html # 自包含 HTML 主报告
│ ├── paulwei-analysis.md # 可审阅的中文 Markdown 报告
│ ├── artifact.json # HTML 报告规范化输入
│ ├── tables/ # CSV 明细和聚合表
│ └── figures/ # 全局图和案例图
├── .gitattributes # Git LFS 路径规则
├── .gitignore
└── pyproject.toml
| 输出 | 内容 |
|---|---|
| HTML 主报告 | 自包含报告,包含叙事、原生图表、表格和来源元数据 |
| Markdown 报告 | 适合代码审阅、版本比较和纯文本阅读 |
reports/tables/execution_context.csv |
每笔 XBTUSD Trade 与 Binance 分钟区间的匹配状态 |
reports/tables/position_actions.csv |
逐笔仓位动作、实际成交价、浮盈亏、手续费和有效杠杆 |
reports/tables/position_episodes.csv |
归零/反转持仓段、持续时间、PnL、MAE/MFE |
reports/tables/order_outcome_summary.csv |
Limit、Market、Stop 的订单结果和填充率 |
reports/tables/execution_style_summary.csv |
按方向和 maker/taker 分组的分钟成交位置 |
reports/tables/post_fill_summary.csv |
订单级 5 分钟、1 小时、1 天方向化价格路径 |
reports/tables/risk_quintile_summary.csv |
活跃日峰值杠杆五分位与 PnL |
reports/tables/yearly_style.csv |
年度方向偏置、BTC 成交占比和有效杠杆 |
reports/tables/case_summary.csv |
重点时期的行情、仓位、钱包和提款摘要 |
Paul 本人的公开表达只作为行为解释背景,不替代账本证据。来源索引和使用规则见 research/paulwei-sources.md,其中包括:
- 只看 K 线、手动交易的自我描述
- 挂单不要求全部成交与动态目标仓位
- 将仓位视作等值现金重新判断
- “普通攻击 / 放技能”的风险分档
- “100 天”趋势确认框架
- 回撤、恢复、减仓和近期反弹卖出观点
- 公开订单记录多为最终状态时间,不能恢复最初挂单时间、完整 amend 路径或未成交订单生命周期。
- Binance 1 分钟 K 线只提供市场背景;分钟位置和行情路径是代理分析,不是 BitMEX 原生逐笔盘口重建。
- 范围外成交不会被删除或修正;成交位置结论只使用明确标记为
in_range的样本。 - maker/taker 的成交后差异受市场状态和执行任务选择影响,不能直接解释为因果 alpha。
- 统计结果与手动交易相容,但不能证明完全不存在自动化辅助。
- 公开账本无法恢复交易者当时未公开的信息、心理状态和主观把握度。
- PnL 以 XBT 计价;跨 BTC 价格阶段比较时,不应把 XBT 数量变化直接等同于法币收益变化。
欢迎提交可复核的字段解释、数据质量问题、测试用例和研究问题。建议在 Issue 或 Discussion 中附上:
- 数据文件、时间范围和具体复现命令;
- 预期结果与实际结果;
- 不涉及凭据的最小示例或表格行;
- 若是方法建议,说明它会改变哪一个指标或结论。
分析代码优先使用 Python 标准库和现有输出;新增依赖或新的行情来源应说明必要性。不要提交 API key、secret、个人身份信息或未公开账户数据。
本项目目前未在根目录声明独立软件许可证。代码、公开账本子模块、Binance 数据和 X 帖子分别受其各自来源条款约束;再分发或商业使用前,请阅读对应来源的许可证和服务条款。