trader-tax について
trader-taxは、ポートフォリオファイルからロットごとの損益、保有期間、ウォッシュセールを計算するスキルです。予定取引やタックスロス・ハーベスティングの検討に使えますが、税務助言や注文執行は行いません。
主な機能
- 01ロットごとの損益と保有期間の表示
- 02FIFO、HIFO、指定ロットによる売却額の試算
- 03記録済みの売買を基にしたウォッシュセール確認
- 04タックスロス・ハーベスティング候補の一覧
- 05税務状態ファイルへの実現売却の記録
活用シーン
- 01売却予定前の税務ロット確認
- 02取引に使うロット選択方法の比較
- 03ハーベスティング候補の特定
- 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?
読み書きするファイル
| file | what |
|---|---|
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.json | sell --record で記録した実現売却 |
ロットは trader-broker が記録した約定(ticket.py fill)、またはユーザーの証券会社の取引明細から取得します。ポジションに株数があるのにロットがない場合は、購入日と取得価格を尋ねてください。取得価額を決して推測してはいけません。
適用するルール(米国連邦税、計算のみ)
- 保有期間:購入日から1年を超えてから売却した場合は長期、それ以外は短期です。
report --lotsでは、各ロットが長期扱いになる日付を表示します。 - ロットの選択方法:
fifo(古い順。多くの証券会社のデフォルト)、hifo(取得価額が高い順)、specific(指定したロット)。証券会社に送る注文にはロット ID が含まれません。特定のロットを売却するには、ユーザーが証券会社側の税務ロット設定で選択する必要があります。そうでなければ、証券会社のデフォルトの方法が使われます。 - ウォッシュセール:売却の前後30日以内に同一または実質的に同一の株式を購入した場合、その範囲で損失が認められません。このツールは、保有中の他のロット、
trader/orders.jsonにある購入予定、および記録済みの損失売却を確認します。IRA、配偶者の口座、別の証券会社の口座は確認できませんが、それらも判定に含まれます。その旨を伝えてください。
手順
- 価格を更新してから、
lots.py report --lotsを実行します。銘柄ごとの利益と損失、および各ロットが短期か長期かを表示します。 - 売却(リバランス、逆指値、気が変わった場合など)の前に、予定株数と方法を指定して
lots.py sellを実行し、実現損益の見込みを表示します。 - 損失確定の場合:
lots.py harvest --min-loss 100を実行します(ユーザーがパーセントのしきい値を希望する場合は--min-pctも指定します)。各候補について、推定損失、短期・長期の内訳、ウォッシュセールの抵触の有無、および買い戻し可能となる最初の日を表示します。抵触がある候補は提案しません。 - ユーザーが提案を希望する場合に限り、
harvest --writeを実行してから/trader-risk、次に/trader-brokerを実行します。注文ごとにユーザーの承認が必要です。 - 売却が約定した後、
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 の設定に保存し、チャットには入力しないでください。