Alpaca 券商日志
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/alpaca-broker-journals-sh-worzpx 到你的 AI 助手中。
技能介绍
要解决的问题
Broker API 里的「即时到账」没法靠外部银行转账实现——ACH 要走一两天,逐用户打款不现实。Journal 的解法是在你自己的 omnibus 内部做账本划转:先用自有渠道收款,把钱囤在 firm/sweep 账户,再通过 POST /v1/journals 瞬间记到用户头上。cashback、注册送股本质上都是 Journal。它不碰外部银行体系,外部出入金属于另一套 transfers 技能。
核心能力与工作方式
- 两种 entry_type:
JNLC走现金,firm ↔ user 双向;JNLS走证券(含碎股),只能 firm → user,典型场景是推荐奖励送股。 - 幂等是硬要求:创建时必须带
Idempotency-Key(推荐 UUID)。相同 key + 相同 body 返回原记录;相同 key + 不同 body 报422。超时后盲目重试会重复打款,正确做法是基于自己的交易 ID 确定性生成 key,每次重试复用。 - 批量划转:
batch一对多(sweep 分发给多个用户),reverse_batch多对一(回收)。仅 JNLC,且全有或全无——一个坏 account ID 让整批失败。 - 状态要按终态处理:
queued → sent_to_clearing → executed是理想路径,但executed不是终态,cashiering 仍可撤销;真正的终态是canceled/deleted/correct。correct会取消原 Journal 并新建一条,ID 变了,对账要同时覆盖新旧两条。 - 事件流:
GET /v2/events/journals/status推送 SSE,事件带 ULID 的event_id。since/since_id必须与until/until_id成对出现,且不能混用since与since_id;不带 since 参数就没有历史。 - 取消与撤销:
DELETE只对pending生效(204);撤销已执行的 Journal 要反向建一条 mirror journal,不能删。
适用边界与注意点
- cash-pooling/journals 用途需 Alpaca 审核,可能还要当地牌照,先咨询法务。
GET /v1/journals结果超过 10 万条返回422,必须用after/before/limit过滤。- JNLC 余额不足直接
403;触达日限额会把 Journal 顶到pending等待人工审批。 - 资金类 Journal 要带
transmitter_*的 Travel Rule 字段,入金不论金额都要。 to_account必须 ACTIVE;JNLS 的from_account可以是 CLOSE。
使用场景
- 在即时到账功能里,把 sweep 账户的现金批量划转到多个用户账户(JNLC batch)
- 注册送股活动上线,需要通过 JNLS 把碎股从 firm 账户划到新用户(仅单向)
- 创建 Journal 后遇网络超时,用 Idempotency-Key 确定性重试,避免重复打款
- 对接 SSE 状态流,把 executed/canceled/correct 等事件写入自己的账本做对账
适合人员
- 在 Alpaca Broker API 上做即时到账的后端工程师,需要处理资金划转与幂等重试
- 负责券商账务对账的运维或财务系统开发者,需要按 Journal 状态和事件做核对
- 设计注册奖励或现金返利功能的平台工程师,需要了解 JNLS 单向划转和 JNLC 限额规则
- 维护 Broker 集成文档与沙箱测试用例的技术作者,需要明确状态生命周期和错误码