コスト基準計算方法
対応メソッド
| メソッド | ID | 国 | 備考 |
|---|---|---|---|
| First In, First Out | FIFO | 🌍 | 最も古いロットから売却(IRS デフォルト) |
| Last In, First Out | LIFO | 🌍 | Specific ID が必要(IRS) |
| Highest In, First Out | HIFO | 🌍 | Specific ID が必要(IRS) |
| Specific ID | SPECIFIC_ID | 🌍 | ロットの手動選択 |
| Germany FIFO | GERMANY_FIFO | 🇩🇪 | §23 EStG、1年保有で非課税 |
| PMPA | PMPA | 🇫🇷 | 加重平均(フランス) |
| Total Average | TOTAL_AVERAGE | 🌍 | 平均コスト基準 |
| UK Share Pooling | UK_SHARE_POOLING | 🇬🇧 | Section 104 プール + 30日ルール |
| AU CGT Discount | AU_CGT_DISCOUNT | 🇦🇺 | FIFO + 長期譲渡益に 50% 割引(ATO s.115) |
| CA ACB | CA_ACB | 🇨🇦 | 加重平均調整原価(CRA IT-387R2) |
| KR Virtual Asset | KR_VIRTUAL_ASSET | 🇰🇷 | FIFO;一律 22% + 250万ウォン控除(レポート層) |
| IN VDA | IN_VDA | 🇮🇳 | FIFO;損失控除不可(s.115BBH) |
| ES CGT | ES_CGT | 🇪🇸 | FIFO;累進税率 19–27%(レポート層) |
IRS に関する注記
IRS は仮想通貨に対して FIFO と Specific Identification を認めています(Rev. Rul. 2023-14)。LIFO と HIFO は技術的には Specific ID 戦略であり、ロットレベルの記録を維持し、選択した方法を一貫して適用する必要があります。
使用方法(コードブロック — 翻訳しない)
import { computeGains, compareAllMethods } from '@dtax/tax-engine';
const result = computeGains(transactions, { method: 'FIFO', taxYear: 2024 });
const comparison = compareAllMethods(transactions, 2024);comparison.forEach(({ method, totalGain, recommendation }) => { console.log(`${method}: $${totalGain} ${recommendation ? '← recommended' : ''}`);});結果の型
interface GainResult { shortTermGain: number; longTermGain: number; totalGain: number; disposals: Disposal[]; unrealizedGain?: number;}