FPSL 集成指南(全披露)
机器翻译译自英文(docs.alpaca.markets)本页 62 段已全部译完
通用知识点
- 利息按日累计(实际/360 基准),并按月支付。
- 抵押品将代表客户存放在三方银行的托管账户中,并根据出借证券的市场变化每日重新计算。
- 出借证券对保证金/购买力/权益没有影响。
- 当客户出借其股票时,他们将丧失投票权。如果客户希望重新获得股东投票权,需要将其账户从 FPSL 中取消注册。
- 当股票被出借时,借款人有权获得股息。然而,出借人(客户)将收到“替代股息支付”,其税务规则可能与股息不同。
- 不能保证任何特定股票会被出借,因为这取决于借入需求,且利率随个别证券的供需变化。客户也不能选择出借哪些证券。注册适用于整个符合条件的投资组合。
- FPSL 仅在特定国家和模式中可用。如有疑问,请联系你的 Alpaca 联系人。
- 仅仅因为股票在可出借库存中,并不意味着所有股票都会被借出。可出借库存的使用取决于特定证券的市场需求。
- 通过供应商合作伙伴,Alpaca 向其出借股票的任何参与者都是持牌且受监管的经纪交易商、对冲基金或机构。
先决条件
使用 FPSL API 之前,请确保:
- 账户持有人必须满足 FPSL 的国家/地区资格要求。Alpaca 会验证税务居住国,对于法人实体则验证注册成立国。该账户不能是主账户下的关联账户。任何挂在主账户下的账户都会收到错误信息:
fpsl enrollment is not supported on customer subaccounts - 必须满足以下任一前提条件:
$2,500 in total account balance$20,000 in reported income$20,000 in liquid assetsStock investment experience reported as anything other than none
- 必需协议:账户必须已签署:
master_securities_lending_agreement
第 1 步:获取可用的 FPSL 层级
端点: GET /v1/fpsl/tiers
用途: 确定可用的 FPSL 层级。
关键注意事项:
- 层级由 Alpaca 在接入期间配置。合作伙伴不通过此 API 创建、更新或删除 FPSL 层级。
customer_split和partner_split分别表示各自在支付的利息收入总额中所占的百分比。例如,customer_split为 0.20 意味着如果某证券产生 10 美元利息收入,客户将获得该金额的 20%,即 2 美元。- 合作伙伴可以确定适当的
customer_split。
请求示例:
curl --location 'https://broker-api.sandbox.alpaca.markets/v1/fpsl/tiers' \
--header 'Authorization: Basic <your-credentials>'
查询参数:
tier_name(可选):精确的层级名称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.47",
"created_at": "2024-06-11T19:00:00.000000Z",
"updated_at": "2024-06-11T19:00:00.000000Z"
},
{
"id": "2F4EF316-E076-4389-BDCC-96033C69E707",
"tier_name": "regular",
"market": "US",
"customer_split": "0.10",
"partner_split": "0.57",
"created_at": "2024-06-11T19:00:00.000000Z",
"updated_at": "2024-06-11T19:00:00.000000Z"
}
[
筛选示例:
# Filter by market and tier name
curl --location 'https://broker-api.sandbox.alpaca.markets/v1/fpsl/tiers?market=US&tier_name=silver'
# Sort by partner split descending
curl --location 'https://broker-api.sandbox.alpaca.markets/v1/fpsl/tiers?sort_by=partner_split&direction=desc'
第 2.1 步:传达客户同意
与你的 Alpaca 联系人合作,确保你遵循传达客户同意的正确要求。
端点: POST v1/accounts/
端点: PATCH /v1/accounts/{account_id}
用途: 确认主证券借贷协议
关键注意事项:
revision是可选的,如果留空,将默认为最新修订号fpsl.status将在响应体中显示,有关此状态的更多详情请参见下文fpsl* 属性* 必须在注册时设置- 合作伙伴可以在同一调用中同意(签署 MSLA)并注册/分配层级,这适用于创建和修补
请求示例:
curl --location --request PATCH 'https://broker-api.sandbox.alpaca.markets/v1/accounts/{account_id}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic <your-credentials>' \
--data '{
"agreements": [
{
"agreement": "master_securities_lending_agreement",
"signed_at": "2024-07-11T18:09:33Z",
"ip_address": "185.13.21.99",
"revision": "<insert updated revision number>"
}
]
}'响应: 返回更新后的账户对象,HTTP 状态为 200 OK:
200 OK 第 2.2 步:注册账户
端点: PATCH /v1/accounts/{account_id}
用途: 将现有账户注册到 FPSL 计划
请求示例:
curl --location --request PATCH 'https://broker-api.sandbox.alpaca.markets/v1/accounts/{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
响应示例: 返回包含 FPSL 状态的更新后账户对象
{
"id": "cd1045f5-c5dc-4204-a906-633ec96df05b",
"account_number": "533888676",
"status": "ACTIVE",
"fpsl": {
"US": {
"status": "ACTIVE",
"tier_id": "5cd4d4cf-fda9-4949-99d7-9e4a4613dc2d"
}
}
}第 3 步:检查 FPSL 注册状态
重要:在开始此步骤之前,建议先尝试使用 SSE 请求的步骤 7。此特定方法更像是备用方案,以防你在 SSE 请求选项上遇到问题。
端点: 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 缺失 | 此账户从未注册过。 |
INACTIVE | 此账户已取消注册。 |
ACTIVE | 账户已注册且符合条件。 |
已注册账户片段:
{
"id": "4db36989-6565-4011-9126-39fe6b3d9bf6",
"fpsl": {
"US": {
"status": "ACTIVE",
"tier_id": "61e69015-8549-4bfd-b9c3-01e75843f47d"
}
}
}
第 4 步:修改 FPSL 注册
在同一调用中更改层级和退出将被拒绝。月中退出不会丧失股票已出借天数已赚取的利息。从下一个工作日起,退出账户的股票将不再提供出借,而任何现有证券借出将在借款人归还股票时关闭。
更改层级示例:
curl --location --request PATCH 'https://broker-api.sandbox.alpaca.markets/v1/accounts/{account_id}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic <your-credentials>' \
--data '{
"fpsl": {
"US": {
"tier_id": "aab75b22-6ac7-48cd-883d-7313afd1afcd",
"status": "ACTIVE"
}
}
}'
取消注册账户示例:
curl --location --request PATCH 'https://broker-api.sandbox.alpaca.markets/v1/accounts/{account_id}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic <your-credentials>' \
--data '{
"fpsl": {
"US": {
"status": "INACTIVE"
}
}
}'
重新注册账户示例:
curl --location --request PATCH 'https://broker-api.sandbox.alpaca.markets/v1/accounts/{account_id}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic <your-credentials>' \
--data '{
"fpsl": {
"US": {
"status": "ACTIVE"
}
}
}'
注意 - 如果重新注册时未指定tier_id,则重用先前分配的层级。
第 5 步:检索 FPSL 证券借出活动
端点: GET /v1/fpsl/loans
用途: 获取每日股票借贷活动和利息信息
请求示例:
curl --location 'https://broker-api.sandbox.alpaca.markets/v1/fpsl/loans?account_id={account_id}' \
--header 'Authorization: Basic <your-credentials>'
- 如果尚未计算证券借出的利息,
interest* 可以省略 - 当证券借出金额(包括利息)已调整时,
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": "cd1045f5-c5dc-4204-a906-633ec96df05b",
"account_number": "533888676",
"correspondent": "YOUR_CORRESPONDENT",
"symbol": "AAPL",
"quantity": 100,
"market_value": 15000.00,
"collateral": 15300.00,
"updated_at": "2024-07-12T05:00:00.000000Z",
"interest": {
"customer": 2.50,
"partner": 5.85
}
}
],
"next_page_token": "{value_to_send_to_continue_paging}"
}
第 6 步:获取每月 FPSL 利息活动
端点: GET /v1/accounts/activities/INT
用途: 获取 FPSL 的月末利息活动
请求示例:
curl --location 'https://broker-api.sandbox.alpaca.markets/v1/accounts/activities/INT?account_id={account_id}' \
--header 'Authorization: Basic <your-credentials>'
响应示例:
{
"id": "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
用途: 检索账户的计划状态历史
请求示例:
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 Securities LLC 签订主证券借贷协议之前,请仔细阅读关于参与全款证券借贷交易的重要风险披露。
这些披露描述了参与证券借贷交易的重要特征及相关风险。