OmniSub 的 FPSL 集成指南
机器翻译译自英文(docs.alpaca.markets)本页 69 段已全部译完
通用知识点
- 利息按日累计(实际/360 基准),并按月支付。
- 抵押品将代表客户存放在三方银行的托管账户中,并根据出借证券的市场变化每日重新计算。
- 出借证券对保证金/购买力/权益没有影响。
- 当客户出借其股票时,他们将放弃投票权。如果客户希望重新获得股东投票权,需要将其账户从 FPSL 中取消注册。
- 当股票被出借时,借款人有权获得股息。然而,出借人(客户)将收到“替代股息支付”,其税务规则可能与股息不同。
- 不能保证任何特定股票会被出借,因为这取决于借入需求,且利率随个别证券的供需变化。客户也不能选择出借哪些证券。注册适用于整个符合条件的投资组合。
- FPSL 在 Alpaca 批准的国家可用。请与你的 Alpaca 联系人确认你的目标市场。
- 仅仅因为股票在可出借库存中,并不意味着所有股票都会被借出。可出借库存的使用取决于特定证券的市场需求。
- 通过供应商系统,Alpaca 向其出借股票的任何参与者都是持牌且受监管的经纪交易商、对冲基金或机构。
角色与职责
| 任务 | Alpaca | 合作伙伴 |
|---|---|---|
| 存档每个客户的借贷协议 | 不收集 | 必须收集并留存 |
| 要求合作伙伴与子账户分享收入 | 要求合作伙伴分享收入 | 必须与子账户分享收入 |
| 单个客户资格测试 | 不执行 | 必须执行 |
| 税务居住国检查 | 不执行 | 必须执行 |
| 向你的客户展示所需披露 | 不核实 | 必须展示 |
| 依据 FINRA Rule 4330 的适当性计划 | 不执行 | 必须执行 |
| 证明单个客户同意的监督记录 | 不留存 | 必须留存 |
先决条件
在 OmniSub 上使用 FPSL API 之前,请确保:
- 你的代理机构已注册到 Alpaca 的 OmniSub 配置中。这是独立于开启 FPSL 的单独启用步骤,由你的 Alpaca 联系人执行,并将你的代理机构映射到特定的主账户。
- 每个终端客户由一个子账户表示。在 OmniSub 代理机构下,其他任何账户类型都不得注册 FPSL。
- 所需协议:在账户层面无需任何协议。Alpaca 不从子账户收集任何协议。你与 Alpaca 自己签订的协议覆盖了该安排。
第 1 步:获取可用的 FPSL 层级
端点:GET/v1/fpsl/tiers
**用途:**确定可用的 FPSL 层级。
关键注意事项:
customer_split和partner_split表示按总支付金额计算的利息收入百分比。例如,customer_split 为 0.20 表示如果某证券产生 $10 利息收入,则客户获得 $2。- 层级由 Alpaca 在开户引导期间配置。合作伙伴不会通过此 API 创建、更新或删除 FPSL 层级。
请求示例:
curl --location 'https://broker-api.sandbox.alpaca.markets/v1/fpsl/tiers' \
--header 'Authorization: Basic <your-credentials>'
查询参数:
tier_name(可选):按特定tier_name筛选market(可选):按market(US)筛选sort_by(可选):按tier_name、market、customer_split或partner_split排序direction(可选):asc或desc(默认:desc)
响应示例:
[
{
"id": "9BAB56CA-CE9A-4C87-A702-3365F92C2EB5",
"tier_name": "gold",
"market": "US",
"customer_split": "0.20",
"partner_split": "0.30",
"created_at": "2024-06-11T19:00:00.000000Z",
"updated_at": "2024-06-11T19:00:00.000000Z"
}
]
第 2.1 步:传达客户同意
Alpaca 不会对 omnibus_sub 账户执行同意检查。在将资产视为已登记之前,合作伙伴必须获取并留存满足其自身监管义务的客户同意记录。Alpaca 不会查看或核实这些记录。
第 2.2 步:注册账户
端点:PATCH/v1/accounts/{account_id}
在此处使用subaccount_id。
**用途:**将 omnibus_sub 账户注册到 FPSL 计划中
请求示例
curl --location --request PATCH 'https://broker-api.sandbox.alpaca.markets/v1/accounts/{sub_account_id}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic <your-credentials>' \
--data '{
"fpsl": {
"US": {
"tier_id": "5cd4d4cf-fda9-4949-99d7-9e4a4613dc2d",
"status": "ACTIVE"
}
}
}'
注册规则
- 首次注册时需要
tier_id - 首次注册时
status为可选 - 如果首次注册时省略
status,账户将注册为ACTIVE
响应示例:
{
"id": "cd1045f5-c5dc-4204-a906-633ec96df05b",
"account_number": "533888676",
"status": "ACTIVE",
"fpsl": {
"US": {
"status": "ACTIVE",
"tier_id": "5cd4d4cf-fda9-4949-99d7-9e4a4613dc2d"
}
}
}
第 3 步:检查账户 FPSL 状态
端点: GET /v1/accounts/{account_id}
**用途: **获取当前 FPSL 注册状态
请求示例:
curl --location 'https://broker-api.sandbox.alpaca.markets/v1/accounts/{account_id}' \
--header 'Authorization: Basic <your-credentials>'
FPSL 状态值:
| 状态 | 描述 |
|---|---|
FPSL key absent | 此账户从未注册。 |
INACTIVE | 此账户已取消注册。 |
ACTIVE | 账户已注册且符合资格。 |
OmniSub 登记失败会返回以下错误之一:
| 条件 | 消息 |
|---|---|
| 账户类型错误 | only omnibus_sub accounts can participate in FPSL for omnibus correspondents |
| 未找到层级 | fpsl tier <id> not found |
| 你的代理机构未启用 FPSL | correspondent is not enabled to participate in FPSL |
| 请求了非美国市场 | only US fpsl market is supported |
第 4 步:修改 FPSL 注册
在同一次调用中更改层级并选择退出会被拒绝。月中选择退出不会丧失股票已借出天数所已赚取的利息。从下一个工作日起,已选择退出的子账户的股票将不再被出借,而现有借贷会在借入方归还股票时平仓。
端点: PATCH/v1/accounts/{sub_account_id}
在此处使用 subaccount_id
**用途:**更改层级、取消登记或重新登记子账户
更改层级示例:
发送新的 tier_id,不带状态。
curl --location --request PATCH 'https://broker-api.sandbox.alpaca.markets/v1/accounts/{sub_account_id}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic <your-credentials>' \
--data '{
"fpsl": {
"US": {
"tier_id": "aab75b22-6ac7-48cd-883d-7313afd1afcd"
}
}
}'
更改层级响应示例:
{
"id": "cd1045f5-c5dc-4204-a906-633ec96df05b",
"account_number": "533888676",
"status": "ACTIVE",
"fpsl": {
"US": {
"status": "ACTIVE",
"tier_id": "aab75b22-6ac7-48cd-883d-7313afd1afcd"
}
}
}
取消登记账户示例:
curl --location --request PATCH 'https://broker-api.sandbox.alpaca.markets/v1/accounts/{sub_account_id}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic <your-credentials>' \
--data '{
"fpsl": {
"US": {
"status": "INACTIVE"
}
}
}'
取消登记响应示例:
{
"id": "cd1045f5-c5dc-4204-a906-633ec96df05b",
"account_number": "533888676",
"status": "ACTIVE",
"fpsl": {
"US": {
"status": "INACTIVE",
"tier_id": "5cd4d4cf-fda9-4949-99d7-9e4a4613dc2d"
}
}
}
重新注册账户示例:
curl --location --request PATCH 'https://broker-api.sandbox.alpaca.markets/v1/accounts/{sub_account_id}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic <your-credentials>' \
--data '{
"fpsl": {
"US": {
"status": "ACTIVE"
}
}
}'
重新注册账户响应:
{
"id": "cd1045f5-c5dc-4204-a906-633ec96df05b",
"account_number": "533888676",
"status": "ACTIVE",
"fpsl": {
"US": {
"status": "ACTIVE",
"tier_id": "5cd4d4cf-fda9-4949-99d7-9e4a4613dc2d"
}
}
}
第 5 步:检索 FPSL 证券借出活动
端点:GET/v1/fpsl/loans
**用途:**获取每日股票借贷活动和利息信息
列出 FPSL 借贷
请求示例:
# Aggregated view across sub accounts under main account
curl --location 'https://broker-api.sandbox.alpaca.markets/v1/fpsl/loans?account_id={main_account}' \
--header 'Authorization: Basic <your-credentials>'
# Single sub account view
curl --location 'https://broker-api.sandbox.alpaca.markets/v1/fpsl/loans?account_id={sub_account_id}' \
--header 'Authorization: Basic <your-credentials>'
当借贷价值(包括利息)已调整时,可能会出现 updated_at。
查询参数:
page_token(可选):分页令牌start*(可选):包含起始日期,格式为 YYYY-MM-DDend*(可选):排除结束日期,格式为 YYYY-MM-DDlimit(可选):页面大小account_id(可选):按账户筛选- 用于对账时始终传递
account_id。如果省略,结果可能包括你的 API 凭证可见的所有账户
默认日期行为:
start默认为当前月份的第一天end默认为当前日期之后的一天defaults使用纽约时区逻辑
响应结构:
{
"loans": [
{
"date": "2024-07-11",
"account_id": "{main_account_id}",
"account_number": "533888676",
"correspondent": "YOUR_CORRESPONDENT",
"symbol": "AAPL",
"quantity": 400,
"market_value": 60000.00,
"collateral": 61350.00,
"updated_at": "2024-07-12T05:00:00.000000Z",
"interest": {
"customer": 9.10,
"partner": 5.40
}
}
],
"next_page_token": "{value_to_send_to_continue_paging}"
}
第 6 步:检索月末利息
端点: GET/v1/accounts/activities/INT
用途: 获取月末利息活动
请求示例:
curl --location 'https://broker-api.sandbox.alpaca.markets/v1/accounts/activities/INT?account_id={sub_account_id}' \
--header 'Authorization: Basic <your-credentials>'
响应示例:
[
{
"id": "5ca8b9e6-cd56-48fa-99a7-ce1f5290f312",
"activity_type": "INT",
"activity_sub_type": "FPSL",
"date": "2024-07-31",
"net_amount": 14.50,
"description": "Securities Lending Program Interest - JUNE 2024",
"status": "executed"
}
]
"5ca8b9e6-cd56-48fa-99a7-ce1f5290f312",
"qty": null,
"price": null,
"status": "executed",
"symbol": "",
"entry_type": "INT",
"net_amount": 0.58,
"description": "June 2024 Fully-Paid Securities Lending",
"settle_date": "2024-06-28",
"system_date": "2024-06-28",
"entry_sub_type": "FPSL",
"per_share_amount": null
}
第 7 步:FPSL SSE 事件(可选)
端点: GET/v1/events/accounts/status
用途: 检索账户的 FPSL 状态历史
请求示例:
curl --location 'https://broker-api.sandbox.alpaca.markets/v1/events/accounts/status?id={account_id}&since_ulid={since_ulid}' \
--header 'Authorization: Basic <your-credentials>' \
--header 'Accept: text/event-stream'
响应示例:
{
"fpsl": {
"US": {
"status_from": "ACTIVE",
"status_to": "INACTIVE"
}
},
"account_id": "382dd20d-d627-4d9f-9c93-7e24cd340546",
"account_number": "533888676",
"at": "2024-06-11T19:00:00.000000Z",
"event_ulid": "01J2VQMVJRMXQRPNS3831XFE1Y"
}
其他信息
- 在沙盒中,不会发出 FPSL 账户状态事件。在沙盒测试期间,通过轮询
GET /v1/accounts/{account_id}验证状态变化
重要说明
- 收入分成: 收入根据合作伙伴分配给该子账户的层级配置,在合作伙伴、子账户客户和 Alpaca 之间分成。
- 抵押品: 每笔借贷自动提交抵押品,并按第 5 步所述分配到你的子账户。
- 账户状态与借贷效果: 子账户的注册、层级更改和退出将立即反映在该账户的响应和 SSE 流中。借贷效果不是即时的。新注册的子账户在下一个工作日的可出借库存计算之前不贡献股票,退出的子账户从下一个工作日起停止接收新借贷,现有借贷将在借款人归还股票时关闭。
- 合作伙伴份额的去向: 合作伙伴的份额通过月度发票结算。使用 OM 借贷数据进行归属。不要汇总活动行,因为合作伙伴份额没有活动行。
在决定是否参与出借全额支付证券或同意与 Alpaca Securities LLC 签订主证券借贷协议之前,请仔细阅读关于参与全额支付证券借贷交易的重要风险披露。
这些披露描述了参与证券借贷交易的重要特征及相关风险。
OmniSub 产品由 AlpacaDB, Inc. 作为与综合清算服务相关的子账户核算技术服务提供。该技术服务的审批须经 Alpaca Securities LLC 尽职调查审核。