Home
Softono

Tradecat Public

Open source MIT Python
954
Stars
243
Forks
10
Issues
7
Watchers
2 months
Last Commit

 About Tradecat Public

交易猫数据系统

Platforms

Web Self-hosted

Languages

Python

Need Help Installing Tradecat Public?

We provide expert installation service for this software. Our team will install, configure, and secure Tradecat Public on your server. plans start at just $30.

Tradecat Public

View on GitHub

TradeCat Public

Sponsors / 赞助商

Sponsor Link
CA(交易猫 tradecat 社区) 0x8a99b8d53eff6bc331af529af74ad267f3167777
OPENAI OpenAI

TradeCat Public 是一个面向 Agent/Hermes 的自主纸面交易运行时。公开在线表格只作为信号源;Agent/Hermes 根据仓库内自包含的 Binance skill/API 快照和公开只读工具补齐行情上下文与交易 thesis;TradeCat 负责 schema 审计、信号对齐、paper/watch 执行、账本、风控拒绝、报告和可复现审计。

本仓库的核心目标是:Agent 交易员同步在线表格作为信号源的自主纸面交易系统。旧的本地交互式 TUI、安装器、watchdog、缓存浏览器和 project/ 根目录已经退役。

仓库身份以 tradecat-public 为准;GitHub remote 为 tukuaiai/tradecat-public。本仓库不代表旧私有 TradeCat 运行态,也不包含实盘 executor。

功能特性

  • 读取公开在线表格 signal_flowanomaly_panel,不依赖私有 TradeCat 服务端。
  • 使用 contracts/ 中的 JSON Schema 约束在线表格 source payload、Agent market context、trade thesis、paper report、audit journal 等 I/O。
  • 保留 Binance public-readonly skill/API 快照与 provenance,供 Agent/Hermes 研究行情上下文。
  • 执行本地 paper/watch,不读取 Binance key,不签名,不访问账户/订单私有端点,不真实下单。
  • 缺少 Agent 明确 sizing、leverage、stop loss、take profit 或 max holding plan 时 fail-closed。
  • 默认不常驻运行;paper loop 和 Web monitor 都必须由操作员显式启动。
  • 运行态隔离在 ignored .runtime/,可生成 paper ledger、cycle archive、SQLite audit journal、health/daily/replay/alert 报告。
  • 内嵌 skills/tradecat-public/,Agent/Hermes 可按 manifest 和 Skill references 使用本仓库。

安全边界

  • 只允许 public/read-only market data 与本地 paper/watch。
  • 禁止读取 Binance key/secret、.env、listen key、账户、余额、真实持仓或订单。
  • 禁止签名请求,禁止调用下单、撤单、改杠杆、改保证金等私有端点。
  • 禁止真实下单;实盘 executor 必须是未来独立私有仓库。
  • 本地运行态只能写入 ignored .runtime/.tradecat/.venv/.tools/.hermes/
  • 交易 sizing、leverage、止损、止盈、持仓时长必须来自 Agent thesis 或 ignored runtime paper autonomy profile;TradeCat 不写入真实交易参数。

快速开始

环境要求来自 pyproject.toml 和 CI:

  • Python >=3.12;CI 覆盖 Python 3.123.13
  • pip
  • 可选:make、Docker 或本地 gitleaks,用于部分开发入口或安全扫描加速。

安装开发依赖:

python3 -m pip install -c constraints.txt -e ".[dev]"

最短只读检查:

python3 scripts/request.py --datasets --format json
python3 scripts/request.py signal_flow --format json --limit 5
python3 scripts/request.py anomaly_panel --format json --limit 0
bash scripts/run-tradecat.sh soft-layer --json
bash scripts/start-auto-paper.sh status --json

如需代理读取公开在线表格,使用标准环境变量:

export HTTPS_PROXY=http://127.0.0.1:7890
export HTTP_PROXY=http://127.0.0.1:7890

目录结构

