mcpField
W
wash-sale-detection

wash-sale-detection

github.com/agiprolabsその他456431 回インストール8 週間前に更新
リポジトリ

wash-sale-detection について

READMEに記載されたルールに基づき、暗号資産の取引履歴を洗い出す Python スキルです。61日間の期間、控除できない損失、取得価額の調整、再購入可能日を追跡します。税務助言ではなく、情報提供を目的としています。

主な機能

  1. 01取引履歴のウォッシュセール検出
  2. 0261日間の期間の監視
  3. 03控除不可損失の計算
  4. 04調整後取得価額の追跡
  5. 05安全な再購入までのカウントダウン
  6. 06自動取引に伴うリスクの検出

活用シーン

  1. 01申告前の取引履歴確認
  2. 02買い注文前のトークン確認
  3. 03コピートレードやDCAボットの記録監査
  4. 04損失確定後の再購入計画

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/agiprolabs/claude-trading-skills --skill wash-sale-detection

インストール後、Claude Code で/wash-sale-detectionを入力して読み込まれたか確認します。

同梱ファイルreferences/planned_features.mdscripts/wash_sale_scanner.py

詳細

ウォッシュセールの検出

2025年施行の現行米国暗号資産税制に基づいてウォッシュセールを検出し、実現損失の前後61日間の期間を監視し、否認された損失の取得価額調整を追跡して、安全に再参入できるまでのカウントダウンを計算します。

免責事項:このスキルが提供するのは情報提供のみを目的とした分析であり、税務アドバイスではありません。個別の状況については、資格を有する税務専門家または公認会計士にご相談ください。税法は複雑であり、暗号資産へのウォッシュセール規則の適用は、個々の状況、IRS のガイダンスの更新、裁判所の判決によって異なる場合があります。

背景

2025年より前は、デジタル資産は有価証券ではなく財産として分類されていたため、暗号資産にはウォッシュセール規則が適用されませんでした。Infrastructure Investment and Jobs Act とその後の IRS の規則制定により、2025年1月1日からデジタル資産にもウォッシュセールの扱いが適用されるようになりました。

IRC Section 1091(デジタル資産に関する改正後)では、暗号資産を損失で売却または処分し、実質的に同一の資産を61日間の期間(売却日の30日前から30日後まで)に取得した場合、その損失は税務上否認されます。否認された損失は、代替ポジションの取得価額に加算されます。

主な概念

61日間の期間
Day -30 ................. Day 0 ................. Day +30
  |--- 30 days before ---|--- sale day ---|--- 30 days after ---|
  ^                       ^                                      ^
  Window opens        Loss realized                    Window closes
  • 0日目:ポジションを実現損失で売却した日
  • -30日目から-1日目:この期間の購入は遡及的にウォッシュセールを発生させます
  • +1日目から+30日目:この期間の購入は将来的にウォッシュセールを発生させます
  • 期間は暦日であり、取引日ではありません
実質的に同一の資産

暗号資産の場合、「実質的に同一」とは一般に同じトークンを意味します。SOL を損失で売却し、30日以内に SOL を購入するとウォッシュセールになります。SOL を売却して ETH を購入しても、資産が異なるためウォッシュセールにはなりません。

精査される可能性のある境界事例:

  • 同じトークンのラップ版と非ラップ版(例:SOL と wSOL)
  • 異なるチェーン上のトークン(例:Solana 上の USDC と Ethereum 上の USDC)
  • 同じ原資産の価格に連動するデリバティブトークン(例:stSOL と SOL)
否認された損失と取得価額調整

ウォッシュセールが発生すると:

  1. 実現損失は否認され、当年の税金から控除できません
  2. 否認された損失は、代替ポジションの取得価額に加算されます
  3. 元のポジションの保有期間が、代替ポジションに引き継がれる場合があります

例:

  • SOL を10枚、1枚あたり100ドルで購入(取得価額:1,000ドル)
  • SOL を10枚、1枚あたり80ドルで売却(売却代金:800ドル、損失:200ドル)
  • 15日以内に SOL を10枚、1枚あたり85ドルで購入(ウォッシュセール発生)
  • 新しい取得価額:850ドル + 否認された損失200ドル = 1,050ドル
  • 200ドルの損失が消えたわけではありません。新しいポジションに繰り延べられます

前提条件

  • Python 3.10+
  • 外部依存関係は不要(標準ライブラリのみ)
  • 日付、アクション(買い/売り)、トークン、数量、価格、売却代金、取得価額を含む取引履歴データ(CSV または構造化形式)

機能

  1. ウォッシュセールのスキャン — 取引履歴を分析し、すべてのウォッシュセール違反を検出します
  2. 61日間の期間の監視 — 直近の損失を生じる売却について、期間の状況を追跡します
  3. 否認損失の計算 — ウォッシュセールごとの正確な否認額を計算します
  4. 取得価額調整の追跡 — 代替ポジションの調整後取得価額を表示します
  5. 安全な再参入までのカウントダウン — 損失で売却した各トークンについて、安全に再参入できるまでの日数を表示します
  6. 自動化によるリスクの検出 — 意図せずウォッシュセールを発生させる可能性のあるコピートレードシステムやボット戦略を検出します

クイックスタート

from datetime import date

# Define your trade history
trades = [
    {"date": date(2025, 3, 1), "action": "buy",  "token": "SOL", "qty": 10, "price": 100.0},
    {"date": date(2025, 3, 15), "action": "sell", "token": "SOL", "qty": 10, "price": 80.0},
    {"date": date(2025, 3, 25), "action": "buy",  "token": "SOL", "qty": 10, "price": 85.0},
]

