# Alpaca Paper 订单生命周期与安全边界

生成日期：2026-08-02

## 生命周期模型

本项目将 Alpaca 原始订单状态映射为以下内部阶段：

- `WORKING`：`accepted`、`pending_new`、`new`、`pending_cancel`；
- `PARTIAL`：`partially_filled`；
- `TERMINAL`：`filled`、`canceled`、`expired`、`done_for_day`、`replaced`、`calculated`；
- `ATTENTION`：`rejected`、`suspended` 或未知状态。

非终态订单超过 30 秒没有更新会进入需要对账的范围。客户端订单编号由策略版本、信号时间、标的和方向构成，便于幂等审计。

## Paper 路由的硬限制

- 仅允许 `SPY`、`QQQ`、`GLD`；
- 仅允许整数股；
- 仅允许 `day` 限价单；
- 禁止盘前盘后；
- 单笔名义金额不超过 5,000 美元；
- 必须同时具有 Paper API 密钥、`PAPER_ORDER_ROUTING_ENABLED=true` 和私有确认值；
- 当前没有将提交或撤单函数暴露为公网 HTTP 路由。

## 当前安全状态

Paper 账户连接只用于健康检查和展示。源代码具备提交与撤单能力，但运行时仍为 `PAPER_LOCKED`。实盘网关继续使用单独的实盘密钥，并维持 `LIVE LOCKED`。这可以让页面完整展示执行架构，同时避免任何公开页面成为资金控制入口。

## Paper 不能证明的事情

Paper Trading 不会完整模拟市场冲击、订单信息泄漏、延迟滑点、限价单队列位置和真实可用数量。因此 Paper 成交与收益不能直接外推到实盘；实盘可能出现少成交、部分成交、晚成交、更差价格、拒单、网络中断和状态不一致。

## 官方参考

- Paper Trading：https://docs.alpaca.markets/us/docs/paper-trading
- Orders at Alpaca：https://docs.alpaca.markets/us/docs/orders-at-alpaca
- Trading API account endpoint：https://docs.alpaca.markets/us/reference/getaccount-1
- Account activities：https://docs.alpaca.markets/us/reference/getaccountactivities-2
- WebSocket trade updates：https://docs.alpaca.markets/us/docs/websocket-streaming

