mcpField
T
trader-tax

trader-tax

github.com/jakeschincariolその他85149 回インストール2 週間前に更新
リポジトリ

trader-tax について

trader-taxは、ポートフォリオファイルからロットごとの損益、保有期間、ウォッシュセールを計算するスキルです。予定取引やタックスロス・ハーベスティングの検討に使えますが、税務助言や注文執行は行いません。

主な機能

  1. 01ロットごとの損益と保有期間の表示
  2. 02FIFO、HIFO、指定ロットによる売却額の試算
  3. 03記録済みの売買を基にしたウォッシュセール確認
  4. 04タックスロス・ハーベスティング候補の一覧
  5. 05税務状態ファイルへの実現売却の記録

活用シーン

  1. 01売却予定前の税務ロット確認
  2. 02取引に使うロット選択方法の比較
  3. 03ハーベスティング候補の特定
  4. 04売却後の実現損益の記録

MCP 対応

入力ではスキルとして説明されており、MCP サーバーやクライアントではなく、MCP 接続についての記載もありません。

インストール

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

$npx skills add https://github.com/jakeschincariol/trader-skill --skill trader-tax

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

同梱ファイルlots.pyportfolio.example.json

詳細

trader-tax

Tax Optimizer はユーザーのロットに基づいて計算を行い、何も知らずに売却することがないようにします。ユーザーの税務上何が適切かを判断することはありません。これは税務アドバイスではありません。ユーザーに何が適用されるかは税務専門家が判断します。このスキルを使う回答では、毎回、最初の段階で一度だけその旨を伝えてください。

以下の ${CLAUDE_SKILL_DIR} は、このスキルのフォルダー(SKILL.md がある場所)を指します。

python3 "${CLAUDE_SKILL_DIR}/lots.py" report --lots              # every lot, gain or loss, term
python3 "${CLAUDE_SKILL_DIR}/lots.py" sell KO 2 --price 90.11    # what a sale would realize (FIFO)
python3 "${CLAUDE_SKILL_DIR}/lots.py" sell KO 2 --method specific --lots KO-2
python3 "${CLAUDE_SKILL_DIR}/lots.py" harvest --min-loss 100     # candidates, with wash-sale checks
python3 "${CLAUDE_SKILL_DIR}/lots.py" harvest --min-loss 100 --write
python3 "${CLAUDE_SKILL_DIR}/lots.py" wash KO                    # is buying KO today a wash sale?

読み書きするファイル

filewhat
trader/portfolio.jsonロットを含むポジション:{"id", "date", "shares", "cost"}(cost = 取得価額の合計)。形式の例:ここにある portfolio.example.json
trader/prices.json現在価格(trader-alerts:alerts.py quote --holdings --write)
trader/orders.jsonウォッシュセール判定用の買い付け予定数。harvest --write を実行すると、売却案で置き換えられます
trader/state/tax.jsonsell --record で記録した実現売却

ロットは trader-broker が記録した約定(ticket.py fill)、またはユーザーの証券会社の取引明細から取得します。ポジションに株数があるのにロットがない場合は、購入日と取得価格を尋ねてください。取得価額を決して推測してはいけません。

適用するルール(米国連邦税、計算のみ)

  • 保有期間:購入日から1年を超えてから売却した場合は長期、それ以外は短期です。report --lots では、各ロットが長期扱いになる日付を表示します。
  • ロットの選択方法:fifo(古い順。多くの証券会社のデフォルト)、hifo(取得価額が高い順)、specific(指定したロット)。証券会社に送る注文にはロット ID が含まれません。特定のロットを売却するには、ユーザーが証券会社側の税務ロット設定で選択する必要があります。そうでなければ、証券会社のデフォルトの方法が使われます。
  • ウォッシュセール:売却の前後30日以内に同一または実質的に同一の株式を購入した場合、その範囲で損失が認められません。このツールは、保有中の他のロット、trader/orders.json にある購入予定、および記録済みの損失売却を確認します。IRA、配偶者の口座、別の証券会社の口座は確認できませんが、それらも判定に含まれます。その旨を伝えてください。

手順

  1. 価格を更新してから、lots.py report --lots を実行します。銘柄ごとの利益と損失、および各ロットが短期か長期かを表示します。
  2. 売却(リバランス、逆指値、気が変わった場合など)の前に、予定株数と方法を指定して lots.py sell を実行し、実現損益の見込みを表示します。
  3. 損失確定の場合:lots.py harvest --min-loss 100 を実行します(ユーザーがパーセントのしきい値を希望する場合は --min-pct も指定します)。各候補について、推定損失、短期・長期の内訳、ウォッシュセールの抵触の有無、および買い戻し可能となる最初の日を表示します。抵触がある候補は提案しません。
  4. ユーザーが提案を希望する場合に限り、harvest --write を実行してから /trader-risk、次に /trader-broker を実行します。注文ごとにユーザーの承認が必要です。
  5. 売却が約定した後、lots.py sell ... --record を実行してロットを更新し、その年の実現損益を記録します。

例:リールのポートフォリオ

2026-10-13 に購入したコピー用ポートフォリオ(AAPL $1,250、AXP $1,119、GOOGL $823、KO $708、BAC $600)は、銘柄ごとにロットが1つあり、すべて2027-10-14までは短期扱いです。後に BAC が取得価額の $600 を下回って取引されている場合、harvest --min-loss 25 は BAC-1 ロットを損失額とともに表示し、「売却から31日後の日付までは BAC を再購入しないでください」と案内します。ユーザーが trader/orders.json に BAC の購入予定も登録している場合は、売却を提案せず、ウォッシュセールとして警告します。

決して行わないこと

このツールは、書類の提出、税率や税額の提示、ユーザーの納税額の説明、注文の発注を一切行いません。また、ウォッシュセールになると確認できる損失確定を提案することもありません。

安全性

  • 税務に関する助言ではなく、教育とツールの提供を目的としており、金融に関する助言ではありません。税務の専門家にご相談ください。
  • デフォルトではペーパートレードが有効です("paper": true)。実取引を行うかどうかは、ユーザー自身が自分の設定で決定します。
  • このパックで注文を発注するのは trader-broker のみです。また、次の3つすべてを満たす場合に限ります。trader-risk がその日のうちに該当の注文を承認していること、ユーザーがチャットでその注文について明示的に「はい」と入力したこと、注文ツールが「承認が必要」に設定されているため、ユーザーが Claude のカードで「許可」を一度クリックしたこと(カスタマイズ > コネクター > ツールの権限)。注文ツールを「常に許可」に設定しないでください。
  • 設定で許可され、ユーザーが確認しない限り、オプション、信用取引、空売り、レバレッジは利用しません。
  • ブローカーのキーは環境変数または Claude Desktop の設定に保存し、チャットには入力しないでください。

コメント