Skip to main content

OmniSub 的 FPSL 集成指南

机器翻译译自英文(docs.alpaca.markets)本页 69 段已全部译完

通用知识点

  • 利息按日累计(实际/360 基准),并按月支付。
  • 抵押品将代表客户存放在三方银行的托管账户中,并根据出借证券的市场变化每日重新计算。
  • 出借证券对保证金/购买力/权益没有影响。
  • 当客户出借其股票时,他们将放弃投票权。如果客户希望重新获得股东投票权,需要将其账户从 FPSL 中取消注册。
  • 当股票被出借时,借款人有权获得股息。然而,出借人(客户)将收到“替代股息支付”,其税务规则可能与股息不同。
  • 不能保证任何特定股票会被出借,因为这取决于借入需求,且利率随个别证券的供需变化。客户也不能选择出借哪些证券。注册适用于整个符合条件的投资组合。
  • FPSL 在 Alpaca 批准的国家可用。请与你的 Alpaca 联系人确认你的目标市场。
  • 仅仅因为股票在可出借库存中,并不意味着所有股票都会被借出。可出借库存的使用取决于特定证券的市场需求。
  • 通过供应商系统,Alpaca 向其出借股票的任何参与者都是持牌且受监管的经纪交易商、对冲基金或机构。

角色与职责

任务Alpaca合作伙伴
存档每个客户的借贷协议不收集必须收集并留存
要求合作伙伴与子账户分享收入要求合作伙伴分享收入必须与子账户分享收入
单个客户资格测试不执行必须执行
税务居住国检查不执行必须执行
向你的客户展示所需披露不核实必须展示
依据 FINRA Rule 4330 的适当性计划不执行必须执行
证明单个客户同意的监督记录不留存必须留存

先决条件

在 OmniSub 上使用 FPSL API 之前,请确保:

  1. 你的代理机构已注册到 Alpaca 的 OmniSub 配置中。这是独立于开启 FPSL 的单独启用步骤,由你的 Alpaca 联系人执行,并将你的代理机构映射到特定的主账户。
  2. 每个终端客户由一个子账户表示。在 OmniSub 代理机构下,其他任何账户类型都不得注册 FPSL。
  3. 所需协议:在账户层面无需任何协议。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
你的代理机构未启用 FPSLcorrespondent 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-DD
  • end*(可选):排除结束日期,格式为 YYYY-MM-DD
  • limit(可选):页面大小
  • 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} 验证状态变化

重要说明

  1. 收入分成: 收入根据合作伙伴分配给该子账户的层级配置,在合作伙伴、子账户客户和 Alpaca 之间分成。
  2. 抵押品: 每笔借贷自动提交抵押品,并按第 5 步所述分配到你的子账户。
  3. 账户状态与借贷效果: 子账户的注册、层级更改和退出将立即反映在该账户的响应和 SSE 流中。借贷效果不是即时的。新注册的子账户在下一个工作日的可出借库存计算之前不贡献股票,退出的子账户从下一个工作日起停止接收新借贷,现有借贷将在借款人归还股票时关闭。
  4. 合作伙伴份额的去向: 合作伙伴的份额通过月度发票结算。使用 OM 借贷数据进行归属。不要汇总活动行,因为合作伙伴份额没有活动行。

在决定是否参与出借全额支付证券或同意与 Alpaca Securities LLC 签订主证券借贷协议之前,请仔细阅读关于参与全额支付证券借贷交易的重要风险披露。

这些披露描述了参与证券借贷交易的重要特征及相关风险。

OmniSub 产品由 AlpacaDB, Inc. 作为与综合清算服务相关的子账户核算技术服务提供。该技术服务的审批须经 Alpaca Securities LLC 尽职调查审核。