股票持仓成本与盈亏计算
把一只股票的历次买卖记进来,摊薄成本价与移动加权成本价同时算,保本价、已实现、浮动、总盈亏、收益率一次出;已实现按加权结转与做T就近配对两种拆法并列,每笔卖出显示本笔盈亏与配对批次,多只标的看综合收益,账本存本机浏览器不上传
现价由你自己照券商 App 抄进来,所以结果只是「按你填的这个价格」的算术,不构成投资建议。
点任意一行就切到那只标的;「现价」一格直接改,按回车生效。长按一行(桌面也可以右键、或点行末的 ⋯)能改现价、改名或删除。
价格最多可填 3 位小数;数量按股填,写「50手」会自动换算成 5000 股。
批量粘贴的写法
横轴是「第几笔」不是真实时间;鼠标移到图上(手机按住不放)可逐笔查看。色块是现价与摊薄成本之间的浮盈浮亏,右端直接标出三条线的数值。
这张图怎么读
这条线只统计已经卖掉的部分,和还剩多少持仓无关;浮盈要看上面④的浮动盈亏。
这条线是怎么累计的
About this tool
The detailed write-up is currently available in Chinese only.
做过补仓、又高抛过几次的票,过一阵就想不起自己的成本到底是多少。券商 App 那个成本价,会把卖出赚到的钱冲抵进剩下的持仓,卖得贵就能把它压得很低、甚至压成负数;而「手上这批股票实际花了多少钱」是另一个数。这个工具把两个数同时算出来、摆在一张表里,谁高谁低一眼看得见。
用法分三步。第一步新建标的,代码名称自己填,只当标签用,页面不查任何数据库;「载入示例账本」放进来的是代码 000000 这类不存在的虚构标的,价格、日期和算出的盈亏都是编的,只用来演示算法。第二步记买卖:日期、方向、价格、数量四项,手续费留空就按你设的费率估,照交割单填实际发生额也行;流水长就整段粘进批量粘贴框,一行一笔,预览确认后再追加。第三步在「现价」那一格手抄一个价——本页不接行情,这个数由你填。填完,摊薄成本价、加权成本价、保本价、已实现盈亏、浮动盈亏、总盈亏、收益率一屏出齐;流水里每笔卖出另带一栏「本笔盈亏」,写清这笔配的是哪批买入,「已实现盈亏」那张卡还会把两种拆法并列给出。记着几只票时,第一张表最后一行给出合计与综合收益率。
两张图跟着流水走。一张把每笔买卖标在序列上,再叠两条成本线,哪一笔把成本摊下来、两条线什么时候分的家,图上看得出来;另一张是累计已实现盈亏的台阶线,只算已经落袋的那部分。账本存在这台设备的浏览器里,可导出 JSON 留备份、换设备再导进来接着记;计算、画图、导出全在本地完成,不请求后端接口、不取行情、不从 CDN 加载字体和图标,断网也能用。
先说清楚它不做什么:不接行情,现价由你填;不做除权除息、送转、分红,把调整后的价当作你填进去的那一笔;不判断涨跌、不给买卖建议,结果只对你填的流水成立,不构成投资建议;账本不进服务器,也不跨设备自动同步。
两个成本价和保本价怎么算(拿示例账本的数字走一遍,那份账本是虚构的)
摊薄成本价=(累计买入含费 − 累计卖出净额)÷ 当前持股数。示例那只「高抛摊薄」买一共花掉 317,282.47 元、卖出拿回 271,593.43 元,还剩 6,000 股,摊下来是 7.615 元;同一批股票的加权成本价是 22.821 元,因为卖出只是按比例把成本结转进已实现,剩下那批股票的成本不动。这两个数差得越远,说明高抛做得越多。示例账本里第 4 笔卖出之后摊薄成本一度是 −12.377 元——卖回的比买的还多,负成本是这个意思,不是算错。
保本价是在摊薄成本上再预留卖出那一趟的费用。默认费率下卖出侧合计 0.0760%(佣金万 2.5 + 印花税万 5 + 过户费十万分之一),7.615 ÷ (1 − 0.0760%) = 7.621 元,现价站上这个数才算把这单的费用跑平。
两条路对账:示例账本 4 只标的、14 笔操作,已实现 112,156.53 + 浮动 29,101.16 = 总盈亏 141,257.69 元;换现金流那条路算,市值 316,452.00 + 卖出净额 434,036.13 − 买入含费 609,230.43 = 141,257.70 元,两边只差 0.01 元,是分位取整造成的。综合收益率 23.19%(总盈亏 ÷ 累计投入)。单只看:「高抛摊薄」总盈亏 157,110.96 元、收益率 49.52%;「一路加仓」那只在现价 11.20 元时算出 −36,880.18 元、−20.36%;「已清仓」那只两笔做完,落袋 22,885.62 元、收益率 24.08%,两个成本价显示「—」,已经没有持仓可摊。
做T那笔到底赚了多少:已实现盈亏的两种拆法
同样一笔卖出,「这笔赚了多少」有两种算法,页面把它们并列放在「已实现盈亏」那张卡上。示例账本里最典型的是「高位做T」那只:12.56 元买 1,100 股,9.75 元补 200 股,涨到 10.71 元卖掉 100 股。加权结转按补仓后的均价 12.136 元结转这 100 股的成本,算出本笔 −148.10 元;做T就近配对(后买先卖)把这 100 股配到 9.75 元那批上,配对成本 977.51 元,本笔 +87.94 元。觉得「做T是赚的」说的是后者,券商那种把卖出盈亏冲回持仓的口径看到的是前者。
两个数不是谁对谁错,只是把同一份盈亏挪进不同栏。加权结转下剩下的 1,200 股成本还是 12.136 元,于是已实现 −148.10、浮动 −1,710.61;就近配对下这 100 股只从低价那批带走 977.51 元,剩下的成本变成 14,798.65 元,于是已实现 +87.94、浮动 −1,946.65。两边各自相加都是总盈亏 −1,858.71 元,一毛钱没多算也没漏算。⑧ 做T配对记录把每笔卖出配到哪一批、配多少股、差价和扣费后净差列成一张表,鼠标停在流水那行也能看到同一笔账。
全组合看:这 4 只标的、14 笔操作,加权结转口径的已实现合计 112,156.53 元,就近配对口径 124,878.51 元,总盈亏都是 141,257.69 元。已清仓那只两个口径给出同一个 22,885.62 元——持仓空了就没得拆。券商交割单实际结转的是哪一批以它为准,这里固定用最常见的一种拆法,不提供切换。
手续费怎么估、批量粘贴怎么写、能记多少
费率四个参数自己填:佣金费率、单笔最低佣金、印花税率(只在卖出收)、过户费率,默认万 2.5 / 最低 5 元 / 万 5 / 十万分之一。拿 12 万元的单子试算:买入 31.20 元(佣 30.00 + 过户 1.20),卖出 91.20 元(佣 30.00 + 印花 60.00 + 过户 1.20),一买一卖合计 122.40 元,双边约 0.102%。成交额小的时候最低佣金会顶上来:同一套费率,8,000 元的一买一卖是 14.16 元、占 0.177%,5,000 元的占 0.252%。和交割单对不上就在「手续费」那一格直接填实际发生额,流水里带 * 的行用的就是你填的数。每只标的还能单独设一套费率,不同券商、不同市场分开记。
批量粘贴每行一笔:日期 方向 价格 数量 [手续费]。方向写 买 / 卖 / buy / sell / b / s 都认;空格、逗号、Tab 都能当分隔符;1,000 这种千分位会先合成一个数,不会被拆成两列;日期支持 2024-3-11、2024/3/11、2024年3月11日、20240311,会自动规范成 2024-03-11,不写就按当天记。一行写错不影响其他行,解析预览逐行标出原因,确认后再追加。
容量与格式:最多 50 个标的,每个标的最多 500 笔操作;价格可填到 3 位小数,数量按股填、也可以直接写「50手」自动换算。示例账本这种 4 只票 14 笔的规模,导出的 JSON 约 2.2 KB。
常见问题
- 成本价怎么和券商 App 不一样?各家口径不统一,常见的是把卖出盈亏冲抵进成本(本页的摊薄成本价),也有直接显示加权成本或首次买入价的。本页两个都给,对照你券商那个数看哪个对得上,口径就定了。
- 做T明明赚了,已实现怎么还是负的?已实现默认走加权结转:卖出按持仓均价结转成本,低位补过仓,均价就被拉低到接近甚至低于卖价,高价卖的那笔也可能算出负数。它只说这一笔相对均价的差,不代表做T亏了;同一张卡上并列的「做T就近配对」把这笔配到后买的那批低价仓,就是正数,两种拆法加出来的总盈亏一样。
- 摊薄成本是负数正常吗?正常,说明累计卖出净额已经超过累计买入含费,这批仓位早回本了。这时保本价没有意义,页面显示「—」并写明「卖多少都增盈」。
- 为什么不接行情?接行情要服务端和接口成本,价格还会过时;记账要的是「你按哪个价算的」。现价手填,改了才重算,想对照不同价位下的浮盈就改这一个数。
- 除权除息、送转、分红怎么算?不做,这些要靠外部数据判断。把调整之后的成交价、到账的现金当作一笔自己填进去,口径就对了。
- 清浏览器数据后账本还在吗?不在,数据只在本机。定期「导出账本 JSON」,换设备用「导入 JSON」整本恢复,导入是替换全部、会先问你一句。
- 超卖、格式错会怎样?有问题的那笔不参与计算,流水里是灰色行、标的行的小字会写「N 笔待改」,长按那一行(桌面也可以右键、或点行末的 ⋯)选「改这一笔」,填对后自动消失。
- 已实现和浮动各是什么?已实现是卖掉那部分落袋的盈亏(卖出净额减结转的成本),浮动是还没卖的那部分按现价算的差额,两个加起来就是总盈亏。
- 示例账本里的股票是真的吗?不是。代码故意写成
000000、002000、300000、688000——分别是深市主板、原中小板、创业板、科创板首个发行号(000001、002001、300001、688001)的前一号,交易所不会发出来;名称、现价、买卖日期和由此算出的盈亏全部是虚构的,只用来演示两种成本价和两种拆法怎么跑,不对应任何真实股票,也不代表任何真实收益。这个页面不判断涨跌、不给买卖建议,不构成投资建议。
同一套「把自己填的数算清楚」的思路换个场景也用得上:算月供看 房贷月供计算,算税率看 个税计算,算涨幅占比看 百分比计算,滚动存钱看 复利计算,数持有交易日看 工作日计算器;更多生活类工具在 生活工具。