什么是持仓成本?跨交易所如何追踪
持仓成本就是你为一笔投资付出的钱,包含手续费。本文讲清它怎么计算、为什么转币会让成本丢失,以及怎样在多个账户里把它记准。
作者:Sonar team阅读约 7 分钟
持仓成本(英文叫 cost basis,也常说"成本基础")是你买入一笔投资付出的全部金额,包括佣金和手续费;除以数量,就是 App 里常见的持仓均价。它是计算盈亏的起点:当前市值减去持仓成本是浮动盈亏,卖出所得减去所卖部分的成本是已实现盈亏。跨交易所追踪它,意味着记录每一笔买入,并且在账户之间转移资产时,让原始成本跟着资产一起走。
这篇指南介绍这个概念、常见的计算方法,以及成本容易丢失的地方。它说明的是原理,不构成税务建议,各国规则也不相同。
持仓成本包括什么
美国金融业监管局(FINRA)的投资者指南《Cost Basis Basics》把它描述为买入价格(包括再投资的分红),加上为完成交易支付的佣金和其他费用。
实际中包括:
- 支付的价格,即股票或加密货币的价款。
- 买入时的佣金和手续费。
- 分红再投资,这部分新买入的份额有自己的成本。
之后还可能被调整,比如拆股(总成本不变,股数变多)。
总成本和持仓均价
- 总成本: 为一个仓位付出的全部金额。例:以 3,000 美元买入 10 股,手续费 5 美元,总成本 3,005 美元。
- 持仓均价: 总成本除以数量,这里是每股 300.50 美元。
两者描述的是同一件事。券商通常显示均价;计算盈亏时,需要的是每次卖出对应的总成本。
为什么持仓成本很重要
- 它告诉你真实的盈亏。 市值 5,000 美元的仓位,如果成本是 3,000 美元就是盈利,成本是 7,000 美元就是亏损。
- 在多数国家,卖出时计算税款需要它。 例如在美国,美国国税局(IRS)把数字资产视为财产,其数字资产页面说明,经纪商须就 2025 年 1 月 1 日起的交易在 1099-DA 表上申报收入总额,并自 2026 年 1 月 1 日起就部分交易申报成本。各地规则不同,具体请咨询当地税务机关或专业人士。
- 它让表现更真实。 没有成本,工具只能显示市值,无法显示利润。
分多次买入时怎样计算
很少有人一次性买够一种资产。卖出一部分时,问题在于卖掉的是哪几笔买入。常见方法:
| 方法 | 先卖出哪部分 | 说明 |
|---|---|---|
| 先进先出(FIFO) | 最早买入的部分 | 许多地方的默认方法 |
| 个别认定 | 你自己指定的批次 | 需要能区分每一批的记录 |
| 加权平均成本 | 每一单位都按仓位的平均成本计 | 简单;券商显示的持仓均价通常就是这种逻辑 |
允许使用哪种方法,取决于资产类型和所在地区。用于税务之前,请先向税务机关或专业人士确认。
计算示例
以下为说明用的虚构示例,以美元计。你分两次买入 ETH,之后卖出一部分:
| 时间 | 操作 | 数量 | 价格 | 手续费 | 成本 |
|---|---|---|---|---|---|
| 3 月 | 买入 | 2 ETH | 2,000 美元 | 10 美元 | 4,010 美元 |
| 8 月 | 买入 | 1 ETH | 3,000 美元 | 8 美元 | 3,008 美元 |
| 12 月 | 卖出 | 1.5 ETH | 3,600 美元 | 9 美元 | — |
卖出所得:1.5 × 3,600 美元 − 9 美元 = 5,391 美元。
- 先进先出: 这 1.5 ETH 来自 3 月那一批。成本 = 1.5 ÷ 2 × 4,010 美元 = 3,007.50 美元。已实现收益 = 5,391 美元 − 3,007.50 美元 = 2,383.50 美元。
- 加权平均: 7,018 美元 ÷ 3 ETH = 每 ETH 2,339.33 美元。1.5 ETH 的成本 = 3,509 美元。已实现收益 = 5,391 美元 − 3,509 美元 = 1,882 美元。
- 个别认定(先卖 8 月那批,再从 3 月那批卖 0.5 ETH):成本 = 3,008 美元 + 1,002.50 美元 = 4,010.50 美元。已实现收益 = 1,380.50 美元。
同样的交易,三种结果。所以记录很重要,方法也必须前后一致。
为什么跨交易所时成本会丢失
加密货币投资者会遇到一个特有的问题:交易所只知道发生在自己平台上的事。
- 转入的币没有成本。 你在一个交易所买了 BTC,转到另一个交易所,后者看到的是一笔充值,而不是买入,成本可能显示为未知或零。
- 钱包不记录价格。 自托管钱包显示的是链上交易,而不是你花了多少钱。
- 币币兑换通常意味着结束一个仓位,并以当时的市价开始一个新仓位。
- 质押奖励和空投会增加数量,而这部分成本怎么算取决于当地规则。
- 关闭的账户如果没导出,历史记录也会一起消失。
解决办法是自己保留一份跟着资产走、而不是跟着账户走的记录。
在多个账户中追踪持仓成本的方法
- 从每个交易所和券商导出完整历史,包括不再使用的账户。参见如何把交易记录导出为 CSV。
- 把所有账户集中到一个地方,让一个账户的提币和另一个账户的充值能被识别为一次转账。参见如何在一个地方统一管理加密货币和股票。
- 把自己账户之间的转账配对,让原始成本跟着币走,而不是被重置。
- 记录奖励和空投收到时的价值,按当地规则处理。
- 每年核对一次。 确认每种资产的数量和账户一致,没有哪一批缺少成本。
Sonar 怎样处理持仓成本
Sonar 为每个持仓保存成本:来自你导入的 CSV(会读取总成本或平均成本列),来自通过 Plaid 连接、且券商提供了成本的证券账户,或者来自你手动录入的持仓。浮动盈亏就是当前市值减去这个成本。


