Skip to content

Repository files navigation

TradeTrace

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 条 XBTUSD Trade 执行,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 报告

快速开始

环境要求

  • Python 3.11+
  • uv
  • Git LFS:仓库中的 Binance 行情缓存约 374 MB,由 LFS 管理

克隆和安装

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 analyze

fetch 使用官方 .CHECKSUM 做 SHA-256 校验,已有且校验通过的档案会复用;analyze 是幂等的,可重复运行。分析前必须存在 data/market/binance-btcusdt-perp-1m.sqlite,否则先运行 fetch 或拉取 LFS 文件。

数据和来源

公开账本

BTC-Trading-Since-2020 是独立 Git 子模块,当前项目固定到一个可复核的提交。它包含执行、订单、钱包事件、终态快照、manifest 和派生财富曲线。初始化方式:

git submodule update --init --recursive

原始数据字段语义、隐私处理和版本策略见子模块的 中文说明

Binance 行情

账本标的 市场标的 市场 粒度
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 或其他凭据写入仓库。

计算规则

成交与分钟 K 线匹配

只匹配 execType=Trade 且存在 lastPxXBTUSD 执行。统一使用 UTC,并按以下规则确定分钟:

candle_open_time = floor(execution_timestamp_ms / 60000) * 60000

对应分钟不存在时标记 missing_candle,不使用相邻 K 线替代。每笔成交保留原始 lastPx,并生成:

  • in_rangelow <= lastPx <= high
  • below_range:成交价低于分钟最低价
  • above_range:成交价高于分钟最高价
  • missing_candle:分钟不存在

Binance 的 open/high/low/close 只用于成交位置、MAE/MFE、日度盯市和价格路径;不会替换账本成交价。

仓位与盈亏

  • 使用 XBTUSD 反向合约公式和实际 lastPx 重建仓位、均价、加仓、减仓、平仓和反手。
  • 钱包账本的 realisedPnl、手续费、资金费和余额是权威核算层。
  • 公式重建结果用于交叉校验和持仓段分析。
  • 持仓段在仓位归零或方向反转时切分。

研究维度

报告重点检验:

  1. GTC Limit、Market/IOC、Stop 的订单意图和填充结果。
  2. maker/taker、分钟成交位置、价格层级、分批成交和订单簇。
  3. 目标库存重估、浮亏加仓、持仓段时长、MAE/MFE 和有效杠杆。
  4. 普通风险档与高风险档的收益集中度、回撤和恢复。
  5. 公开“100 天”窗口内外的方向、仓位、收益和回撤。
  6. 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 中附上:

  1. 数据文件、时间范围和具体复现命令;
  2. 预期结果与实际结果;
  3. 不涉及凭据的最小示例或表格行;
  4. 若是方法建议,说明它会改变哪一个指标或结论。

分析代码优先使用 Python 标准库和现有输出;新增依赖或新的行情来源应说明必要性。不要提交 API key、secret、个人身份信息或未公开账户数据。

许可证和数据使用

本项目目前未在根目录声明独立软件许可证。代码、公开账本子模块、Binance 数据和 X 帖子分别受其各自来源条款约束;再分发或商业使用前,请阅读对应来源的许可证和服务条款。

相关链接

About

Reproducible research on Paul Wei's public BitMEX ledger: execution, position, risk and Binance-backed BTCUSDT 1m analysis.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages