QUANT TRADING · v0.1

个人版 AI 美股量化 交易栈

借鉴公开的幻方量化(High-Flyer)分层架构 — 数据、信号、回测、风控四层堆起来。我们复刻不了几百号人 + 自建超算 + 十年数据, 但能把同样的架构骨架缩到一个美股交易者能用的规模。

入门 · 一句话讲清楚

什么是因子(Factor)?

因子 = 你认为能解释或预测股价未来涨跌的变量。 机器学习里叫 feature,量化里叫 factor,是一个东西。给每只股票算一个因子分数,把分数最高的一批拿出来做多、最低的一批避开,这就是横截面量化最朴素的玩法。

举个最简单的例子 · 20日动量因子

// 一个真实因子,就这么简单:
const momentum_20d = close[今] / close[20天前] - 1;

// 横截面打分:
universe.forEach(t => t.score = z_score(t.momentum_20d));

// 排前 10% 做多,排后 10% 做空。

这个因子假设「过去 20 天涨得越猛,未来 5 天越可能继续涨」。我们把它跑遍全 universe, 打分排名,然后用历史数据回测一下:这个假设过去十年成立过吗?最大回撤多少? — 这就是量化研究的最小闭环。

常见因子家族

  • 动量 Momentum涨得猛不猛?延续性强不强?
  • 价值 Value便不便宜?(1/PE、P/B)
  • 质量 Quality盈利能力好不好?(ROE、毛利率)
  • 波动率 Volatility日内/周内波动大不大?
  • 流动性 Liquidity成交活不活跃?滑点高不高?
  • 资金流 Flow近期成交量、订单流有没有异动?
  • 情绪 Sentiment新闻 / 社媒 / 期权对它怎么看?

顶级量化公司在做的事:找别人没发现的因子,或者比别人更快算出来。

系统架构 · 四层

数据 → 因子 → 回测 → 风控 / 执行

和真实系统化基金的形状一样。前三层全部跑在这个仓库里;最上面那层(broker 下单)复用 /trade 已有的 IBKR / Alpaca 接线。

① 数据层

Data Layer

已接入

幻方公开宣传累计 10PB+ 历史 + 另类数据。个人版起步够用就行:Yahoo 日线、SEC 13F/Form4、FRED 宏观,期权链已接 Polygon/Yahoo fallback。

  • Yahoo Finance 日 K(免费)
  • SEC EDGAR 13F + Form 4(已在 /market 接入)
  • FRED 宏观(利率、收益率曲线、CPI)
  • 期权链(Polygon / Yahoo fallback)

② 因子 / 信号层

Factor / Signal Layer

已接入

幻方走深度学习 + 多频策略矩阵,alpha 模型不公开。个人版要透明:动量、均值回归、趋势、波动、资金流、价值、质量 — 每个因子都能在代码里看到公式。

  • 动量(12-1月 / 3月 / 1月 / 60日上涨比例)
  • 均值回归(5日反向)
  • 趋势(SMA50/200 + 52周高位距离 + RSI)
  • 波动率(20日年化 + 20/60 扩张)
  • 资金流(log10 美元成交额 + 5/30 成交异动)
  • 价值(1/PE)+ 质量(净利润率,部分待接入)
  • 技术指标筛选(KDJ 低位金叉 station)
  • ML Long/Short 横截面收益 ranker

③ 回测层

Backtest Layer

已接入

没回测过就不能上实盘。Bar-by-bar 走查,无 look-ahead;手续费 + 滑点都建模;用 buy & hold 做基准对比。

  • 动量突破(price > SMA200 且 1月动量 > 0)
  • 趋势叠加(SMA20 > SMA50 > SMA200)
  • 波动目标趋势(年化 15% 目标波动)
  • RSI 均值回归(< 30 买入,> 55 平仓)
  • 买入持有(基准线)

④ 风控 / 执行层

Risk / Execution Layer

部分接入

散户最爱跳过、却最致命的一层。先把规则写死再聊执行;上实盘前先 paper trade。

  • 单票上限 10% 净值
  • 组合总仓 ≤ 100%(v1 不上杠杆)
  • 净值峰值 -15% 触发自动停手
  • 上实盘前先走 IBKR / Alpaca 模拟盘(沿用 /trade 现有接线)

因子总表 · 全部公开

系统里到底装了哪些因子

每个因子都有公式、方向、数据源、当前权重。 想换权重直接改 lib/quant/factors.ts 里的 QUANT_DEFAULT_WEIGHTS

动量4 个因子)

因子公式 / 定义方向权重状态

12-1月动量

momentum_12_1

close[-21] / close[-252] - 1高分看多+0.22

已接入

3月动量

momentum_3m

close[今] / close[63天前] - 1高分看多+0.12

已接入

1月动量

momentum_1m

close[今] / close[21天前] - 1高分看多+0.08

已接入

60日上涨比例

momentum_consistency_60

过去60交易日中收阳线的比例高分看多+0.08

已接入

均值回归1 个因子)

因子公式 / 定义方向权重状态

5日反向

meanReversion_5d

-(close[今] / close[5天前] - 1)高分看多+0.08

已接入

趋势3 个因子)

因子公式 / 定义方向权重状态

SMA50/200 趋势

trend_sma50_200

SMA50 / SMA200 - 1高分看多+0.16

已接入

52周高位距离

gap_from_52w_high

close[今] / max(close[过去252天])高分看多+0.06

已接入

RSI(14)

rsi14

14日相对强弱指标高分看空-0.04

已接入

波动率2 个因子)

因子公式 / 定义方向权重状态

20日年化波动

vol_realized_20

stdev(log returns, 20d) × √252高分看空-0.08

已接入

波动扩张 20/60

vol_zscore_20_60

vol_20d / vol_60d - 1高分看空-0.04

已接入

资金流2 个因子)

因子公式 / 定义方向权重状态

流动性 log10$V

liquidity_dollar_vol

log10(20日均成交额, 美元)高分看多+0.06

已接入

5/30 成交异动

volume_surge_5_30

5日均成交 / 30日均成交 - 1高分看多+0.08

已接入

价值1 个因子)

因子公式 / 定义方向权重状态

盈利收益率 1/PE

value_earningsYield

1 / trailingPE(仅正值)高分看多+0.08

已接入

质量1 个因子)

因子公式 / 定义方向权重状态

净利润率

quality_profitMargin

profitMargin (TTM)高分看多+0.04

数据待接入

技术栈对照

幻方在用什么 · 我们在用什么

幻方(公开信息)本仓库
算力自建萤火 GPU 集群(也喂 DeepSeek)单台 Node.js / Vercel runtime
数据10PB+ 历史 + 另类数据按需 Yahoo + SEC + FRED fetch
模型深度学习多频策略矩阵透明因子栈 + 规则策略
语言C++ / Python / CUDA纯 TypeScript,确定性 JS 数学
执行自营直连低延迟复用 /trade 的券商接线
频率高频 + 中频 + 低频混合只做日线 swing(1d–1mo)

老实写下来的约束

v1 故意限制了哪些事

  • 不上深度学习。 因子权重和策略规则全是常量,能在代码里看到公式。神经网络一上来就是黑盒,先把基础线打稳。
  • 不用未来数据。 每根 K 线只看自己之前的数据。回测前 200 根用来给 SMA200 暖机,不给 look-ahead bias 任何机会。
  • 手续费 + 滑点写死。 每笔成交都扣 5 bps + 5 bps。真实成本可能更低,但宁可保守。
  • 只做日线。 不做高频,不做盘口 — 那是机构和 HFT 吃散户的池子。守在日线池。
  • 先 paper 再实盘。 任何回测里看着能赚钱的策略,先模拟盘至少跑一个月,再聊真金白银。