升级打怪开源社区 首批开放共建项目 · 点击组织首页右上角 Follow,及时获取新项目与共建活动
TrendCast Pro 是一套面向 A 股 / 美股 / 期货 / 期权 / 外汇的多周期方向预测与只读观测信号源。
它用 LightGBM 对 5 / 10 / 20 日涨跌方向输出概率,配上置信度门槛门禁和 ATR 风控建议,再把结果以「决策源契约」的形态交给下游。整个链路可离线复算:冻结快照入了库,clone 下来不联网也能复现关键读数。
TrendCast Pro 不是高胜率赚钱机器,也不是把行情数据接上模型就出信号的黑盒。
它要做的,是当一个可审计的信号研究工具:所有信号出口都带
position_role=observer、affects_gate=false,只读观测,不产出仓位、不改门禁。
做量化信号研究的人,常遇到的不是「没有模型」,而是:
- 训练时目标列悄悄漏进特征,回测好看,上线即崩;
- 模型退化解(近乎恒定方向输出),准确率数字漂亮却不携带信息;
- 想说「这套信号没用」,却没有一个能复算、能审计的记分板来支撑这个判断;
- 信号出口直接串到下单,研究工具和交易执行没有契约隔离;
- 每换一个数据源就要改一遍采集代码,多市场能力靠手抄硬编码;
- 评估用了前视数据,结论看着成立,其实是未来函数。
TrendCast Pro 把这些问题变成一条可执行、可核验的预测—门禁—交付管线。
LightGBM 对 5 / 10 / 20 日涨跌方向分别建模,输出概率 + AUC + 置信度,再过置信度门槛门禁和 ATR 风控建议。三个周期独立评估,不互相污染结论。
支持 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 是免费档中唯一覆盖国内期货、外汇与美股的通道;模拟数据绝不写入缓存——不会污染真实历史。
把「方向字符串 + 概率」的换算收到生产方一侧,下游不必自己重复实现。结构性纪律: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 # 离线导出同一份契约| 纪律 | 实现 | 怎么验 |
|---|---|---|
| 防目标泄漏 | 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 |
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.69
0.75,模型增量仅 0.030.09) - 唯一方向为正的线索(rank 截面排序 OOS +12.7pp)DSR 0.099 仍不足 ⇒ 维持
report_only
✅ 定位结论:本项目的正确用法是「可审计的信号研究工具 / 只读观测源」,不是「高胜率赚钱机器」。
- 想研究 A 股多周期方向概率,又怕目标泄漏的人;
- 需要一个能复算、能审计的记分板来判定「信号到底有没有 edge」的人;
- 要把信号以只读契约喂给下游交易系统,又不想让研究工具直接下单的人;
- 做多市场(A 股 / 美股 / 期货 / 外汇 / 期权)因子研究,不想每个市场重写采集代码的人;
- 想要 fail-close 门禁、无前视评估、冻结快照复算的工程纪律样本的人。
| 方案 | 优势 | 常见限制 |
|---|---|---|
| 通用预测框架 | 灵活、模型多 | 不防目标泄漏,无门禁契约,多市场要自己接 |
| 付费信号源 | 现成可用 | 黑盒不可审计,无法复算,信号直接串下单 |
| 自训黑盒模型 | 可定制 | 退化解难发现,准确率数字漂亮却不携带信息 |
| 端到端交易系统 | 信号即下单 | 研究与执行无隔离,结论不可独立验证 |
| TrendCast Pro | 多市场只读、防泄漏、fail-close 门禁、离线复算、如实报 edge | 信号无正向决策增量,是研究工具不是赚钱机器 |
不需要任何 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_keyfrom 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 且无期权支持。
| 方法 | 端点 | 说明 |
|---|---|---|
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 |
审计报告 / 命中率统计 |
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)。
| 命令 | 说明 |
|---|---|
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.69
0.75,模型增量仅 0.030.09 - 模型存在退化倾向:召回率 ≈ 1.0(近乎恒定方向输出)⇒ 准确率不携带信息
- 样本长度不足:MinTRL 2173
8382 天 ≫ 现有 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(安然) — 保留所有权利
用数据说话 · 用量化决策 · 用纪律执行
给 TrendCast Pro 一个 Star · 提交问题 · 查看代码