关于 trade-accounting
面向交易业务的 Python 双重记账技能,可记录代币交易、费用、质押、空投和 LP 收入。它能生成财务报表,并区分用于策略评估的交易损益与用于税务的已实现收益。
主要功能
- 01双重记账交易分类账
- 02记录交易、费用、质押与 LP 收入
- 03生成损益表、资产负债表和现金流量表
- 04按 FIFO 跟踪已实现收益与成本基础
- 05区分交易损益与税务损益
适用场景
- 01汇总扣除费用后的实际交易损益
- 02整理税务申报所需的成本基础记录
- 03分析手续费对收益的影响
- 04比较不同策略的净损益
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ agiprolabs/ claude-trading-skills --skill trade-accounting安装后在 Claude Code 中输入/trade-accounting确认已加载。
附带文件references/planned_features.mdscripts/trading_ledger.py
详细介绍
交易会计
像经营企业一样开展交易。每笔花费的 SOL、每个买入的代币、每笔支付的费用、每笔实现的收益——都通过复式记账进行追踪,让账目始终平衡。无论你通过个人钱包还是 LLC 进行交易,完善的会计都能化混乱为清晰。
核心原则:每笔交易至少涉及两个账户。买入代币?现金减少,代币持仓增加——金额相同。复式记账这一约束会自动捕捉错误:如果借方不等于贷方,就说明有问题。
交易者为何需要会计
大多数交易者对盈亏的追踪都很粗略——“我最初有 50 SOL,现在有 62 SOL。”这并不能告诉你:
- 其中有多少来自已实现交易,又有多少来自未实现持仓
- 累计支付了多少费用(Gas、优先费、兑换费)
- 质押和 LP 收入是否足以覆盖运营成本
- 每项持仓的实际成本基础(报税时至关重要)
- 现金流的时间安排——你是否盈利但缺乏流动性?
完善的会计可以解答所有这些问题。它还能将交易盈亏(按市值计价,有助于评估策略)与税务盈亏(使用特定成本基础方法计算的已实现收益,合规所需)区分开来。
账户类型
交易业务采用四类标准会计账户:
| 类别 | 正常余额 | 示例 |
|---|---|---|
| 资产 | 借方 | 现金(SOL/USDC)、代币持仓、LP 头寸、质押存款、应收款 |
| 负债 | 贷方 | 保证金借款、应计应付税款 |
| 收入 | 贷方 | 已实现交易收益、质押奖励、空投收入、LP 费用收入 |
| 费用 | 借方 | 交易费用、Gas/优先费、订阅费用、数据源 |
| 权益 | 贷方 | 所有者资本投入、留存收益、提款(抵减项) |
会计科目表
完整的会计科目表请参见 references/planned_features.md。最简设置:
1000 Assets
1010 Cash – SOL
1020 Cash – USDC
1100 Token Holdings (one sub-account per token)
1200 LP Positions
1300 Staking Deposits
3000 Income
3010 Realized Trading Gains
3020 Staking Rewards
3030 Airdrop Income
3040 LP Fee Income
4000 Expenses
4010 Trading Fees (DEX swap fees)
4020 Gas & Priority Fees
4030 Slippage Cost
5000 Equity
5010 Owner Capital
5020 Retained Earnings
5030 Owner Withdrawals (contra-equity)
复式记账
每笔交易都会记录相等的借方和贷方。借方增加资产和费用账户余额;贷方增加负债、收入和权益账户余额。
分录示例
用 0.5 SOL 买入 1000 BONK(Gas 费为 0.001 SOL):
| 账户 | 借方 | 贷方 |
|---|---|---|
| 代币持仓 – BONK | 0.501 SOL | |
| 现金 – SOL | 0.501 SOL |
或者将费用单独列出:
| 账户 | 借方 | 贷方 |
|---|---|---|
| 代币持仓 – BONK | 0.5 SOL | |
| Gas 和优先费 | 0.001 SOL | |
| 现金 – SOL | 0.501 SOL |
用 0.8 SOL 卖出 1000 BONK(成本基础为 0.5 SOL,Gas 费为 0.001 SOL):
| 账户 | 借方 | 贷方 |
|---|---|---|
| 现金 – SOL | 0.799 SOL | |
| Gas 和优先费 | 0.001 SOL | |
| 代币持仓 – BONK | 0.5 SOL | |
| 已实现交易收益 | 0.3 SOL |
收到 0.05 SOL 质押奖励:
| 账户 | 借方 | 贷方 |
|---|---|---|
| 现金 – SOL | 0.05 SOL | |
| 质押奖励 | 0.05 SOL |
收到 5000 JUP 空投(收到时估值为 2.1 SOL):
| 账户 | 借方 | 贷方 |
|---|---|---|
| 代币持仓 – JUP | 2.1 SOL | |
| 空投收入 | 2.1 SOL |
收取 0.03 SOL 的 LP 费用:
| 账户 | 借方 | 贷方 |
|---|---|---|
| 现金 – SOL | 0.03 SOL | |
| LP 费用收入 | 0.03 SOL |
部分平仓——卖出一半持仓:
如果你持有 2000 BONK,成本基础为 1.0 SOL,并以 0.7 SOL 卖出 1000 BONK:
| 账户 | 借方 | 贷方 |
|---|---|---|
| 现金 – SOL | 0.699 SOL | |
| Gas 和优先费 | 0.001 SOL | |
| 代币持仓 – BONK | 0.5 SOL | |
| 已实现交易收益 | 0.2 SOL |
已售出部分的成本基础(0.5 SOL,即 1.0 SOL 的一半)从资产账户中扣除。
交易类型
该分类账处理以下交易流程:
| 流程 | 涉及账户 |
|---|---|
| 账户注资 | 现金(借方),所有者资本(贷方) |
| 提取资金 | 所有者提款(借方),现金(贷方) |
| 买入代币 | 代币持仓(借方),现金(贷方),Gas 费用(借方) |
| 卖出代币 | 现金(借方),代币持仓(贷方),已实现收益(盈利时记贷方,亏损时记借方),Gas 费用(借方) |
| 部分平仓 | 与卖出相同,按比例分摊成本基础 |
| 代币兑换代币 | 代币 B(借方),代币 A(贷方),费用 |
| 质押存入 | 质押存款(借方),现金(贷方) |
| 质押奖励 | 现金(借方),质押奖励(贷方) |
| 收到空投 | 代币持仓(借方),空投收入(贷方) |
| 收取 LP 费用 | 现金(借方),LP 费用收入(贷方) |
| 交易费用 | 交易费用(借方),现金(贷方) |
| Gas/优先级费用 | Gas 和优先级费用(借方),现金(贷方) |
报表
损益表
显示某一期间的收入减去费用:
═══════════════════════════════════════════
P&L Statement: 2026-02-01 to 2026-02-28
═══════════════════════════════════════════
INCOME
Realized Trading Gains ........ 4.200 SOL
Staking Rewards ............... 0.150 SOL
Airdrop Income ................ 2.100 SOL
LP Fee Income ................. 0.090 SOL
─────────
Total Income 6.540 SOL
EXPENSES
Trading Fees .................. 0.120 SOL
Gas & Priority Fees ........... 0.045 SOL
Slippage Cost ................. 0.030 SOL
─────────
Total Expenses 0.195 SOL
═══════════════════════════════════════════
NET INCOME 6.345 SOL
═══════════════════════════════════════════
资产负债表
显示会计等式:资产 = 负债 + 所有者权益。
═══════════════════════════════════════════
Balance Sheet: 2026-02-28
═══════════════════════════════════════════
ASSETS
Cash – SOL .................... 32.450 SOL
Cash – USDC ................... 0.000 SOL
Token Holdings ................ 12.300 SOL
LP Positions .................. 5.000 SOL
Staking Deposits .............. 10.000 SOL
─────────
Total Assets 59.750 SOL
EQUITY
Owner Capital ................. 50.000 SOL
Retained Earnings ............. 3.405 SOL
Net Income (current period) ... 6.345 SOL
─────────
Total Equity 59.750 SOL
═══════════════════════════════════════════
Assets - Equity = 0.000 SOL ✓ Balanced
═══════════════════════════════════════════
现金流量表
追踪现金的来源和去向:
═══════════════════════════════════════════
Cash Flow: 2026-02-01 to 2026-02-28
═══════════════════════════════════════════
OPERATING ACTIVITIES
Trading proceeds .............. 8.500 SOL
Token purchases ............... (4.300) SOL
Fees paid ..................... (0.195) SOL
Staking rewards received ...... 0.150 SOL
LP fees received .............. 0.090 SOL
─────────
Net Operating Cash Flow 4.245 SOL
INVESTING ACTIVITIES
LP deposits ................... (5.000) SOL
Staking deposits .............. (2.000) SOL
─────────
Net Investing Cash Flow (7.000) SOL
FINANCING ACTIVITIES
Capital contributions ......... 10.000 SOL
Withdrawals ................... (1.000) SOL
─────────
Net Financing Cash Flow 9.000 SOL
═══════════════════════════════════════════
Net Change in Cash 6.245 SOL
Beginning Cash Balance 26.205 SOL
Ending Cash Balance 32.450 SOL
═══════════════════════════════════════════
交易损益与税务损益
两者数值不同,用途也不同:
| 方面 | 交易损益 | 税务损益 |
|---|---|---|
| 用途 | 评估策略 | 合规、申报 |
| 未实现收益 | 包含(按市值计量) | 不包含(实现后才计入) |
| 成本基础方法 | 平均成本(简单) | FIFO、LIFO 或特定标识(取决于司法管辖区) |
| 计时方式 | 实时 | 处置时 |
| 空投 | 按收取时的价值计量 | 按收取时的公允市场价值(FMV)计入普通收入 |
| LP 无常损失(IL) | 作为未实现损失跟踪 | 提取前不构成应税事项 |
默认情况下,scripts/trading_ledger.py 中的分类账使用 FIFO 跟踪已实现收益。对于交易损益,你可以在未平仓头寸上叠加按市值计量的估值。
有关相同交易在 FIFO 与平均成本法下如何产生不同损益的详细示例,请参阅 references/planned_features.md。
实体注意事项
通过 LLC 或 S-Corp 运营的交易者应跟踪其他账户:
- 管理费 — 如果实体收取管理费
- 分配款 — 实体支付给所有者的款项(与从交易账户提款不同)
- 工资费用 — S-Corp 高管薪资
- 税款准备金 — 预估季度纳税款
会计原则完全相同,只需扩展科目表即可。本技能中的脚本专注于交易层级的分类账,这是实体层级报告的基础。
快速开始
from trading_ledger import Ledger, Amount
ledger = Ledger(base_currency="SOL")
# Fund the account
ledger.record_funding(amount=50.0, memo="Initial capital")
# Buy a token
ledger.record_buy(
token="BONK",
quantity=100_000,
cost_sol=0.5,
fee_sol=0.001,
memo="Entry on volume spike"
)
# Sell for profit
ledger.record_sell(
token="BONK",
quantity=100_000,
proceeds_sol=0.8,
fee_sol=0.001,
memo="Target hit"
)
# Record staking reward
ledger.record_income(
income_type="staking",
amount_sol=0.05,
memo="Epoch 580 rewards"
)
# Generate reports
ledger.print_pnl(start="2026-02-01", end="2026-02-28")
ledger.print_balance_sheet(as_of="2026-02-28")
运行演示脚本,查看包含所有报表类型的完整一个月交易活动:
python scripts/trading_ledger.py --demo
使用场景
- 跟踪真实损益 — 准确了解扣除所有费用后的收益,而不仅仅是买入价和卖出价
- 准备税务申报 — 向会计师提供包含成本基础和已实现收益的清晰分类账
- 分析费用 — 发现 Gas 和优先级费用是否侵蚀了 3% 的毛利
- 比较策略 — 比较不同策略的净损益,而不仅仅是胜率
- 规划现金流 — 了解是否有足够的流动 SOL 用于下一笔交易
- 审计追踪 — 每个数字都可追溯到带日期和备注标签的日记账分录
前置条件
- Python 3.10+
- 无外部依赖(分类账仅使用标准库)
文件
| 文件 | 描述 |
|---|---|
references/planned_features.md | 会计科目表、复式记账示例、报告格式、交易损益与税务损益 |
scripts/trading_ledger.py | 支持损益表、资产负债表和演示模式的复式记账账本 |
免责声明:此技能仅用于提供会计结构和计算信息,以供参考和整理之用。它不构成税务、法律或财务建议。有关您的具体纳税义务,请咨询合格的税务专业人士或注册会计师(CPA)。加密货币的税务处理因司法管辖区而异,且经常变化。