本页只译了一部分
本页 56 段里还有 1 段没译成简体中文,没译的段落显示英文原文。投资组合再平衡
机器翻译译自英文(docs.alpaca.markets)本页 56 段里 1 段还没译
再平衡 API 为投资顾问提供了一种简便方式,可创建自动更新至指定现金、股票代码百分比权重、再平衡条件和所选触发器的投资组合。在我们进入再平衡流程概述之前,请先看下面的一些定义:
- 投资组合:包含证券和/或现金的配置,具有特定的权重和需满足的条件
- 订阅:账户可以订阅已创建的投资组合,并跟随再平衡事件以确保账户与目标投资组合保持同步
- 运行:一次运行是一组为达成目标而发送执行的订单(清算指定金额以备提现,或进行完全再平衡至目标配置)
📘 再平衡 API 资源
再平衡类型
再平衡 API 提供两种类型的再平衡条件:
- 漂移带:当投资组合突破特定阈值时,无论经过多长时间,投资组合都会被调整。例如,如果我们为一个投资组合设置 +/- 10% 的带,当其中一个持仓达到阈值时,我们会自动调整整个投资组合。
- 日历:在所需周期,系统会分析投资组合的状态,并将投资组合再平衡至默认投资组合。例如,在 4 月 1 日,我们 50:50 的 AAPL TLT 投资组合变成了 55:45,因此我们需要卖出 TLT 并买入更多 AAPL,以恢复到 50:50 的期望敞口状态。
创建投资组合
要创建投资组合,请使用创建投资组合 POST 端点。
请参阅下面的示例请求负载,以创建包含现金和证券混合的投资组合:
{
"name": "Balanced",
"description": "A balanced portfolio of stocks and bonds",
"weights": [
{
"type": "cash",
"percent": "5"
},
{
"type": "asset",
"symbol": "SPY",
"percent": "60"
},
{
"type": "asset",
"symbol": "TLT",
"percent": "35"
}
],
"cooldown_days": 7,
"rebalance_conditions": [
{
"type": "drift_band",
"sub_type": "absolute",
"percent": "5"
},
{
"type": "drift_band",
"sub_type": "relative",
"percent": "20"
}
]
}执行后,你可以在类似下面的响应负载中找到投资组合 ID。在本例中,我们新创建的投资组合 ID 是 2d49d00e-ab1c-4014-89d8-70c5f64df2fc。订阅账户以跟随这个新投资组合时需要用到它:
{
"id": "2d49d00e-ab1c-4014-89d8-70c5f64df2fc",
"name": "Balanced Two",
"description": "A balanced portfolio of stocks and bonds",
"status": "active",
"cooldown_days": 7,
"created_at": "2022-08-07T14:56:45.116867815-04:00",
"updated_at": "2022-08-07T14:56:45.196857944-04:00",
"weights": [
{
"type": "cash",
"symbol": null,
"percent": "5"
},
{
"type": "asset",
"symbol": "SPY",
"percent": "60"
},
{
"type": "asset",
"symbol": "TLT",
"percent": "35"
}
],
"rebalance_conditions": [
{
"type": "drift_band",
"sub_type": "absolute",
"percent": "5",
"day": null
},
{
"type": "drift_band",
"sub_type": "relative",
"percent": "20",
"day": null
}
]
}
你也可以使用列出所有投资组合端点列出你创建的所有投资组合。
订阅账户以跟随投资组合
创建投资组合后,下一步是订阅给定账户以跟随某个投资组合。这将确保该账户在满足再平衡条件时执行必要的订单。
要订阅账户以跟随新创建的投资组合及其再平衡条件,你需要创建一个新订阅。例如,要将账户 ID bf2b0f93-f296-4276-a9cf-288586cf4fb7 订阅到新创建的投资组合,请使用创建订阅端点并附上以下 JSON 请求负载:
{
"account_id": "bf2b0f93-f296-4276-a9cf-288586cf4fb7",
"portfolio_id": "57d4ec79-9658-4916-9eb1-7c672be97e3e"
}检查再平衡事件
账户订阅投资组合后,我们需要等待第一次再平衡事件发生。我们可以使用列出所有运行端点查看所有账户已完成的再平衡事件。
curl --location --request GET '{{HOST}}/v1/beta/rebalancing/runs?status=COMPLETED_SUCCESS' \
--header 'Authorization: Basic <TOKEN>' \
--data-raw ''请参阅成功运行的示例请求负载:
{
"runs": [
{
"id": "36699e7f-56a0-4b87-8e03-968363f4b6df",
"type": "full_rebalance",
"amount": null,
"initiated_from": "system",
"status": "COMPLETED_SUCCESS",
"reason": null,
"account_id": "b3130eeb-1219-46f3-8bfb-7715f00d736b",
"portfolio_id": "4ad7d634-a60d-4e6e-955f-3c68ee24d285",
"weights": [
{
"type": "cash",
"symbol": null,
"percent": "5"
},
{
"type": "asset",
"symbol": "SPY",
"percent": "60"
},
{
"type": "asset",
"symbol": "TLT",
"percent": "35"
}
],
"orders": [
{
"id": "c29dd94b-eaaf-4681-9d1f-4fd47571804b",
"client_order_id": "cb2d1ff5-8355-4c92-84d7-dfff43f44cb2",
"created_at": "2022-03-08T16:51:07.442125Z",
"updated_at": "2022-03-08T16:51:07.525039Z",
"submitted_at": "2022-03-08T16:51:07.438495Z",
"filled_at": "2022-03-08T16:51:07.520169Z",
"expired_at": null,
"canceled_at": null,
"failed_at": null,
"replaced_at": null,
"replaced_by": null,
"replaces": null,
"asset_id": "3b64361a-1960-421a-9464-a484544193df",
"symbol": "SPY",
"asset_class": "us_equity",
"notional": "30443.177578017",
"qty": null,
"filled_qty": "72.865432211",
"filled_avg_price": "417.8",
"order_class": "",
"order_type": "market",
"type": "market",
"side": "buy",
"time_in_force": "day",
"limit_price": null,
"stop_price": null,
"status": "filled",
"extended_hours": false,
"legs": null,
"trail_percent": null,
"trail_price": null,
"hwm": null,
"subtag": null,
"source": null
},
{
"id": "ab772dcb-b67c-4173-a5b5-e31b9ad236b5",
"client_order_id": "d6278f6c-3010-45ce-aaee-6e64136deec0",
"created_at": "2022-03-08T16:51:07.883352Z",
"updated_at": "2022-03-08T16:51:07.934602Z",
"submitted_at": "2022-03-08T16:51:07.877726Z",
"filled_at": "2022-03-08T16:51:07.928907Z",
"expired_at": null,
"canceled_at": null,
"failed_at": null,
"replaced_at": null,
"replaced_by": null,
"replaces": null,
"asset_id": "a106d0ef-e6f2-4736-8750-5dee1cadf75b",
"symbol": "TLT",
"asset_class": "us_equity",
"notional": "17121.076868834",
"qty": null,
"filled_qty": "124.408348124",
"filled_avg_price": "137.62",
"order_class": "",
"order_type": "market",
"type": "market",
"side": "buy",
"time_in_force": "day",
"limit_price": null,
"stop_price": null,
"status": "filled",
"extended_hours": false,
"legs": null,
"trail_percent": null,
"trail_price": null,
"hwm": null,
"subtag": null,
"source": null
}
],
"completed_at": null,
"canceled_at": null,
"created_at": "2022-03-08T16:36:07.053482Z",
"updated_at": "2022-03-08T16:51:08.53806Z"
},
...
],
"next_page_token": 100
}
📘 注意
流入账户的现金(存款、现金日记账等)将触发买入交易以减少漂移。
手动触发再平衡事件(运行)
再平衡 API 会自动配置系统来监视投资组合的再平衡条件并执行必要的订单。要手动执行再平衡运行,请参阅创建运行端点。
🚧 目前仅允许没有活跃订阅的账户手动执行运行。
投资组合再平衡评估
投资组合会根据特定条件被评估是否需要进行潜在再平衡,这些条件按既定顺序进行检查。
前提条件:
-
状态:
- 只有状态为
active的投资组合才会被纳入评估。 - 如果在再平衡期间发现投资组合中的某个资产处于非活跃、不可碎股或不可交易状态,该投资组合的状态会自动转换为
needs_adjustment。
- 只有状态为
-
需要更改:
needs_adjustment状态的投资组合会被排除在评估之外。要重新启用此类投资组合的评估,你必须先使用PATCH请求将其状态更新回active。 -
权重:
- 投资组合权重的
percent必须大于零。 - 如果现金类型权重的 percent 被设置为零,它将自动从投资组合配置中移除。
- 投资组合权重的
评估顺序和条件:
系统会按顺序检查以下条件。第一个满足的条件可能触发再平衡(或使投资组合进入需要再平衡的状态):
in_cooldown:检查投资组合当前是否处于上一次再平衡后定义的冷却期内。若为真,此周期的评估可能在此停止。calendar:基于预定义的间隔检查是否计划再平衡:- 每年
- 每季度
- 每月
- 每周
drift_band:检查投资组合资产配置是否偏离超出配置的阈值:absolute:以绝对百分点衡量的偏离(例如,如果目标为 10%,对于 2% 的绝对阈值,当配置低于 8% 或高于 12% 时触发漂移)。relative:相对于目标配置百分比衡量的偏离(例如,如果目标为 10%,对于 10% 的相对阈值,当配置低于 9% 或高于 11% 时触发漂移)。
重要注意事项:
- Minimum Order Size: Be aware that a minimum order value (often around $1 per asset) typically applies during rebalancing trades. This means sufficient cash balance is required to execute orders across potentially many assets. An estimated minimum cash need could be
(Number of Assets in Portfolio) * $1. Plan account funding accordingly, especially for portfolios with many assets.
每日处理运行
投资组合每天被评估以执行两种互斥处理运行之一:full_rebalance 或 invest_cash。每个投资组合每天只能执行一种类型的运行。系统按以下顺序检查资格:
full_rebalance:为使投资组合的当前持仓尽可能接近其目标权重,它将同时执行买入和卖出订单。(注意:此运行通常基于投资组合漂移或其他再平衡标准触发)。请注意,可能会在目标权重之上叠加现金缓冲,以覆盖必要费用和应对市场波动的储备。invest_cash:如果未执行full_rebalance,系统会检查是否可以执行invest_cash运行。这要求投资组合的账户拥有超过 10 美元的可用现金余额。如果触发,invest_cash只执行买入订单,利用可用现金将投资组合的配置向目标权重靠拢。这每天最多发生一次。
常见问题
问:再平衡运行所需的最低现金是多少?
要执行再平衡运行,投资组合中每个资产必须至少有 1 美元。
示例 1 - 一个由 50% AAPL、25% TSLA、25% GOOGL 组成的投资组合
如果满足所有其他再平衡条件和冷却天数,则只有存入每个资产至少 1 美元时才会触发一次再平衡运行。低于此金额则不会触发再平衡。
示例 2 - 一个由 50% AAPL、25% TSLA、25% 现金组成的投资组合
如果满足所有其他再平衡条件和冷却天数,则只有存入每个资产至少 1 美元时才会触发一次再平衡运行。低于此金额则不会触发再平衡。
要执行 invest_cash 运行,必须至少存入 10 美元。对于 invest_cash 运行,可以更改 10 美元阈值并禁用此处理运行类型;请联系 Alpaca 团队成员进行此操作。
问:再平衡是否可以对满足最小名义金额的部分资产运行,而对不满足最小名义金额的资产不运行?
是的。如果一个投资组合有 11 个资产,但只存入了 10 美元,则可能进行部分再平衡,仅为 10 个资产执行交易。
问:Alpaca 的再平衡任务或 invest_cash 任务何时运行?
当首次向投资组合投入现金(且满足最低现金要求)时,将执行一次 full_rebalance 类型的再平衡任务。
此后,如果投资至少 10 美元(或其他 invest_cash 阈值),无论投资组合的再平衡条件和冷却期如何,都会运行 invest_cash 任务。
冷却期过后,如果满足再平衡条件,则会运行再平衡任务。
再平衡任务和 invest_cash 任务均在美东时间上午 9:30 至下午 3:30 之间运行。
问:如果用户想平仓并取出资金,现金提现的步骤是什么?
步骤如下:
- 使用 https://broker-api.sandbox.alpaca.markets/v1/rebalancing/subscriptions/{subscription_id} DELETE 请求取消订阅该用户。
- 使用 https://broker-api.sandbox.alpaca.markets/v1/rebalancing/runs POST 请求以修订后的投资组合权重执行一次手动运行。
- 等待所需金额变为可提现现金,然后向 https://broker-api.sandbox.alpaca.markets/v1/trading/accounts/{account_id}/account 发起 GET 请求并检查 cash_withdrawable 是否具有所需金额。
*注:交易记入的金额将在下一个交易日(T+1)可供提现。
- 使用 https://broker-api.sandbox.alpaca.markets/v1/journals POST 请求将资金从用户账户划转至公司账户。
- 使用 https://broker-api.sandbox.alpaca.markets/v1/rebalancing/subscriptions POST 请求重新订阅该用户的投资组合。
问:在什么情况下再平衡器可能停止再平衡我的投资组合?
如果你的账户遇到某些阻止交易活动的限制,再平衡器可能会停止运行。这些限制包括:
- ACH 退回:当你的银行退回 ACH 存款时,你的账户会被自动限制,从而导致你账户的交易受阻。
- 持仓权益比率超限: 该比率计算公式为 (position_market_value / equity)。如果该比率超过允许的最大限值(6:1),账户将在购买力验证期间被限制。
- 加密货币交易限制: 当账户被限制为只能对加密货币交易进行清算时设置。
- 期权交易限制:当账户被限制为只能对期权交易进行清算时设置。
- 未指明的限制: 其他不可预见的问题也可能导致交易限制。
为确保再平衡运行功能的持续可用,监控账户的这些情况并及时解决任何问题至关重要。