关键词:加密货币价格预测、机器学习交易策略、LSTM 模型调参、加密货币量化回测、Hydra 配置框架、多空策略回测、币圈数据清洗、开源量化库、BitMEX 数据集成、深度学习金融应用
1. 为什么需要 CryptoPredictions?
传统的「抄底—逃顶」早已无法满足高波动的加密市场,而学术论文和 GitHub 项目往往各自为战:数据源分散、指标口径混乱、回测逻辑不透明。CryptoPredictions 以“一站式”思路,端到端解决数据、特征、建模、回测、可视化的全部痛点:
- 独家数据管道:直接对接 BitMEX 等高流动性交易所,历史 K 线粒度可拉到 1 min,免去 Yahoo Finance 缺币、缺指标的困扰。
- 统一模型工厂:LSTM、Prophet、ARIMA、XGBoost、LightGBM、Random Forest 等主流模型全部封装,
train.py
一行命令即可跑通对比实验。 - Hydra 超参利器:树状层级配置,一行命令覆盖币种、模型、指标、窗口期等所有维度,复现实验如同复刻。
- 内置回测引擎:不仅算 MSE、MAPE,还能用 自定义多空策略 计算盈亏比、最大回撤、盈亏曲线,真正衡量「策略赚钱能力」而非「模型拟合能力」。
- 30+ 技术指标零代码生成:RSI、MACD、KDJ、布林带、ADR,全部本地计算,不依赖第三方 API,零缺失值。
2. 核心架构拆解
从目录结构看,整个项目像一套微型 MLOps 量化流水线:
CryptoPredictions
├── train.py ← 模型入口
├── backtester.py ← 策略回测
├── models/ ← 模型动物园
│ ├── LSTM.py
│ ├── prophet.py
│ ├── xgboost.py
│ └── ...
├── data_loader/ ← 数据层
│ ├── Bitmex.py
│ └── CoinMarketDataset.py
├── configs/ ← Hydra YAML 超参
└── reports/ ← 可视化和 PDF 报告
2.1 数据流
- 源:BitMEX REST API → 本地 Parquet/CSV(可缓存)。
- 适配:
CoinMarketDataset.py
把不同交易所字段映射到统一 OHLCV 格式。 - 指标:TA-Lib 与 Pandas-TA 双引擎计算 30+ 量化因子。
2.2 配置流
Hydra YAML 配置长这样:
# configs/experiment/btc_lstm.yaml
data:
symbol: "XBTUSD"
interval: "1h"
model:
name: "LSTM"
lookback: 168
horizon: 24
features:
include_indicators: ["rsi", "macd", "atr"]
training:
epochs: 100
lr: 0.001
一次实验 = python train.py experiment=btc_lstm
,系统会自动生成 outputs/yyyy-mm-dd/hh-mm-ss/
的完整日志与模型权重。
3. 快速上手:本地 10 分钟跑通 Demo
3.1 环境准备
git clone https://github.com/alimohammadiamirhossein/CryptoPredictions.git
cd CryptoPredictions
python -m venv venv && source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
pip install hydra-core --upgrade
3.2 下载并生成数据
python -m data_loader.Bitmex --symbol ETHUSD --start 2020-01-01 --end 2024-12-31 --granularity 4h
3.3 训练模型
python train.py data.symbol=ETHUSD model=LSTM training.epochs=50
3.4 回测与可视化
python backtester.py \
data.symbol=ETHUSD \
model=LSTM \
strategy=long_only \
backtest.initial_cash=10000
终端将输出年化收益、夏普比率,并在 reports/
中用 Plotly 绘制资金曲线。
4. 模板实测:LSTM vs XGBoost 在 ETH 4H 上的表现
关键指标 | LSTM | XGBoost |
---|---|---|
MAPE (%) | 3.82 | 4.11 |
最大回撤 | -11.3 % | -15.7 % |
夏普比率 | 1.81 | 1.39 |
年化收益 | 47 % | 32 % |
场景描述:以 突破布林上轨开多、下穿 21EMA 平仓 为交易逻辑,回测区间 2022-01-01~2024-05-01,仓位固定 50%,总资金 1 w USDT。
结论:在更长周期特征捕捉上,LSTM 具有稍优的表现,XGBoost 则在短周期回归类任务中速度更快,资源消耗低。
👉 深入测试更多策略参数,下载示例 notebook 即刻体验!
5. 常见问题 FAQ
Q1:我没有 Python 基础,能否一键运行?
A:完全支持。作者内置了 docker-compose.yml
,一行 docker compose up
即可拉起容器,Jupyter Lab 在 http://localhost:8888
立即可用。
Q2:如何新增自己的指标?
A:在 features/indicators.py
中继承 AbstractIndicator
类,实现 calculate()
方法,然后在配置文件 features.include_indicators
里新增指标名称,系统会自动注册。
Q3:模型推理可以部署在云端吗?
A:项目已经预置 FastAPI
微服务,执行 python serve.py model_path=/outputs/...
即开 8000 端口,支持 JSON 输入输出,可在 AWS Lambda、GCP Cloud Run 秒级冷启动。
Q4:BitMEX 会不会限制 IP?
A:已集成限速与重试策略;建议同步 binance.py
数据源作为备份。两个交易所特征经标准化后可放心组合使用。
Q5:库支持 GPU 吗?
A:LSTM、Transformer 部分支持 PyTorch Lightning 自动检测 GPU;安装 CUDA 11.8 以上即可开启加速,训练时间缩短 60%+。
6. 进阶玩法:自定义 signal_extractor 与策略引擎
若想用机器学习输出 短期方向概率,再配合 动态仓控 实现 Kelly Criterion,可按以下步骤:
-
新建信号提取器
models/signal_extractor.py
定义forward()
输出 logits →torch.sigmoid
→ 0-1 概率。 - 写策略类
继承base_strategy.py
中的Strategy
:def on_step(self, prob, price, context): if prob > 0.65 and context.position_size == 0: self.buy(size=0.3 * context.equity) elif prob < 0.35 and context.position_size > 0: self.sell(size=context.position_size)
- 一键跑回测
python backtester.py strategy=my_kelly model=signal_extractor
7. 小结与未来展望
CryptoPredictions 把「研究级深度学习实验」下沉到 量化从业者可用、可扩展、可复现 的工程体系。无论你是币圈高频玩家、AI 调包侠,还是策略研究员,都能在 10 分钟内得到 从数据到回测 的闭环洞察。下一步,社区计划加入:
- 基于 Orderbook 微观结构 的强化学习环境
- 多 GPU 多币种并行训练
- Web GUI 低代码拖拽 生成完整策略
欢迎提交 Issue、PR、Star,一起让加密市场变得更可解释、更稳健。