Skip to content

About

TrendCast Pro - LightGBM 多周期 A股/期货/外汇涨跌方向预测引擎(特征工程 + 自适应学习 + FastAPI 服务)

Resources

Code of conduct

Contributing

Security policy

Stars

4 stars

Watchers

0 watching

Forks

Latest commit

 

History

178 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

升级打怪开源社区 首批开放共建项目 · 点击组织首页右上角 Follow,及时获取新项目与共建活动

📈 TrendCast Pro

多市场方向预测 · 只读观测信号源

License Python Stars Forks

如果 TrendCast Pro 对你的研究有帮助,请点一个 Star。你的 Star 会帮助更多研究者发现它。


Version Status Signal CLI
LightGBM sklearn pandas numpy FastAPI ONNX
A stock US stock US futures US options forex Wind
ruff pytest Tests Leak fix Reproducible

Issues Last Commit Repo Size Commit Activity Top Language Contributors


TrendCast Pro 是什么

TrendCast Pro 是一套面向 A 股 / 美股 / 期货 / 期权 / 外汇的多周期方向预测与只读观测信号源。

它用 LightGBM 对 5 / 10 / 20 日涨跌方向输出概率,配上置信度门槛门禁和 ATR 风控建议,再把结果以「决策源契约」的形态交给下游。整个链路可离线复算:冻结快照入了库,clone 下来不联网也能复现关键读数。

TrendCast Pro 不是高胜率赚钱机器,也不是把行情数据接上模型就出信号的黑盒。

它要做的,是当一个可审计的信号研究工具:所有信号出口都带 position_role=observer、affects_gate=false,只读观测,不产出仓位、不改门禁。

为什么做它

做量化信号研究的人,常遇到的不是「没有模型」,而是:

  • 训练时目标列悄悄漏进特征,回测好看,上线即崩;
  • 模型退化解(近乎恒定方向输出),准确率数字漂亮却不携带信息;
  • 想说「这套信号没用」,却没有一个能复算、能审计的记分板来支撑这个判断;
  • 信号出口直接串到下单,研究工具和交易执行没有契约隔离;
  • 每换一个数据源就要改一遍采集代码,多市场能力靠手抄硬编码;
  • 评估用了前视数据,结论看着成立,其实是未来函数。

TrendCast Pro 把这些问题变成一条可执行、可核验的预测—门禁—交付管线。

核心能力

1. 三周期方向概率

LightGBM 对 5 / 10 / 20 日涨跌方向分别建模,输出概率 + AUC + 置信度,再过置信度门槛门禁和 ATR 风控建议。三个周期独立评估,不互相污染结论。

2. 多市场数据源(零新依赖覆盖七类资产)

支持 A 股 / 美股 / 国内期货 / 海外期货 / 外汇 / 美股期权 / 美股基本面。股票 / 期货 / 基本面复用 akshare 免费档,仅期权引入 fdnpy。split_symbol 按后缀自动路由,collector 无需改代码:

后缀 市场 数据源 示例 费用
.SH / .SZ A 股 / ETF akshare / 腾讯 600519.SH 免费
.SHF / .DCE / .CZC / .INE 国内期货 akshare RB.SHF 免费
.FXCM 外汇 akshare(新浪通道) USDCNH.FXCM 免费
.US 美股股票 akshare stock_us_daily AAPL.US 免费
.GLB 海外期货 akshare futures_foreign_hist CL.GLB 免费

数据源逐级降级、永不崩溃:

Wind MCP (P0)  ──▶  akshare (P1)  ──▶  腾讯财经 (P1)  ──▶  模拟数据 (P6)
   需 WIND_API_KEY     免费 · 覆盖期货/外汇/美股   免费 · 前复权      仅链路验证 · 不落盘

akshare 是免费档中唯一覆盖国内期货、外汇与美股的通道;模拟数据绝不写入缓存——不会污染真实历史。

3. 决策源契约(只读隔离)

把「方向字符串 + 概率」的换算收到生产方一侧,下游不必自己重复实现。结构性纪律:position_role = observer、affects_gate = false、advisory_only = true。