对于卖出,Sonar 按每个账户、每种资产的加权平均成本计算已实现盈亏。如果有成本未知的数量进入(转入、奖励、没有价格的买入),Sonar 会把成本标为"未知",而不是去猜。缺口一目了然,你可以之后补上。
Sonar 是投资组合管理工具,不是报税软件,它按平均成本算出的结果,可能和你所在地税法要求的方法不同。你可以随时把交易导出为 CSV,交给表格、会计师或报税工具。Sonar 支持的格式见从 CSV 导入组合,也可以在演示组合里试试。
常见错误
- 漏算手续费。 买入手续费增加成本,卖出手续费减少所得。
- 把转账当成买入。 成本会被换成转账当天的价格。
- 丢失旧交易所的历史。 关闭账户前先导出。
- 混用方法。 在先进先出和平均成本之间切换会改变结果,也可能与税务规则冲突。
- 忘了拆股和分红再投资。 两者都会改变持仓均价。
常见问题
持仓成本就是我买入的价格吗?
差不多。它是价格加上佣金和手续费,并根据分红再投资、拆股等事件调整后的结果。
把币转到另一个交易所,成本会怎样?
本来什么都不该变:自己账户之间的转账不是卖出。问题在于接收方交易所不知道原始成本。自己保留记录,或者用能同时看到两个账户的工具。
"成本未知"是什么意思?
意思是平台持有一些无法对应到任何买入的数量,通常来自转入、奖励,或者早于你记录开始时间的历史。补上原始成本之前,这部分的盈亏无法计算。
平均成本和先进先出结果一样吗?
很少一样。如果价格一路上涨,先进先出在单次卖出时通常显示更高的收益,上面的例子就是这样。一个仓位从建仓到全部卖出,总收益是一样的,不同的只是收益在什么时候体现。
相关页面
- 如何计算投资组合收益率(时间加权与资金加权)用具体例子讲清简单收益率、时间加权收益率(TWR)和资金加权收益率(MWR,即内部收益率)的区别,避免入金和出金让你误判投资表现。
- 如何把 Coinbase 和 Kraken 的交易记录导出为 CSV分步骤从 Coinbase、Kraken 和券商导出交易记录,说明一份好的 CSV 应该包含什么,以及怎样避免把文件弄坏。
- 用 CSV 导入投资组合,支持券商与各类应用用 CSV 导入持仓或完整交易历史。支持 Koinly、CoinTracker、Delta 和 Kubera 预设、券商导出文件,以及从电子表格粘贴的行。
- 加密货币投资组合追踪,钱包与交易所一站管理只读的加密货币投资组合追踪。50 多条网络上的钱包,加上无需 API 密钥、通过 Plaid 连接的交易所,集中显示每个币的盈亏和你的资产配置。