Files
nofx/docs/stock-trading-design.md
shinchan-zhai 9682d3690d docs: stock trading design + add Alpaca/LongPort tasks to self-drive queue
- Comprehensive design doc: US/HK/A-share trading API comparison
- Phase 1: Alpaca (US stocks) - paper trading first
- Phase 2: LongPort (HK stocks)
- Phase 3: A-share via Stock Connect
- 10 new [PENDING] tasks for self-drive cron
2026-03-25 01:05:54 +08:00

7.7 KiB
Raw Blame History

NOFXi 股票交易能力设计方案

创建: 2026-03-23 13:00 状态: 方案设计阶段 目标: 让 NOFXi 具备美股、港股、A股的实际交易能力

一、市场分析

市场 难度 合规要求 交易时段 结算
美股 较宽松API 友好 盘前4:00-9:30 / 正常9:30-16:00 / 盘后16:00-20:00 ET T+1
港股 需持牌券商 9:30-12:00 / 13:00-16:00 HKT T+2
A股 极其严格,程序化交易有准入门槛 9:30-11:30 / 13:00-15:00 CST T+1卖出T+0到账

二、券商/API 选型对比

美股交易

方案 优点 缺点 API 风格 费用
Alpaca 推荐 REST API 极其简洁Paper Trading 免费支持盘前盘后Go SDK 仅美股 REST + WebSocket 免佣金
Interactive Brokers (IBKR) 全球市场(美/港/A股通最全面 API 复杂(TWS/Gateway),需要本地运行 Java/C++/Python/REST 低佣金
Tradier REST API 友好 仅美股,知名度低 REST $0 佣金(Sandbox)

港股交易

方案 优点 缺点 API 风格 费用
LongPort (长桥) 推荐 专为程序化设计Go/Rust SDK美股+港股 需开户 REST + WebSocket + gRPC 低佣
Futu OpenD (富途) 中文社区大,港股+美股+A股 需运行 OpenD 网关 TCP Protocol + REST 低佣
Tiger (老虎) 美股+港股Python SDK API 不如长桥 REST 中等
IBKR 通过港股通可交易 设置复杂 同上 低佣

A股交易

方案 优点 缺点 合规风险
Futu OpenD 有 A 股通道(沪港通/深港通) 需 OpenD 网关,间接交易
IBKR 沪港通 通过港股通交易 A 股 品种有限
掘金量化 / QMT 国内正规量化平台 需机构资质或高门槛 合规
通达信/同花顺接口 直接对接国内券商 灰色地带,券商可能封号 ⚠️ 高风险

三、推荐架构

Phase 1: 美股交易Alpaca— 2-3天

用户 → NOFXi Agent → trader/alpaca/ → Alpaca API
                                        (Paper → Live)

为什么选 Alpaca

  • REST API 极简,和 NOFX 现有 Trader 接口完美匹配
  • Paper Trading 环境免费0 风险测试
  • 支持盘前盘后交易
  • 免佣金
  • Go HTTP 调用即可,无需 SDK

核心实现:

// trader/alpaca/trader.go
type AlpacaTrader struct {
    apiKey    string
    apiSecret string
    baseURL   string  // paper-api.alpaca.markets or api.alpaca.markets
    client    *http.Client
}

// 实现 Trader interface
func (t *AlpacaTrader) OpenLong(symbol string, qty float64, leverage int) (map[string]interface{}, error)
func (t *AlpacaTrader) CloseLong(symbol string, qty float64) (map[string]interface{}, error)
func (t *AlpacaTrader) GetPositions() ([]map[string]interface{}, error)
func (t *AlpacaTrader) GetBalance() (map[string]interface{}, error)
func (t *AlpacaTrader) GetMarketPrice(symbol string) (float64, error)
// ... 美股不支持做空和杠杆(或通过 margin 账户)

Alpaca API 核心端点:

  • POST /v2/orders — 下单
  • GET /v2/positions — 持仓
  • GET /v2/account — 余额
  • DELETE /v2/orders/{id} — 撤单
  • GET /v2/assets/{symbol}/bars — K线

Phase 2: 港股交易LongPort— 3-5天

用户 → NOFXi Agent → trader/longport/ → LongPort OpenAPI

为什么选长桥:

  • 官方 Go SDKgithub.com/longportapp/openapi-go
  • 同时支持美股+港股
  • 专为程序化交易设计
  • 文档完善,中文友好

核心实现:

// trader/longport/trader.go
type LongPortTrader struct {
    config   *longport.Config
    tradeCtx *trade.TradeContext
    quoteCtx *quote.QuoteContext
    market   string  // "US" or "HK"
}

需要注意:

  • 股票交易没有"做空"概念(需要融券,门槛高)
  • 没有杠杆概念(除融资融券)
  • 需要改造 Trader interface增加股票买卖方法或适配现有接口
  • 委托类型:限价单/市价单/条件单

Phase 3: A股交易长期规划

推荐路径: 通过 LongPort 或 IBKR 的沪港通/深港通通道

  • 不建议直接对接国内券商 API合规风险大
  • 先支持沪港通标的300+ 只大盘股)
  • 未来考虑接入正规量化平台(掘金/QMT

四、Trader Interface 适配

当前 interface 是为加密货币合约设计的(做多/做空/杠杆),股票交易需要扩展:

// 方案A: 扩展现有 interface推荐
// 股票交易映射到现有接口:
// OpenLong  → 买入leverage=1
// CloseLong → 卖出
// OpenShort → 融券卖出(如果支持)
// CloseShort → 买入平仓
// 杠杆固定为 1现金账户

// 方案B: 新增 StockTrader interface
type StockTrader interface {
    Buy(symbol string, qty float64, orderType string, limitPrice float64) (OrderResult, error)
    Sell(symbol string, qty float64, orderType string, limitPrice float64) (OrderResult, error)
    GetQuote(symbol string) (Quote, error)
    GetPositions() ([]StockPosition, error)
    GetBalance() (StockBalance, error)
    GetOrders() ([]StockOrder, error)
    CancelOrder(orderID string) error
}

推荐方案A:复用现有 interfacestock trader 内部做映射。这样 Agent 的 tool calling、Web UI、Telegram 全部零改动就能支持股票。

五、Agent 工具扩展

// 新增 LLM 工具
"buy_stock"      买入股票市价/限价
"sell_stock"     卖出股票
"stock_order"    查看委托状态
"cancel_order"   撤单

// 或者复用现有 execute_trade 工具,通过 symbol 前缀区分:
// "AAPL" → Alpaca
// "0700.HK" → LongPort HK
// "600519.SH" → LongPort A股通

六、数据增强

数据 来源 用途
实时行情 新浪财经(已有) + Alpaca/LongPort WebSocket 盘中实时价格
盘前盘后 新浪(已有) + Alpaca extended hours 盘前盘后交易
财报日历 Yahoo Finance / Alpaca 财报预警
新闻 Alpha Vantage / Alpaca News API 个股新闻
基本面 Yahoo Finance / LongPort PE/PB/市值等

七、开发计划

Sprint 1: Alpaca Paper TradingP02-3天

  • trader/alpaca/ 基础结构
  • 实现 Trader interfaceBuy/Sell 映射到 OpenLong/CloseLong
  • Paper Trading 环境对接
  • Agent 工具适配(识别股票 symbol 自动路由到 Alpaca
  • 前端展示股票持仓
  • 集成测试:从对话到下单全流程

Sprint 2: Alpaca Live Trading + 行情增强P12天

  • Live API 对接
  • 盘前盘后交易支持
  • WebSocket 实时行情
  • 委托类型:限价单、止损单
  • 风控:单笔金额限制、日亏损限制

Sprint 3: LongPort 港股P23-5天

  • trader/longport/ 基础结构
  • Go SDK 集成
  • 港股交易流程
  • 港股行情接入
  • 港股持仓管理

Sprint 4: A股通道P3探索

  • 通过 LongPort/IBKR 沪港通
  • A股特殊规则T+1、涨跌停、集合竞价
  • A股行情增强

八、风险与注意事项

  1. 资金安全 — 所有交易必须经过确认流程,和加密货币一样
  2. 合规 — 不碰灰色地带,只用正规券商 API
  3. 交易规则差异 — 股票无 24h 交易,需处理休市/停牌
  4. 结算周期 — 美股 T+1港股 T+2买入后不能立即卖出Day Trade 规则)
  5. Pattern Day Trader — 美股 margin 账户 5 天内 ≥4 次日内交易需 $25K 最低资金
  6. 汇率 — 港股/美股涉及外汇,需要考虑汇率展示