curl "http://localhost:8800/api/v1/decision/feed?symbols=300308.SZ,510300.SH"
python main.py decision-feed --stdout    # 离线导出同一份契约

4. 工程纪律(每条都可核验)

纪律 实现 怎么验
防目标泄漏 get_feature_columns 强制排除 target_* 列 tests/test_label_leak_guard.py
特征契约对齐 训练端持久化 feature_cols,推理端按名称+顺序校验,缺列 fail-close tests/test_predictor_feature_alignment.py
模拟数据不落盘 兜底数据只用于链路验证,不写缓存 src/data/collector.py
门禁 fail-close 门禁不可用 / 数据缺失 / 未达标 → 一律不放行,信号保持只读 src/trading/gate.py
无前视评估 时序切分 + CPCV 净化交叉验证(purge/embargo) python main.py overfit-audit

5. 离线复算

data/raw/*.frozen.20260917.csv 与 reports/*.frozen.*.json 已入库,clone 后离线即可复现关键读数。edge-check 用「相对全池等权的净超额」作记分板,结论可被任何人独立复跑验证。

最硬的结论:这套信号没有可用的决策增量

最新本地复跑(2026-09-29 · 真实行情免费档 · 目标泄漏已修复) 数据口径:38 只标的(26 A股/ETF + 10 期货 + 2 外汇),2020-01-01 起,时序三段切分。

模型周期 准确率 AUC 评级
🟦 短期 5d 49.19% 0.5143 接近随机
🟨 中期 10d 47.70% 0.5391 低于随机
🟪 长期 20d 46.99% 0.5435 低于随机

⚠️ 召回率 ≈ 1.0 = 退化解(近乎恒定方向输出),准确率不携带信息;判断区分度看 AUC。

九轮独立排查(2026-09-17 ~ 09-19,详见 cairn/)结论一致:

  • 净超额三周期全部为负或不显著(5d t −2.12 / 10d t −2.79 / 20d t −2.27);随机抽同数量标的,5d 有 7.5% 概率不亚于信号
  • 状态分层无正向状态;八个特征子集无一转正;风险预警退路也堵死(朴素波动基线 IC 0.690.75,模型增量仅 0.030.09)
  • 唯一方向为正的线索(rank 截面排序 OOS +12.7pp)DSR 0.099 仍不足 ⇒ 维持 report_only

✅ 定位结论:本项目的正确用法是「可审计的信号研究工具 / 只读观测源」,不是「高胜率赚钱机器」。

适合谁

  • 想研究 A 股多周期方向概率,又怕目标泄漏的人;
  • 需要一个能复算、能审计的记分板来判定「信号到底有没有 edge」的人;
  • 要把信号以只读契约喂给下游交易系统,又不想让研究工具直接下单的人;
  • 做多市场(A 股 / 美股 / 期货 / 外汇 / 期权)因子研究,不想每个市场重写采集代码的人;
  • 想要 fail-close 门禁、无前视评估、冻结快照复算的工程纪律样本的人。

与替代方案的区别

方案 优势 常见限制
通用预测框架 灵活、模型多 不防目标泄漏,无门禁契约,多市场要自己接
付费信号源 现成可用 黑盒不可审计,无法复算,信号直接串下单
自训黑盒模型 可定制 退化解难发现,准确率数字漂亮却不携带信息
端到端交易系统 信号即下单 研究与执行无隔离,结论不可独立验证
TrendCast Pro 多市场只读、防泄漏、fail-close 门禁、离线复算、如实报 edge 信号无正向决策增量,是研究工具不是赚钱机器

30 秒上手

不需要任何 API Key —— 默认走免费数据源(akshare / 腾讯财经);有 Wind 终端时才用得上 Key。

# 0 · 获取代码
git clone https://github.com/shengjidaguai-china/Financial_Modeling.git
cd Financial_Modeling

# 1 · 装依赖(核心四件套:akshare / pandas / numpy / pyarrow,无需任何 Key)
python -m venv .venv
.venv\Scripts\activate           # Linux / macOS: source .venv/bin/activate
pip install -r requirements.txt
pip install lightgbm             # 训练/评估必需(可选依赖)

# 2 · 训练(采集 → 特征 → 训练 → 评估,自动完成)
python main.py train             # 首次约 2~6 分钟(采集占大头,需联网)

# 3 · 预测 / 起服务
python main.py predict 300308.SZ --horizon all    # A 股 · 全部周期
python main.py predict AAPL.US  --horizon all    # 美股 · 与 A 股同口径
python main.py serve                              # REST API → http://localhost:8800

💡 可选依赖按需安装(不装则对应命令明确报错,不静默跳过): lightgbm(训练/评估)· optuna(tune 超参搜索)· hmmlearn(regime 状态分层)· mapie(conformal-interval)· fdnpy(美股期权,需 FDN_API_KEY)。详见 requirements.txt。

美股期权与基本面

akshare 无美股期权,故引入 fdnpy(FinancialData.Net SDK)补齐期权链 / 价格 / Greeks。需 Standard 订阅档 Key;未配置时优雅降级(返回 None,不阻断主链路)。

pip install fdnpy
export FDN_API_KEY=your_key          # Windows: set FDN_API_KEY=your_key
from src.data.fdn_client import FdnClient
fdn = FdnClient(config)
chain  = fdn.fetch_option_chain("MSFT")                  # 期权链
prices = fdn.fetch_option_prices("MSFT260123C00455000")  # 合约日K
greeks = fdn.fetch_option_greeks("MSFT260123C00455000")  # Greeks

美股基本面走 akshare 免费档,无需 Key:

from src.data.akshare_client import AkshareClient
fin = AkshareClient(config).fetch_us_fundamentals("AAPL.US")   # 财务报表,作额外因子源

期权为非 OHLCV 资产类别,不进 collector 日K优先级链,由调用方按需独立取数。 TradingView 未接入:其无官方数据 API,第三方 tvDatafeed 逆向私有 WebSocket 违反 ToS 且无期权支持。

接口与交付

REST API(FastAPI · 默认端口 8800)

方法 端点 说明
GET /health 健康检查
GET /api/v1/predict/{symbol} 单只预测(?horizon=)
POST /api/v1/predict/batch 批量预测
GET /api/v1/portfolio/summary 组合级摘要
GET /api/v1/decision/feed 决策源契约:净看涨概率 / 综合分 / 采纳建议
GET /api/v1/audit/report 审计报告 / 命中率统计

TradingView 交付(tv-export)

python main.py tv-export                    # 全池 → signals/<symbol>.png + pine/trendcast/<symbol>.json
python main.py tv-export --symbols 510300.SH

像素即契约:卡片上的每个数值与决策源契约逐字段相等(守卫 tests/test_tv_export.py)。

常用命令(共 63 个,此处只列常用)

命令 说明
train / predict <symbol> / serve 训练流水线 / 单只预测 / API 服务
batch <symbols...> / daily-report / weekly-report 批量预测 / 日 / 周度报告
decision-feed / tv-export 决策源契约导出 / TradingView 交付
edge-check / ablation / risk-signal 基准相对决策增量 / 特征消融 / 风险预测力检验
overfit-audit / regime / conformal-interval 过拟合审计 / HMM 状态分层 / 保形预测区间
gate / risk-advice / audit 策略门禁 / 风控建议 / 预测审计(命中率回溯)
macro / monitor / ic 宏观数据 / 监控报表 / IC 门禁评估
trials / release-check 评估试验登记 / 发布态健康检查

运行 python main.py --help 查看全部 63 个命令与参数。

配置要点

默认加载 configs/config_pro.yaml(存在时优先),可用 --config <path> 覆盖。

data:
  source: ["wind", "akshare", "tencent", "simulation"]   # 按序回退
  start_date: "2020-01-01"
  markets:
    stock:     {enabled: true}    # 26 只 A股/ETF
    futures:   {enabled: true}    # 10 只国内期货主连(RB.SHF / CU.SHF / SC.INE …)
    forex:     {enabled: true}    # 2 只外汇(USDCNH.FXCM / USDCNY.FXCM)
    us_stock:   {enabled: false}  # 美股日K(AAPL.US / MSFT.US / NVDA.US / TSLA.US / AMZN.US)
    us_futures: {enabled: false}  # 海外期货(CL.GLB / GC.GLB / SI.GLB / ZSD.GLB / ZC.GLB)

model:
  type: "lightgbm"
  factors: {enabled: true, families: [trend, momentum, volatility, volume, reversal, sentiment, macro]}

training:
  adaptive_learning: {enabled: true, drift_threshold: 0.05, auto_retrain: true}

改标的池:直接编辑 configs/config_pro.yaml 的 markets.*.symbols,无需改代码。 美股期权不进 markets 配置(非 OHLCV),由 FdnClient 独立取数。

项目结构

.
├── configs/{config.yaml, config_pro.yaml}     # 默认 / 生产配置
├── data/{raw, processed, news}/               # 行情缓存 / 特征集 / 新闻
├── models/                                    # 训练产物(pkl)+ exported/(ONNX)
├── src/
│   ├── data/         # 采集(akshare/tencent/wind/fdn) / 指标 / 质量门控
│   ├── train/        # LightGBM 训练器 / 自适应学习
│   ├── eval/         # 评估与研究方法层(30+ 专题模块)
│   ├── inference/    # 推理引擎(缓存刷新 + 特征对齐)
│   ├── api/          # FastAPI 服务(含契约端点)
│   ├── trading/      # 信号 / 风控 / 订单 / 回测 / 门禁
│   └── {export, report, scheduler, audit, notification, utils}/
├── tests/           # pytest(78 个文件)
├── cairn/           # Project Cairn 知识层(ROADMAP / LOG / 专题结论)
├── 00_kickoff/      # 各阶段交付结论与决策材料
├── main.py          # CLI 入口(63 个子命令)
└── requirements.txt

测试与复算

python -m pytest tests -q                    # 全量测试(78 文件、1500+ 用例)
python main.py edge-check                    # 离线复算:基准相对净超额

本机基线(2026-09-29,Python 3.11 + lightgbm 4.7.0):1542 passed / 10 failed / 8 skipped, 10 条失败全部为环境缺少可选依赖所致。 🧊 data/raw/*.frozen.20260917.csv 与 reports/*.frozen.*.json 已入库,clone 后离线即可复现关键读数。

已知限制

  • 信号无正向 edge(最硬结论):净超额三周期为负或不显著,状态分层无正向状态,消融无子集转正
  • 风险预警退路同样不成立:朴素 trailing-vol 基线 IC 0.690.75,模型增量仅 0.030.09
  • 模型存在退化倾向:召回率 ≈ 1.0(近乎恒定方向输出)⇒ 准确率不携带信息
  • 样本长度不足:MinTRL 21738382 天 ≫ 现有 1569 天;DSR 0.080.24
  • 数据源依赖:美股股票/海外期货/基本面走 akshare 免费档;美股期权需 fdnpy + FDN_API_KEY(缺 Key 优雅降级);Wind 需终端与 Key(可选)
  • TimesFM / Kronos 路径尚未接入主推理链路(后者为第三方源码快照,仅实验底座)

许可证与免责声明

本项目采用 禁止商业用途许可协议(Non-Commercial License),详见 LICENSE。

条款
✅ 允许 — 学习、研究、教学、学术、非商业内部评估
❌ 禁止 — 一切商业用途(含商业产品/服务、营利性量化交易、信号售卖)
🔒 商用授权 — 须事先取得版权方书面同意

本软件按「现状」(AS IS)提供,不构成任何投资建议。使用者自行承担一切投资风险与合规责任。 第三方依赖登记见 docs/THIRD_PARTY.md。



Copyright © 2026 yuppiez328(安然) — 保留所有权利

用数据说话 · 用量化决策 · 用纪律执行


⭐ Star 是对独立开发最直接的支持

给 TrendCast Pro 一个 Star · 提交问题 · 查看代码


Made with Python

About

TrendCast Pro - LightGBM 多周期 A股/期货/外汇涨跌方向预测引擎(特征工程 + 自适应学习 + FastAPI 服务)

Resources

Code of conduct

Contributing

Security policy

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages