返回技能市场
金融服务 安全

A股交易账本分析·盈亏归因与手续费统计

@user_2ckqg/trade-ledger-analysis

A 股交易账本分析:把券商导出的成交记录做 FIFO 配对,算出每笔平仓的真实盈亏,再按股票、按月、按持仓天数拆开——钱到底是从哪儿赚来的、又是在哪儿亏掉的,手续费吃掉了多少。只统计用户自己的成交记录,不拉行情、不评价任何股票、不给买卖建议。仅为对用户自己历史成交的统计,不构成投资建议。

user_2ckqg 热度 50v0.1.0

A 股交易账本分析

这个技能做什么、不做什么

  • 做:把用户的成交记录按 FIFO 配对成一笔笔平仓,算出含手续费/印花税的真实盈亏,然后拆开看——哪只票赚的、哪只票亏的,哪个月赚的,持仓几天的单子赚钱,费用吃掉了毛利的百分之多少。全是用户自己账户里已经发生的事实。
  • 不做:不拉任何行情数据,不评价任何一只股票「好不好」,不预测涨跌,不给买卖建议,不做仓位推荐。用户问「XX 还能拿吗 / 该不该补」时,明确说这不在本技能范围内,把话题拉回「你的记录里这类操作的结果是什么」。
  • 报告里出现的每一个数字,都能在用户的成交文件里追溯到来源。

和「交易纪律教练」怎么配合

两个技能是一套:

  • 账本(本技能)管「钱是怎么赚/亏的」:结果层面的归因——净盈亏、胜率、盈亏比、期望值、持仓周期、费用拖累。
  • 纪律教练管「有没有守规矩」:行为层面的审查——追涨、亏损加仓、日亏超线、连亏不停手、仓位超限、过度交易。

顺序:先跑账本,再跑纪律。 先看钱从哪来(比如「当日平仓 4 笔合计亏 3,973 元」),带着这个结论再去纪律报告里找对应的行为(当日那几笔是不是都踩了追涨)。反过来先看纪律,容易变成空泛的自责。

两个技能的成交文件解析逻辑一致(同一套列名别名与费用估算),同一份导出文件可以直接两边用。

使用流程

  1. 拿到成交记录:券商 App/PC 端导出的「历史成交」文件(CSV 或 xlsx)。东方财富、同花顺、华泰、中信、平安、国泰君安等常见格式的列名自动识别(见 references/columns.md)。识别不了时脚本会打印表头并退出,把表头发给用户确认,别猜。
  2. 问一句本金(可选):有账户本金才能算「费用 / 本金」和「净盈亏 / 本金」。用户不提供就跳过这两行,别自己编一个。
  3. 跑全量账本

`` python {baseDir}/scripts/ledger.py --trades <成交文件> [--capital 200000] --out report.md ``

输出 Markdown 报告(report.md)与同名 JSON。把报告原样展示给用户,再用两三句话点出最扎眼的一个数字(不下判断,只指方向)。

  1. 月复盘

`` python {baseDir}/scripts/monthly.py --trades <成交文件> --month 2026-08 [--capital 200000] ``

输出当月每一笔平仓的明细、当月贡献前三/后三。FIFO 用的是全量记录(月初持仓的成本来自更早的买入),只是把当月平掉的挑出来。

  1. 对比:想看「这个月比上个月怎么样」,跑两次 monthly.py 再比数字,不要凭印象说「好转了」。

报告怎么说话

  • 数字先行:先给数,再给一句解释数从哪来。
  • 不用形容词:不说「亏得惨」「表现很好」「值得警惕」,说「当日平仓 4 笔,合计 -3,973.07 元,胜率 0%」。
  • 不评价个股:归因表里出现的股票只是统计单位。可以说「300750 这 2 笔合计亏 5,877.58 元」,不能说「这只票不适合你」「宁德时代波动太大」。
  • 不预测:不说「持仓周期拉长会改善」这类推论,只说「你的记录显示 4–10 天这一档 2 笔全盈,合计 2,818.81 元」。
  • 习惯画像用「你的记录显示」句式:只在数字差距明显时说(脚本内置阈值:平均持仓天数差 ≥3 天且一边是另一边的 2 倍以上才输出那句对比)。
  • 结尾固定一句以上仅为你自己交易记录的统计,不构成投资建议。(脚本已自动附上,不要删。)

口径与边界

  • 一笔平仓 = 一次卖出:一次卖出可能由多笔买入配成(FIFO),持仓天数按数量加权平均。
  • 费用:买入费用按该买入笔的股数摊到每股,卖出费用(含印花税、过户费)摊到本次卖出。文件没有费用列时按默认费率估算(手续费万 3、印花税千 5)并在报告里注明「部分按费率估算」。
  • 无成本记录:卖出时没有买入记录可配的部分(技能启用前就持有的老仓),单列成「无成本记录」,报股数与卖出金额,不计入盈亏,不猜成本。
  • 未平仓持仓:期末还拿着的票只列股数与成本,浮盈浮亏不计入报告(本技能不取行情,算不了也不该算)。
  • 品种:只处理 A 股(沪深北,含 ETF);港股通、可转债、期权等记录跳过,并在报告里报跳过条数。
  • 融资融券:「担保品买入/卖出」「融资买入」按普通买卖计入,并在报告里标注条数。
  • 大文件:超过 20,000 行时只取最近 12 个月并在报告里说明。
  • 加仓判定:一笔平仓若由两笔及以上买入配成,记为「加仓后平仓」。这只是记录事实,不等于「加仓是错的」——加仓是否违规由纪律教练按用户自己的规则判定。

脚本

| 脚本 | 用途 | |---|---| | scripts/common.py | 成交文件读取与解析(CSV/xlsx、utf-8/gbk、列名别名、A 股过滤、费用估算) | | scripts/ledger.py | 全量账本:总账、按股票、按月、按持仓天数、费用拖累、习惯画像 | | scripts/monthly.py | 单月账单:每笔平仓明细 + 当月贡献前三/后三 |

纯 Python 3 标准库,零第三方依赖(只有读 xlsx 时需要 openpyxl,缺少时提示用户另存为 CSV)。

assets/sample_trades.csv 是一份可直接跑的样例成交记录,用来演示或自检。

qianwen skills install @user_2ckqg/trade-ledger-analysis