tradecat-public/
|-- README.md
|-- AGENTS.md
|-- CONTRIBUTING.md
|-- CHANGELOG.md
|-- LICENSE
|-- pyproject.toml
|-- constraints.txt
|-- Makefile
|-- .env.example
|-- .github/
|   |-- CODEOWNERS
|   |-- dependabot.yml
|   |-- pull_request_template.md
|   `-- workflows/ci.yml
|-- contracts/                 # JSON Schema 机器契约
|-- docs/                      # 架构、配置、部署、发布说明
|-- resources/
|   |-- agent_market_context/  # Binance skill/API 只读快照与 provenance
|   `-- agent_soft_layer/      # Agent 角色与软策略资源
|-- scripts/                   # request、paper runtime、验证、监控入口
|-- src/
|   |-- tradecat_sources/      # 在线表格公开信号源读取与 dataset contract
|   `-- tradecat_auto/         # Agent context、paper/watch、ledger、风控、报告
|-- tests/
`-- skills/tradecat-public/    # Hermes/Codex Skill 包

skills/tradecat-public/agents/manifest.json 是 Agent/Hermes 的唯一机器主契约。文档只解释它,不复制第二份机器契约。

project/ 已退役;tasks/ 是本地任务拆解/草稿目录,和 .runtime/ 一样不进入公开 GitHub 仓库。

配置说明

配置示例见 .env.example。允许的本地配置:

HTTP_PROXY=
HTTPS_PROXY=
NO_PROXY=127.0.0.1,localhost
TRADECAT_AUTO_PAPER_RUNTIME_DIR=.runtime/auto-paper
TRADECAT_AUTO_PAPER_CYCLE_TIMEOUT_SECONDS=6000
TRADECAT_AUTO_PAPER_FEE_BPS=4
TRADECAT_AUTO_PAPER_SLIPPAGE_BPS=0
TRADECAT_AUTO_PAPER_AGENT_TRADE_THESIS_PATH=
TRADECAT_AUTO_PAPER_AUTONOMY_ENABLED=0
TRADECAT_AUTO_PAPER_AUTONOMY_PROFILE_PATH=
TRADECAT_AUTO_PAPER_AUTONOMY_MARGIN_USDT=10
TRADECAT_AUTO_PAPER_AUTONOMY_LEVERAGE=1
TRADECAT_AUTO_PAPER_AUTONOMY_STOP_LOSS_BPS=150
TRADECAT_AUTO_PAPER_AUTONOMY_TAKE_PROFIT_BPS=300
TRADECAT_AUTO_PAPER_AUTONOMY_MAX_HOLDING_MINUTES=90
TRADECAT_AUTO_PAPER_AUTONOMY_DIRECTION_POLICY=sheet_signal_or_taker_flow
TRADECAT_AUTO_PAPER_MONITOR_HOST=127.0.0.1
TRADECAT_AUTO_PAPER_MONITOR_PORT=8765

默认本地 Web 监控地址来自 scripts/serve-auto-paper-monitor.pyhttp://127.0.0.1:8765/

start-auto-paper.sh 默认是手动运行 + 外部 Agent thesis 模式,不会自动生成 .runtime/auto-paper/paper_autonomy_profile.json,缺少明确 sizing/exits 时继续 agent_sizing_required fail-closed。只有显式设置 TRADECAT_AUTO_PAPER_AUTONOMY_ENABLED=1 或传入 TRADECAT_AUTO_PAPER_AUTONOMY_PROFILE_PATH 时,才会使用 paper-only runtime profile。

start-auto-paper.sh 也会默认维护 ignored .runtime/auto-paper/strategy_state.json。 该状态由 strategy-review 基于本地 paper ledger / cycle archive 生成,用于把亏损 symbol、亏损信号类型、亏损方向、最大持仓数和单币并发上限反馈到下一轮 paper 风控。 这是本地 paper/watch 自我迭代过滤,不读取 Binance 凭证,也不会触发真实订单。

纸面成本模型默认使用 Binance USDⓈ-M 官方 commission-rate 文档示例中的 taker 费率 4 bps 作为 public fallback;实际开仓滑点优先用公开 /fapi/v1/depth 盘口按 Agent notional 估算成交均价。精确账户/VIP/symbol 费率需要签名 USER_DATA,不属于本公开仓库边界。

