Alpaca券商日志
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/alpaca-broker-journals-b3an。
技能介绍
要解决什么
在 Alpaca 全权委托(omnibus)账户里,预注资的 firm / sweep 账户需要把现金或证券即时划给终端用户账户。逐个用户走外部银行转账,慢且成本高,"秒到账"体验完全做不到。日志(journal)就是这条内部通道:在你自己的账户之间转移价值,永不触碰外部银行体系(那是 alpaca-broker-funding-transfers 的职责)。Instant funding、cashback、share rewards 都建立在它之上。
核心能力与关键步骤
JNLC 与 JNLS 两种条目
JNLC:现金,USD,firm ↔ user 双向JNLS:证券,整股或碎股,仅 firm → user
API 端点
POST /v1/journals:单条日志POST /v1/journals/batch:一对多(仅 JNLC)POST /v1/journals/reverse_batch:多对一(仅 JNLC)GET /v1/journals:列表,支持 after / before / status 等过滤DELETE /v1/journals/{journal_id}:取消GET /v2/events/journals/status:SSE 状态流
幂等键
创建时传 Idempotency-Key(≤128 字符,建议客户端生成 UUID)。同 key 同 body 返回原日志,同 key 不同 body 返回 422。这是资金移动重试安全的正确做法——网络超时后盲目重试 POST /v1/journals 可能重复入账。建议从自有交易 ID 确定性生成 key。
批量原子性
批处理全有或全无:任一条校验失败(比如一个错误的 account ID),整批回滚。
状态生命周期
queued → sent_to_clearing → executed 是正常路径。但 executed 并非终态——Alpaca cashiering 仍可能撤销。真正的终态是 canceled / deleted / correct。
适用边界与注意点
- 资格:cash-pooling / journals 用例需要 Alpaca 审核,可能涉及本地牌照,需咨询法务
JNLS的to_account必须ACTIVE,from_account可ACTIVE或CLOSE- 余额不足时 create 返回
403 - 日限额触发会推到
pending等待人工审批 - 列表超过 10 万条返回
422,必须用after/before/limit过滤 - 删除仅对
pending有效(204);要撤销已执行日志,建一条反向镜像日志,不要尝试 delete correct会新建一个 journal ID,原 ID 变为 canceled/correct——按 journal ID 对账时要同时处理两个 ID- Travel Rule:资金移动日志要带 transmitter 信息
- 沙箱可用 description 字段放 fixture(如
/fixtures/status=rejected/fixtures/)模拟 rejected / pending 场景
使用场景
- 在Alpaca omnibus账户中把sweep账户的现金批量划给多个用户账户,完成JNLC batch journal
- 为新用户发放开户奖励股票,通过JNLS journal将碎股从firm账户转入用户账户
- 需要监控journal状态变化,订阅SSE流获取queued到executed的状态迁移事件
- 在资金移动请求中实现重试安全,使用Idempotency-Key确保超时重试不重复入账
适合人员
- 负责对接Alpaca Broker API的后端工程师,需要实现账户间资金划转接口
- 构建交易系统的技术负责人,关注资金操作的幂等性与对账可靠性
- 处理券商运营工具的开发者,需要订阅journal状态事件流做实时通知
- 负责券商合规与资金流转的产品人员,需要理解journal的能力边界与限制