Files
cbpred/README.md
2026-08-24 19:10:32 +08:00

119 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# cbpred
`cbpred` 是一个面向 Binance U 本位 USDT 永续合约的统一 8H K 线回撤预测管线。数据由 [banbot](../banbot) 下载,模型只使用 OHLCV,不使用资金费率、盘口、持仓量或外部行情。
当前正式模型只有一个:[`artifacts/v1/model.joblib`](artifacts/v1/model.joblib)。它由最近 18 根 8H K 线预测未来 6 根 8H K 线的稳健低点收益,并输出点预测以及用于区间参考的 q20/q80 结果。根目录不放置历史实验模型;历史实验说明保留在 [`docs/v0_0823.md`](docs/v0_0823.md) 和 [`docs/v1_0823.md`](docs/v1_0823.md)。
## TODO
增加1D级别的模型训练和预测
## 快速开始
运行环境需要 Python 3、Go、可访问的 banbot 源码和 banbot 配置中的 QuestDB。默认路径是:
```text
/home/ctyun/ban/banbot
/home/ctyun/ban/banbot/biz/config.yml
```
安装项目及依赖:
```bash
python3 -m venv .venv
.venv/bin/pip install -e .
```
一键更新最新 K 线、导出完整 8H 数据并生成全部品种预测:
```bash
./scripts/update_and_predict.sh
```
结果默认写入:
```text
predictions/latest_v1/predictions.csv
predictions/latest_v1/report.json
```
查看脚本参数:
```bash
./scripts/update_and_predict.sh --help
```
完整的数据流、参数和目录说明见 [`docs/usage.md`](docs/usage.md)。
## 手动流程
如果需要单独准备数据和训练模型:
```bash
# 下载 1H K 线,导出并整理为 8H CSV
.venv/bin/python -m cbpred prepare \
--banbot-config /home/ctyun/ban/banbot/biz/config.yml \
--out-dir data
# 使用 data/ 训练并覆盖 artifacts/v1 下的正式模型和报告
.venv/bin/python -m cbpred train \
--data-dir data \
--artifact-dir artifacts/v1
# 对单个已导出的 8H CSV 使用最新锚点预测
.venv/bin/python -m cbpred predict \
--artifact artifacts/v1/model.joblib \
--csv data/raw/123_BTC_USDT_USDT.csv \
--symbol BTC/USDT:USDT
```
也可以用 `run` 完成 `prepare + train`:
```bash
.venv/bin/python -m cbpred run --out-dir data --artifact-dir artifacts/v1
```
如果数据已经由 banbot 更新完成,可在 `prepare` 中加入 `--skip-download`,只执行筛选、导出和整理。
## 预测 CSV
一键脚本生成的 CSV 固定只包含以下 10 列:
| 列 | 含义 |
| --------------------------- | ------------------------------------- |
| `rank` | 按 8H USDT 成交额从高到低的排名 |
| `symbol` | 合约符号 |
| `latest_bar_start_utc` | 最新完整 8H K 线的 UTC 起始时间 |
| `close` | 最新完整 8H K 线收盘价 |
| `quote_volume_usdt_8h` | 最新 8H 的 USDT 成交额 |
| `atr_rank_200_pct` | 当前 ATR 在过去 200 根 8H ATR 中的百分位,单位为 `%` |
| `drawdown_point_pct` | 点预测对应的回撤百分比 |
| `drawdown_cap_80pct_pct` | q80 对应的回撤百分比上界参考 |
| `price_level_reached_80pct` | q20 对应的价格水平参考 |
| `price_level_cap_80pct` | q80 对应的价格水平参考 |
回撤列是收益的相反数:预测收益为负时表示价格可能低于当前收盘;预测收益为正时,回撤列可能为负,表示未来稳健低点仍高于当前收盘。模型不满足资格条件时,预测字段为空,不应把空值当作零回撤。
## 当前模型
当前模型为 `compact6` 特征版本,使用 146 个特征和 ExtraTrees 点模型,同时使用两个 HistGradientBoosting 分位数模型生成 q20/q80。测试集结果和特征定义见 [`docs/model.md`](docs/model.md),训练产物报告见 [`artifacts/v1/report.md`](artifacts/v1/report.md)。
## 测试
运行标准库回归测试:
```bash
.venv/bin/python -m unittest discover -q
```
项目文档按用途分为:
- [`docs/usage.md`](docs/usage.md):安装、数据流、命令、目录和故障排查。
- [`docs/model.md`](docs/model.md):目标定义、特征、训练协议、指标和限制。
- [`docs/v0_0823.md`](docs/v0_0823.md)、[`docs/v1_0823.md`](docs/v1_0823.md):历史实验记录,不是当前运行入口。