TODO: GitHub 仓库 Settings 中的 main 分支保护、必需 review 和必需 status checks 无法从仓库文件确认;需要仓库管理员在 GitHub UI/API 中核查。

Agent 纸面交易流

signal_flow / anomaly_panel
-> Agent/Hermes 读取 Binance public/read-only K线、盘口、资金费率、OI 等上下文
-> agent_market_context.v1 + agent_trade_thesis.v1
-> context-audit
-> run-context / run-loop
-> paper risk gate
-> paper ledger + cycle archive + audit journal
-> health / daily / alert / replay report

常用 paper/watch 命令:

bash scripts/binance-public-bundle.sh --symbols BTCUSDT,ETHUSDT --json
bash scripts/run-tradecat.sh agent-market-context --symbol BTCUSDT --json
bash scripts/run-tradecat.sh context-audit --input context.json --json
bash scripts/run-tradecat.sh run-context --input context.json --mode paper --json
bash scripts/run-tradecat.sh run-once --agent-trade-thesis-path thesis.json --mode paper --json
bash scripts/run-tradecat.sh paper-report --json
bash scripts/run-tradecat.sh strategy-review --ledger-path .runtime/auto-paper/paper_ledger.json --archive-path .runtime/auto-paper/cycles.jsonl --json
bash scripts/run-tradecat.sh latest-cycle --json
bash scripts/run-tradecat.sh latest-decision --json
bash scripts/run-tradecat.sh audit-journal --json
bash scripts/run-tradecat.sh health-report --json
bash scripts/run-tradecat.sh daily-report --json

缺少 Agent sizing/exits 时,TradeCat 必须 fail-closed,并返回结构化 error_code,不得自动填金额、杠杆、止损或止盈。

常驻 paper/watch

默认不要常驻运行。启动 loop 会持续读取在线表格、public Binance 数据和本地 Agent/thesis 上下文,可能带来网络/API/token 成本;启动前先确认预算、代理和运行目的。

bash scripts/start-auto-paper.sh ops-check --json
bash scripts/start-auto-paper.sh start --json
bash scripts/start-auto-paper.sh status --json
bash scripts/start-auto-paper.sh stop --json

长期常驻用 user systemd service 作为唯一生命周期 owner:

bash scripts/start-auto-paper.sh systemd-install --json
systemctl --user status tradecat-auto-paper.service

systemd-install 会禁用旧版 tradecat-auto-paper.timer,停止已有手动 _run, 再启用长驻 tradecat-auto-paper.service;不要让 timer _cycle 和手动 _run 同时写 .runtime/auto-paper/

本地 Web 监控页面:

python3 scripts/serve-auto-paper-monitor.py --host 127.0.0.1 --port 8765

页面只读展示本地 paper/watch、审计日志、账本、输入信号、Agent decision text 和依赖链健康, 不会启动 auto-paper loop,不接触真实账户。

常用命令

# 安装
python3 -m pip install -c constraints.txt -e ".[dev]"
make install-dev

# 只读数据源
python3 scripts/request.py --datasets --format json
python3 scripts/request.py signal_flow --format json --limit 5
python3 scripts/request.py anomaly_panel --format json --limit 0
bash scripts/binance-public-snapshot.sh --symbols BTCUSDT,ETHUSDT --json

# 测试、lint、format
PYTHONPATH=src python3 -m pytest -q
PYTHONPATH=src ruff check src tests
PYTHONPATH=src ruff format --check src tests scripts

# 完整本地门禁
bash scripts/agent-smoke.sh
bash scripts/verify.sh
bash scripts/validate-skill.sh --strict
bash scripts/security-scan.sh
bash scripts/supply-chain-audit.sh
python3 scripts/validate_dependency_policy.py
python3 scripts/validate_testing_ci_contract.py
python3 scripts/ops-audit.py --json
git diff --check

# 构建 wheel,来源于 CI
python3 -m pip wheel . --no-deps -w /tmp/tradecat-wheel

Makefile 还提供 make testmake lintmake formatmake format-checkmake test-ci-contractmake securitymake supply-chainmake agent-smokemake verifymake ops-auditmake paper-statusmake paper-startmake paper-stopmake monitor