# Check for wash sales
from scripts.wash_sale_scanner import WashSaleScanner

scanner = WashSaleScanner(trades)
results = scanner.scan()

for ws in results.wash_sales:
    print(f"WASH SALE: {ws.token} — Loss ${ws.disallowed_loss:.2f} disallowed")
    print(f"  Sale: {ws.sale_date} | Re-entry: {ws.replacement_date}")
    print(f"  Adjusted basis: ${ws.adjusted_basis:.2f}")

# Check safe re-entry countdowns
for countdown in results.countdowns:
    print(f"{countdown.token}: {countdown.days_remaining} days until safe re-entry")

ユースケース

1. 年末の税務確認

年間の取引履歴全体をスキャンし、納税申告前にすべてのウォッシュセールを特定します。否認された損失の合計と調整後取得価額を示すレポートを生成します。

2. リアルタイム監視

買い注文を出す前に、最近の損失によるウォッシュセール期間がそのトークンに残っているか確認します。カウントダウンが終了するまで待ち、意図しないウォッシュセールを避けます。

3. コピー取引とボットの監査

自動取引システム(コピー取引ボット、DCA ボット、グリッドボット)は、同じトークンを繰り返し売買するため、ウォッシュセールが頻繁に発生します。ボットの取引エクスポートデータにこのスキャナーを実行し、税務上の影響を定量化してください。

4. タックスロス・ハーベスティングの調整

タックスロス・ハーベスティング戦略を実行する際は、安全に再参入できるまでのカウントダウンを利用して、ポジションに再び入るタイミングを計画してください。市場へのエクスポージャーを維持したい場合は、30 日間の期間中に同一ではない資産にスワップしてください。

5. 複数アカウントにまたがるウォッシュセールの検出

ウォッシュセール規則は、同一の納税者が管理するすべてのアカウントに適用されます。複数の取引所やウォレットで SOL を取引している場合は、スキャンする前に取引履歴を集約してください。

エッジケースと自動化に伴う注意点

DCA ボットとグリッドボット

トークンを毎週購入するドルコスト平均法のボットは、同じ期間中にそのトークンを損失で売却した場合、ほぼ確実にウォッシュセールを引き起こします。このスキャナーは、61 日間の期間内で重複する買い/売りのパターンにフラグを立てます。

コピー取引

コピー取引システムがトークンを損失で売却し、リーダーが 30 日以内に再参入した場合、コピーした取引にもウォッシュセールが適用されます。「自分で取引を発注していない」という例外はありません。

一部約定と複数ロット

損失での売却後に複数回に分けて少量を購入した場合、ウォッシュセールは損失を生じさせた売却数量を上限として、各購入に適用されます。このスキャナーは一部の数量照合に対応しています。

ウォレット間の移転

自分が管理する別のウォレットにトークンを移し、そこで売却しても、ウォッシュセール規則は回避できません。この規則はアカウントではなく、納税者に適用されます。

安全に再参入するための戦略

トークンを損失で売却した後は:

  1. 同じトークンを買い戻す前に、暦日で 31 日間待ちます
  2. 待機期間中は、同一ではない代替資産の保有を検討してください(例:SOL を売却し、暗号資産市場全体へのエクスポージャーを維持するために ETH を保有する)
  3. カウントダウンタイマーを使って、安全に再参入できる正確なタイミングを確認します
  4. 期間終了日にカレンダーのリマインダーを設定します
Token: SOL
Sale Date: 2025-03-15
Loss: $200.00
Window Closes: 2025-04-14
Days Remaining: 12
Status: DO NOT BUY — wash sale window active

取得価額調整の手順

取得価額調整の詳細な手順例:

TRADE 1: Buy 100 SOL @ $150.00    → Basis: $15,000.00
TRADE 2: Sell 100 SOL @ $120.00   → Proceeds: $12,000.00, Loss: $3,000.00
TRADE 3: Buy 100 SOL @ $125.00    → Basis before adjustment: $12,500.00
         (within 30 days of Trade 2)

WASH SALE TRIGGERED:
  Disallowed loss:    $3,000.00
  Adjusted basis:     $12,500.00 + $3,000.00 = $15,500.00
  Effective price:    $155.00 per SOL (not $125.00)

Later sale at $160.00:
  Proceeds:    $16,000.00
  Adj. basis:  $15,500.00
  Gain:        $500.00 (not $3,500.00)
  The $3,000 loss is recovered through the higher basis.

ファイル

参考資料
  • references/planned_features.md — ウォッシュセール規則の詳細、61 日間の期間の仕組み、取得価額調整の例、自動化に伴うエッジケース、IRS ガイダンスの参考情報
スクリプト
  • scripts/wash_sale_scanner.py — 完全なウォッシュセールスキャナー:取引履歴を読み込み、ウォッシュセールを特定し、損失の否認額と取得価額調整を計算し、安全に再参入できるまでのカウントダウンを表示します。例示シナリオを実行するには --demo を指定します。

制限事項

  • このツールは、暗号資産に適用されるウォッシュセール規則を簡略化して解釈しています
  • ラップトークンやデリバティブが「実質的に同一」かどうかの判断には、専門家の判断が必要になる場合があります
  • このスキャナーは、オプション、先物、その他の暗号資産デリバティブ商品には対応していません
  • 複数アカウントの検出には、取引データを手動で集約する必要があります
  • IRS がデジタル資産のウォッシュセールについてさらなるガイダンスを発行するにつれて、規則が変更される可能性があります
  • 州税の規則は、連邦税の扱いと異なる場合があります

コメント