持仓平均入场价格计算
机器翻译译自英文(docs.alpaca.markets)本页 52 段已全部译完
描述
持仓的平均入场价格和成本基础在持仓端点的 avg_entry_price 和 cost_basis 字段中返回。
{
"asset_id": "904837e3-3b76-47ec-b432-046db621571b",
"symbol": "AAPL ",
"exchange": "NASDAQ",
"asset_class": "us_equity",
"avg_entry_price": "100.0",
"qty": "5",
"qty_available": "4",
"side": "long",
"market_value": "600.0",
"cost_basis": "500.0",
"unrealized_pl": "100.0",
"unrealized_plpc": "0.20",
"unrealized_intraday_pl": "5.0",
"unrealized_intraday_plpc": "0.0084",
"current_price": "120.0",
"lastday_price": "119.0",
"change_today": "0.0084"
}有多种方法可用于计算持仓的成本基础和平均入场价格,例如 Strict FIFO、Compressed FIFO、Weighted Average 等。每种方法在卖出交易后计算成本基础和平均入场价格时都有各自的规则。本页旨在阐明 Alpaca 使用哪种方法。
Alpaca 使用哪种方法?
严格 FIFO(先进先出)
在严格 FIFO 方法下,先买入的持仓先卖出。让我们了解它是如何工作的:
卖出后的成本基础通过从先前的成本基础中扣除第一个未平仓持仓的价格乘以卖出数量来计算。在严格 FIFO 中,卖出数量使用第一个未平仓持仓来覆盖,但是,如果第一个未平仓持仓的数量不足以覆盖卖出数量,则使用后续的未平仓持仓。
示例:
假设我们有以下交易:
第 1 天:
- 以每股 10 美元买入 100 股(成本基础 = 1,000 美元)
- 以每股 12 美元买入 50 股(成本基础 = 600 美元)
第 2 天:
- 以每股 15 美元买入 30 股(成本基础 = 450 美元)
第 3 天:
- 卖出 120 股
卖出交易后:
- 成本基础:
2050 - 100*10 - 20*12=$810 - 平均入场价格:
cost_basis/qty_left=810/60=$13.5
压缩 FIFO(先进先出)
压缩 FIFO 方法遵循与严格 FIFO 类似的规则,但有一个关键区别。它使用加权平均来压缩日内持仓。让我们看看它有何不同:
示例 1:
使用之前的同一示例:
第 1 天:
- 以每股 10 美元买入 100 股(成本基础 = 1,000 美元)
- 以每股 12 美元买入 50 股(成本基础 = 600 美元)
第 2 天:
- 以每股 15 美元买入 30 股(成本基础 = 450 美元)
第 3 天:
- 卖出 120 股
卖出交易后:
- 成本基础:
2050 - 120*(100*10 + 50*12)/150=$770 - 平均入场价格:
cost_basis/qty_left=770/60=$12.83
如你所见,第 1 天的持仓被压缩为总共 150 股,平均价格为 (100*10 + 50*12)/150。
示例 2
第 1 天:
- 以每股 10 美元买入 100 股(成本基础 = 1,000 美元)
- 以每股 9 美元买入 50 股(成本基础 = 450 美元)
- 卖出 50 股
- 以每股 11 美元买入 50 股(成本基础 = 550 美元)
第 1 天结束时:
- 成本基础:
2000 - 50*(100*10 + 50*9 + 50*11)/200=$1,500 - 平均入场价格:
1500/150=$10
加权平均
加权平均方法基于每股加权平均价格计算成本基础。其工作方式如下:
卖出时:被卖出数量的成本基础通过扣除卖出数量乘以账户所持所有未平仓持仓的平均入场价格来计算。
示例:
使用之前的同一示例:
第 1 天:
- 以每股 10 美元买入 100 股(成本基础 = 1,000 美元)
- 以每股 12 美元买入 50 股(成本基础 = 600 美元)
第 2 天:
- 以每股 15 美元买入 30 股(成本基础 = 450 美元)
第 3 天:
- 卖出 120 股
卖出后,基于加权平均方法的计算结果将是:
- 成本基础:
2050 - 120*(100*10 + 50*12 + 30*15)/180=$683.33 - 平均入场价格:
cost_basis/qty_left=683.33/60=$11.39
常见问题
为什么持仓的 avg_entry_price 和 cost_basis 在第二天发生了变化?
正如Alpaca 使用哪种方法?中所述,用于确定 avg_entry_price 和 cost_basis 的计算方法在 intraday positions 与 end-of-day positions 之间有所不同。因此,某个持仓的 avg_entry_price 和 cost_basis 字段在最后一笔交易发生后的第二天可能会发生变化。该变化发生在我们的开盘(BOD)任务执行并从我们的账本同步持仓之时。有关开盘(BOD)任务执行时间的详细信息,请参阅每日流程与对账。