CI/CD

CI 文件为 .github/workflows/ci.yml,触发条件包括 pushpull_requestworkflow_dispatch 和每日定时任务。CI 执行:

  • 最小权限 permissions: contents: read、同 ref 并发取消、job timeout、checkout 不持久化凭证。
  • Skill strict validation。
  • secret scan。
  • 安装 python -m pip install -c constraints.txt -e ".[dev]"
  • public boundary guard。
  • dependency policy。
  • testing/CI contract validation,机器清单位于 resources/test_ci_matrix.json,设计说明见 docs/testing-ci-strategy.md
  • ruff check src tests
  • ruff format --check src tests scripts
  • PYTHONPATH=src pytest -q
  • data contract validators。
  • supply-chain audit。
  • shell/Python syntax check。
  • wheel package data check。
  • agent readiness smoke。

CI 只证明代码、契约、测试和安全门禁通过;它不证明本机 auto-paper loop 正在运行。

本仓库没有 Dockerfile、docker-compose、K8s manifest 或 Helm chart;当前部署形态只有本地 public-readonly + paper/watch。TODO: 如未来新增容器或平台部署,需要同步更新 docs/deployment.md、README 和 AGENTS。

Troubleshooting / FAQ

  • ModuleNotFoundError: tradecat_auto:先安装 python3 -m pip install -c constraints.txt -e ".[dev]",或运行命令时设置 PYTHONPATH=src
  • ruffpytest 不存在:运行 bash scripts/bootstrap-dev.sh 或安装开发依赖。
  • 在线表格读取失败或 HTTP 404:先运行 python3 scripts/request.py --datasets --format json 确认 dataset;如网络受限,设置 HTTP_PROXY / HTTPS_PROXY
  • paper_service_not_running:运行 bash scripts/start-auto-paper.sh status --json 查看状态,需要常驻时运行 bash scripts/start-auto-paper.sh start --json
  • heartbeat_stale 但 pid 仍在:说明单轮 public-readonly/paper cycle 可能卡住;TRADECAT_AUTO_PAPER_CYCLE_TIMEOUT_SECONDS 会限制单轮最长时间,必要时运行 bash scripts/start-auto-paper.sh heal --json
  • paper-report 显示 0 仓但服务在交易:默认账本应为 .runtime/auto-paper/paper_ledger.json;用 bash scripts/run-tradecat.sh latest-decision --jsonbash scripts/run-tradecat.sh health-report --json 核对常驻服务事实源。
  • agent_sizing_required 在重启后出现:这是默认 fail-closed 手动模式;需要 Agent/Hermes 显式写入 thesis,或明确设置 TRADECAT_AUTO_PAPER_AUTONOMY_ENABLED=1 / TRADECAT_AUTO_PAPER_AUTONOMY_PROFILE_PATH
  • 想审计是否有旧服务、进程、端口或 cron 残留:运行 python3 scripts/ops-audit.py --json
  • 想完全改 paper 自治参数:设置 TRADECAT_AUTO_PAPER_AUTONOMY_*,并显式打开 TRADECAT_AUTO_PAPER_AUTONOMY_ENABLED=1,或显式传入 TRADECAT_AUTO_PAPER_AGENT_TRADE_THESIS_PATH / TRADECAT_AUTO_PAPER_AUTONOMY_PROFILE_PATH
  • 监控端口冲突:使用 python3 scripts/serve-auto-paper-monitor.py --host 127.0.0.1 --port <free-port>

贡献指南

  • 贡献流程:CONTRIBUTING.md
  • 变更记录:CHANGELOG.md
  • 架构说明:docs/ARCHITECTURE.md
  • 配置说明:docs/configuration.md
  • 部署与运维:docs/deployment.md
  • 运维 runbook:docs/operations-runbook.md
  • 发布流程:docs/release.md

.github/pull_request_template.md.github/CODEOWNERS.github/dependabot.yml 提供 PR、review owner 与依赖更新入口。平台级分支保护需要在 GitHub 仓库设置中启用。