Files
wiki/quant/us-stock-trading-evaluation.md
T

249 lines
20 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.
# 美股交易方案评估
评估把现有 `MultiAssetChannelBreakoutV5`(ATR 通道突破)策略从加密货币永续合约迁移到美股交易的可行路径。
核心诉求:**免佣金、免费 API、免费实时数据、对中国用户友好、聚焦策略不写框架**。
---
## 1. 为什么 freqtrade 不能直接做美股
freqtrade 是专为加密货币交易所设计的框架,无法交易美股,原因在框架边界:
- **交易所层只接 CCXT**`freqtrade/exchange/exchange.py` 启动时硬校验
`raise OperationalException(f"Exchange {name} is not supported by ccxt")`,不在 CCXT 清单里的券商注册不了。
Robinhood / Schwab / Alpaca / Futu / IBKR 均**不在 CCXT**(已核实 `ccxt/__init__.py` grep 全空)。
- **标的命名是加密合约对**`BTC/USDT:USDT` 这种 `BASE/QUOTE:SETTLE` 格式,股票代码(AAPL)不匹配。
- **数据层假设 7×24 连续行情**:K 线下载、回填、心跳按加密市场 24h 设计,美股盘前盘后/收盘/涨跌停/拆股分红均无处理逻辑。
- **下单语义是加密衍生品**`futures`/`margin`/`isolated` 是永续合约概念,美股无对应。
策略逻辑(ATR/SMA/ADX/通道突破/分段止损)本身通用,可迁移到美股框架,载体不能是 freqtrade。
---
## 2. 候选券商对比
基准:**盈透 IBKR**(已有账户)——API 成熟、全球开户、`ib_async` 维护活跃;但**收佣金**Tiered ~$0.0035/股)、**实时行情按交易所付费**,在"免佣金/免费数据"维度不达标。
| 维度 | Schwab 嘉信 | Alpaca | Futu 富途/moomoo | IBKR 盈透(基准) | Robinhood |
|------|------------|--------|------------------|-----------------|-----------|
| 免佣金(美股) | ✅ $0 | ✅ $0 | ⚠️ 低非零(~$0.0049/股) | ❌ 收佣金 | ✅ $0 |
| 免费 API | ✅ 免费 | ✅ 免费(API-first) | ✅ OpenAPI 免费 | ✅ 免费访问 | ✅ 免费 |
| 免费实时数据 | ✅ 免费基础报价 | ✅ 免费(websocket) | ❌ 要订阅 push 包 | ❌ 按交易所付费 | ✅ 免费 |
| 中国用户开户 | ✅ 国际账户(经香港, W-8BEN, 无需 SSN) | ⚠️ 有国际支持, 中国是否在支持列表待核实 | ✅ 最友好(大陆直接开) | ✅ 友好 | ❌ 需 SSN+美国地址, 中国用户不能开 |
| 开户门槛 | ⚠️ 国际账户最低入金 ~$25,000 | 低/无最低 | 低 | 无最低 | 低 |
| 量化框架对接 | ⚠️ 较少(Schwab API 2024 才上线, 生态薄) | ✅ 最好(backtrader/QuantConnect/nautilus 多原生集成) | ⚠️ 主要自家 SDK | ✅ backtrader/nautilus/Lean 支持 | ❌ freqtrade 不支持 |
| API 成熟度 | ⚠️ 新(TD API 迁移中) | ✅ 稳定、为量化设计 | ✅ 自家 SDK 完善 | ✅ 最成熟 | — |
### 2.1 关键发现
- **Robinhood 对中国用户是死路**:官方开户要求(`robinhood.com/us/en/support/articles/what-you-need-to-get-started/`)强制 SSN(**不接受 ITIN**)+ 美国境内居住地址 + 美国公民/绿卡/有效美国签证。盈透账户对此无帮助——两者无关。
- **Schwab 是最接近"Robinhood 免费体验 + 中国能开"的正规券商**:$0 美股佣金 + 免费基础实时报价 + 经香港国际分部服务中国居民(W-8BEN、无 SSN)。代价:~$25k 最低入金、PDT 规则、API 生态薄。
- **Alpaca 是"聚焦策略"最优解**API-first、$0 佣金、免费实时数据、量化框架原生集成最全。卡点:中国大陆是否在支持国家清单**未在官方页面确认**(页面 JS 渲染),开户前必查。
- **Futu 最中国友好但 ①③ 不达标**:实时行情要付费订阅 push 包,且非零佣金。
### 2.2 监管约束:PDT 规则
所有美国券商保证金账户都受 **Pattern Day Trader 规则**约束:权益 < $25,000 时,5 个交易日最多 3 次日内交易(开+平同一只标的当天算一次)。这是 SEC 监管规则,非券商私设。
- 15m 通道突破策略持仓约 4-5 小时,多数情况不算日内交易(只要不同一天开平同一标的),但建仓频率高时要留意。
- 现金账户不受 PDT 限制,但受 T+1 结算资金约束(2024 年 5 月起美股 T+1)。
---
## 3. 支持盈透的量化框架现状(GitHub 核实,2026-08-23
| 框架 | Stars | 最后更新 | IBKR 支持 | 状态 |
|------|-------|---------|-----------|------|
| **Nautilus Trader** | 27.3k | 今天 | ✅ 官方适配器(`ADAPTERS.md` 列为 Official, Data/Execution) | 活跃, Rust 内核+Python 策略 |
| **QuantConnect Lean** | 21.3k | 昨天 | ✅ 官方插件(`Lean.Brokerages.InteractiveBrokers`) | 活跃, C#/Python, 可本地可云 |
| Backtrader | 22.9k | 2 年前(733d) | 依赖 ib_insync | ⚠️ 停滞, 不推荐新项目 |
| vectorbt | 8.8k | 20 天前 | 仅回测 | 不做实盘, 排除 |
| ib_async (`ib-api-reloaded/ib_async`) | 1.7k | 3 天前 | — | IBKR API 底层包装器(ib_insync 归档后的继任者), 非框架 |
关键:原 `ib_insync`erdewit)已 **archived 只读**,社区继任者是 `ib_async`(活跃)。Backtrader 依赖 ib_insync 且自身 2 年没更新——对 IBKR 实盘基本是死路。
### 3.1 两个可选框架
- **方案 ANautilus Trader** — 官方 IBKR 适配器(核心仓库内,与 Binance/OKX 同级),Rust 内核 + Python 策略,回测/实盘同代码。缺点:内置数据少,历史行情要自己接(Databento/Polygon);文档偏技术。
- **方案 BQuantConnect Lean** — 官方 IBKR brokerage 插件,内置海量免费美股历史数据(日线/分钟/基本面/期权链)。缺点:C# 优先,Python 二等公民;本地接 IBKR 要装 IB Gateway + Lean CLI。
两者共同前提:本机需跑 **TWS 或 IB Gateway** 进程作为桥(IBKR API 强制)。实盘 Level II 行情需在盈透账户订阅对应市场数据包(美股 Top of Book 通常几美元/月)。
---
## 4. 加密交易所的"美股"业务(代币化股票)
币安、欧易(OKX)近年开始支持"美股",但形式是**链上代币化股票(tokenized stocks)**,与传统美股交易有本质区别。
### 4.1 OKX(已核实,含完整股票列表)
OKX 有两条代币化美股产品线(来源:`okx.com/help/tokenized-stocks-faq` + `okx.com/learn/ondo-tokenized-stocks` + OKX 公共 API):
- **CeDeFi 模式**:260+ 代币化美股,跟随美股盘前/盘后/正常/过夜时段,5 天/周。由第三方(**Ondo Finance**)发行,OKX 仅上币。链上(OKX DEX / OKX 钱包)。
- **Unified Tokenized Stocks(统一代币化股票,现货)**:在 OKX 现货市场交易,命名规则为 **`X`+股票代码**(如 `XAAPL-USDT``XNVDA-USDT`)。USDT 结算。**共 97 只**2026-08-23 经 OKX `/api/v5/public/instruments?instType=SPOT` 核实)。
- **计价/结算**USDT/USDC。
- **费率**:**因发行方而异**FAQ 原文 "fees... Varies depending on provider"),OKX 不设单一费率;OKX DEX 自身另有 interface fee。
- **关键限制**:非真实股票所有权、无分红/无投票权(除非 provider 声明)、不能作保证金/抵押品、受 Ondo 等第三方信用风险影响、部分地区不可用。
#### OKX 现货代币化股票完整列表(97 只,X 前缀)
```
AAOI, AAPL, ADBE, ALAB, AMAT, AMD, AMZN, APLD, APP, ARM, ASML, ASTS, AUT, AVGO,
BE, BMNR, BOT, BSP, BX, CBRS, CH, CIEN, COHR, COIN, CRCL, CRM, CRWD, CRWV, CSCO,
DELL, DKNG, EWY, GEV, GLW, GME, GOOGL, HIMS, HOOD, HPE, IBM, INTC, IREN, ISRG,
IWM, JNJ, KLAC, KO, LITE, LLY, LM, LRCX, META, MRVL, MSFT, MSTR, MU, NBIS, NFLX,
NOW, NVDA, OKTA, ON, ONDS, ORCL, PL, PLTR, QCOM, QQQ, RDDT, RIVN, RKLB, ROK, RP,
SHAZ, SKHY, SMCI, SMH, SNDK, SNOW, SOXL, SPCX, SPY, STRC, TER, TESTA, TQQQ, TSLA,
TSM, TTWO, TWLO, TZ, UNH, USAR, VRT, WDC, XLE, ZM
```
用户问询的标的核实结果:
| 股票 | 代码 | OKX 代币化 | 备注 |
|------|------|-----------|------|
| 苹果 | AAPL | ✅ 有 | |
| 英伟达 | NVDA | ✅ 有 | |
| 拼多多 | PDD | ❌ 无 | |
| 特斯拉 | TSLA | ✅ 有 | |
| 微软 | MSFT | ✅ 有 | |
| 亚马逊 | AMZN | ✅ 有 | |
| 谷歌 | GOOGL | ✅ 有 | |
| Meta | META | ✅ 有 | |
| 台积电 | TSM | ✅ 有 | |
| 博通 | AVGO | ✅ 有 | |
| 阿里巴巴 | BABA | ❌ 无 | 中概 ADR 全部缺席 |
| 京东 | JD | ❌ 无 | 中概 ADR 全部缺席 |
| 百度 | BIDU | ❌ 无 | 中概 ADR 全部缺席 |
**重要观察**:OKX 代币化股票以美股大盘蓝筹为主,**完全没有中概 ADR**BABA/JD/BIDU/NIO/LI 均无)——应是规避中美 ADR 退市风险的主动选择。包含主要 ETFSPY/QQQ/IWM/SMH/SOXL/TQQQ/XLE)和 meme 股(GME/RDDT/HOOD)。
#### 两条产品线的可达性区别(关键)
- **97 只现货代币化股票(Unified Tokenized Stocks**:走 OKX **现货 REST API**`/api/v5/public/instruments?instType=SPOT`),instrument `state=live``instType=SPOT`。已实测 `XAAPL-USDT`ticker 返回实时价($308.87)、bid/ask 正常、`/api/v5/market/candles` 返回 1D OHLCV。**这是 freqtrade/CCXT 唯一可能够得着的代币化股票集合**。
- **260+ CeDeFi 代币化股票**:在 **OKX DEX**(链上,经 OKX Wallet / Web3),由 Ondo Finance 发行。**不走标准现货 REST API**,CCXT 无覆盖。完整列表仅在 `app.ondo.finance`(JS 应用)可查,curl 抓不到。**freqtrade 完全够不着这 260+ 只**——要交易需 Web3 钱包 + 链上签名,与现有框架无关。
### 4.2 Binance(已核实:2026-06-01 重启美股)
⚠️ **修正早前结论**:Binance 已重启美股业务,分两条产品线:
- **直接美股交易**(非代币化):2026-06-01 上线,符合资格用户可直接交易 **7000+ 只美股**。来源:PR Newswire 官方新闻稿《Binance Launches U.S. Stocks Trading and Previews bStocks Tokenized Securities》(2026-06-01,阿布扎比)。这是真实股票交易通道,非 2021 年那种代币化代币。
- **bStocks 代币化证券**:同日预览(preview),把股票 1:1 链上映射,可用 USDT/BNB 交易,7×24,股票可作链上杠杆抵押物。对接海外合规券商真实持股。
- **A 股**Binance 未直接上 A 股代币化;A 股相关的是**永续合约**(多家加密交易所提供,最高 20x,仅对赌价格、无真实持股)。来源:微信公众号文章 `mp.weixin.qq.com/s/ct41VUIM4bpnqvexP6gxQQ`(营销文,但与官方 PR 互相印证)。
- **历史**2021 年 10 月 Binance Stock Tokens 上线,约 11 月在 FCA/BaFin 监管压力下下架;2026 年以"直接交易 + bStocks 代币化"双路径重启。`binance.com` 直连页面被反爬挡(202/405),完整费率/标的清单需登录账户核实。
### 4.3 Binance vs OKX 代币化股票对比(2026-08-23
| 维度 | Binance | OKX |
|------|---------|-----|
| 真实美股交易 | ✅ 7000+ 只(直接交易,非代币化) | ❌ 只有代币化 |
| 代币化证券 | bStocks(预览中) | ✅ 97 只现货 + 260+ CeDeFi |
| A 股 | 仅永续合约(价格对赌) | 无 |
| 结算 | USDT/BNB(代币化)/ USD(直接) | USDT/USDC |
| 费率 | 待登录核实 | 因 provider 而异 |
### 4.4 现有 API 能否直接交易 OKX 代币化美股(分析)
#### 结论先行
**不能"直接"交易。** 当前 Vultr 上跑的 freqtradeOKX 永续合约、`trading_mode: futures`)无法直接下单 `XAAPL-USDT` 这类代币化股票。但 97 只现货代币化股票**在 API 传输层是可达的**,经"新建一个 spot 模式实例 + 重写策略"后可交易;260+ CeDeFi 则完全够不着。
#### 实测:API 传输层可达(97 只现货)
用 OKX 公共 REST API 直接探测 `XAAPL-USDT`
| 探测项 | 结果 | 含义 |
|--------|------|------|
| instrument 详情 | `state=live`, `instType=SPOT`, `baseCcy=XAAPL`, `quoteCcy=USDT`, `lever=10`, `minSz=0.01`, `tickSz=0.01`, `instCategory=3` | 合法现货标的,最小下单 0.01 股 |
| ticker | `last=$308.87`, bid/ask 正常, `vol24h=510` 股, `volCcy24h=$157k` | 实时行情正常,有流动性 |
| candles | 1D OHLCV 3 根返回正常 | 历史 K 线可下载 |
| 交易时段字段 | `contTdSwTime`/`preMktSwTime` 存在 | **跟随美股时段**,非 24/7 |
即 CCXT 调 `fetch_markets`/`fetch_ticker`/`fetch_ohlcv``XAAPL/USDT` 应当能拿到数据。传输层不是障碍。
#### 但当前实例直接交易有 5 个硬障碍
1. **模式不匹配(最大障碍)**:现 config `trading_mode: futures`(OKX USDT-M 永续)。代币化股票是 **SPOT**。一个 freqtrade 实例不能同时跑 futures + spot。**必须新建一个 spot 模式实例**(`trading_mode` 留空/spot,独立 config、独立 sqlite、独立策略)。
2. **杠杆语义崩塌**:当前策略靠 `trade.leverage` 联动止损(`stoploss=-0.80` 在 10x 下 = 价格 -8%)。代币化股票**不能作保证金/抵押品**(OKX FAQ 明确),spot 模式 `trade.leverage` 恒为 1`stoploss=-0.80` 会变成"价格跌 80% 才止损"——完全失效。**策略必须按 1x spot 重写止损数学**。
3. **交易时段**:代币化股票跟随美股盘前/正常/盘后/夜间时段(见 `contTdSwTime`),非 7×24。freqtrade bot 循环 24/7 运转,休市时段下单会被拒。非硬阻塞(订单失败、下根 K 线重试),但 OHLCV 在休市时段有缺口,信号逻辑要会处理。
4. **账户/地区限制**:代币化股票"may not be available in all regions"。现 OKX 账户用 `www.okx.cab`(国内加速域名),暗示是国内向账户——该账户能否交易 X 前缀代币化股票**未验证**。若 API key/账户被地区限制,下单会失败。**必须先用小额实测下单**确认。
5. **CCXT 市场识别未测**CCXT 的 OKX 适配器 `fetch_markets` 是否把 X 前缀代币化股票标为 `active=true/spot=true`、是否被特殊 category`instCategory=3`)过滤,**未在不跑 CCXT 的情况下确认**。需在 spot 实例里跑一次 `exchange.markets` 看是否含 `XAAPL/USDT`
#### 260+ CeDeFi 完全够不着
260+ CeDeFi 代币化股票在 **OKX DEX**(链上,经 OKX Wallet / Web3 签名),由 Ondo Finance 发行。**不走标准现货 REST API**CCXT 无覆盖,freqtrade 无 OKX DEX 适配器。要交易需 Web3 钱包 + 链上签名,与现有 freqtrade 框架无关。完整列表仅在 `app.ondo.finance`JS 应用)可查。
#### 可行路径与工作量
若决定用 freqtrade 交易 97 只现货代币化股票:
| 工作 | 量级 |
|------|------|
| 新建 spot 模式 freqtrade 实例(独立 config + db + systemd | 小,参照 `freqtrade-deploy-guide.md` |
| 验证 CCXT/账户能交易 `XAAPL/USDT`(小额实单) | 小,关键卡点验证 |
| 重写 `MultiAssetChannelBreakoutV5` 为 spot 版(去杠杆、止损数学改 1x、加交易时段感知) | 中,核心策略改造 |
| 处理休市 OHLCV 缺口 + 下单被拒重试 | 中,逻辑细节 |
| 选品(从 97 只里挑流动性好的) | 小 |
**判定**:不是"直接能交易",而是"API 通、但要新实例 + 策略重写"。如果只想快速验证 ATR 通道突破在美股价格上的效果,阻力最小的反而是 **OKX 代币化股票 + freqtrade spot 实例**(不用换券商/框架),代价是策略要改 spot 语义 + 失去 10x 杠杆放大。
### 4.5 代币化股票 vs 正规美股交易
| 维度 | 代币化股票(OKX/Binance) | 正规美股(IBKR/Schwab/Alpaca) |
|------|------------------------|------------------------------|
| 资产性质 | 链上合成代币, 镜像价格 | 真实股票所有权 |
| 分红/投票权 | 无(除非声明) | 有 |
| 计价 | USDT/USDC | USD |
| 流动性 | 薄(provider 做市) | 深市场 |
| 监管保护 | 弱(链上+合成) | 强(SIPC/SEC) |
| 信用风险 | provider/发行方风险 | 券商/清算机构风险 |
| 量化框架 | freqtrade 可直接交易(它是加密 token) | Nautilus/Lean/backtrader |
### 4.6 对当前策略的意义
`MultiAssetChannelBreakoutV5` 是纯价格驱动(ATR 通道 + ADX 动量),**理论上可跑在代币化股票价格上**,且 freqtrade 能直接交易(因为代币化股票本质是加密 token)。
但实务上有显著问题:
- 流动性薄 → 滑点大、止损易被插针
- 无分红 → 长持不如真股
- 信用风险暴露给 Ondo 等第三方
- 品种池小(~260 只,不是全市场)
- 24/7 品种与盘前盘后品种规则不一,信号时段处理复杂
**结论**:代币化股票不是"美股交易"的等价替代,更适合短期价格投机。若做严肃美股策略,走正规券商 + 美股框架更稳。
---
## 5. 综合推荐
按"聚焦策略不写框架"的目标排序:
1. **若 Alpaca 支持中国大陆开户****Alpaca + backtrader**(最优)。API-first、$0 佣金、免费实时数据、backtrader 原生支持。卡点是开户资格,必须先查 `alpaca.markets/international` 的国家清单。
2. **若要正规大券商 + 免佣金****Schwab 嘉信**(经香港国际账户)。$25k 入金门槛 + PDT 规则 + 框架生态薄(需自己用 Schwab API 写策略循环,或找支持 Schwab 的框架)。
3. **若优先 API 成熟度 + 全球品种** → 沿用 **IBKR + Nautilus Trader**(官方适配器,今天仍在更新)。代价:收佣金、行情付费。
4. **代币化股票(阻力最小的美股价格暴露)**:OKX 97 只现货代币化股票经现有 OKX API 即可达(已实测 `XAAPL` live + 行情 + K 线正常),但需新建 spot 模式 freqtrade 实例 + 把策略改写为 1x spot 语义(见 §4.4)。适合"只想快速验证 ATR 通道在美股价格上的效果",代价是失去 10x 杠杆放大 + 信用/流动性风险。260+ CeDeFi 那批 freqtrade 够不着。
### 5.1 下一步行动项
- [ ] 核实 Alpaca 国际支持国家清单是否含中国大陆(登录 `alpaca.markets/international` 选开户看 Country 下拉)
- [ ] 核实 Schwab One International 当前最低入金(`schwab.com/international`
- [x] ~~核实 Binance 是否重新上线代币化股票~~**已核实**2026-06-01 PR Newswire 官方,7000+ 直接美股交易 + bStocks 预览(见 §4.2
- [ ] 若走 OKX 代币化股票路线:①跑一次 CCXT `exchange.markets` 确认含 `XAAPL/USDT``active/spot` 标记正常 ②用现 OKX 账户小额实单测下单,确认账户无地区限制 ③下载 `XAAPL/USDT` 历史 K 线回测 ATR 通道突破
- [ ] 选定方向后出具体接入方案:本地 IB Gateway/券商 API 怎么起、框架怎么装、策略从 freqtrade 风格迁移到目标框架风格、第一个回测怎么跑
---
## 6. 验证状态说明
本文档核实情况(2026-08-23):
- **已联网核实**freqtrade/CCXT 不含 Robinhood/Schwab/Alpaca(源码 grep);Robinhood 开户需 SSN 不接受 ITN(官方支持文档);Schwab 国际版 "$0 online equity trade commissions"(官方页面);Alpaca 有国际支持 + 实时数据(官方页面);Nautilus `ADAPTERS.md` 列 IBKR 为 OfficialLean.Brokerages.InteractiveBrokers 活跃;ib_insync 已 archived、ib_async 活跃;**OKX 260+ 代币化股票(okx.com 官方)+ 97 只现货代币化股票完整列表(OKX `/api/v5/public/instruments` 公共 API+ `XAAPL-USDT` 可交易性实测(`state=live`、ticker $308.87、1D K 线正常)****Binance 2026-06-01 重启美股(PR Newswire 官方新闻稿,7000+ 直接交易 + bStocks 预览)**。
- **基于知识/未完全核实**Schwab $25k 最低入金、Alpaca 中国大陆资格、Binance 直接美股/bStocks 完整费率与标的清单(`binance.com` 被反爬挡,需登录账户核实)、现 OKX 账户(`okx.cab` 国内向)能否交易 X 前缀代币化股票(需小额实单验证)、CCXT 是否把 X 前缀标的标为 `active/spot`(需跑一次 `exchange.markets` 确认)。这几项开户/决策前请在官网或小额实单确认。
### 6.1 联网搜索工具失效说明
本次研究中 WebSearch/WebFetch 内置工具持续报 `422 model not found: MiniMax-M2.7-highspeed`。根因(已诊断):
- 全局 `~/.claude/settings.json``ANTHROPIC_DEFAULT_HAIKU_MODEL=MiniMax-M2.7-highspeed`,但自建网关 `gw.looq.fun/anthropic` 上**不存在该模型 ID**(网关实际可用:`qwen3.6-35b`/`glm-5.2`/`deepseek-v4-pro`/`deepseek-v4-flash`/`kimi-k2.6`/`claude-opus-4-6`)。
- WebSearch/WebFetch 内部用 Haiku 档模型做网页摘要,调到不存在的模型即 422。
- **不是 Tavily**——`mcpServers` 为空,permissions 里的 `"Tavily"` 只是历史授权残留,Tavily MCP 从未实际配置。
- **修复方案**:把 `ANTHROPIC_DEFAULT_HAIKU_MODEL``ANTHROPIC_DEFAULT_SONNET_MODEL` 改成网关已有的小快模型(推荐 `deepseek-v4-flash`),或配置 Tavily MCP 作为独立搜索后端。本文档绕过该故障,全部用 curl 直抓官方页面/API 核实。