ウォッシュセールとオプション:61日間の期間
ウォッシュセールは30日ではなく61日間です。コール、ロール、ディープ・イン・ザ・マネーのプット、1099-Bの差、IRAで消える損失まで解説します。
ウォッシュセール・ルールでは、証券を損失確定で売却し、その前後61日間の範囲内で実質的に同一の証券を取得した場合、キャピタルロスの控除が認められない。範囲は、売却前30日、売却日当日、売却後30日で構成される。オプションは、このルールに二重の意味で関係する。株式の損失を無効にする買い戻し対象となる場合と、オプション自体が損失ポジションとなる場合だ。課税口座では、否認された損失が消滅するわけではない。買い替え後のポジションのコストベースに繰り入れられ、そこに残る。
このページでは仕組みを説明する。税務上の助言ではない。
ウォッシュセール期間が30日ではなく61日である理由
内訳を合計すると、売却前30日、売却日当日、売却後30日で、暦日61日になる。取引日ではなく暦日であり、週末や市場休場日も連続して数える。下のパネルでは、各月の最終取引セッションを基準にし、その月の61日間のウィンドウに何セッションが含まれるかを数えている。
各数値の背後にある正確なSQL
WITH sessions AS
(
SELECT DISTINCT date AS d
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= '2023-11-01'
),
month_ends AS
(
SELECT
toStartOfMonth(d) AS m,
max(d) AS anchor
FROM sessions
WHERE d >= '2024-01-01'
AND d < '2026-07-01'
GROUP BY m
)
SELECT
toString(me.m) AS month,
toString(me.anchor) AS last_session,
countIf(s.d >= me.anchor - 30 AND s.d <= me.anchor + 30) AS sessions_in_window,
61 AS calendar_days_in_window
FROM month_ends AS me
CROSS JOIN sessions AS s
GROUP BY me.m, me.anchor
ORDER BY me.m水平線は、ルール上の61暦日を示す。下の線は、その期間のうち市場が開いていた日数だ。パネルの最初の月はウィンドウ内に42セッションを含み、直近の月は42セッションを含む。基準とした月は30カ月分ある。
多くの人が忘れるのは、ウィンドウの前半だ。通常は売却日から先に数え、カレンダー上の31日目を確認する。売却前30日も同じように数える。値下がり局面で買い増し、10日にさらに100株を買い、20日に元のロットを損失確定で売却した場合、すでに行った購入がウィンドウ内に入る。売却後に何も買っていなくても、売却したロットの損失は否認される。ここでは、どのロットを口座から出すかが非常に重要であり、それは取引時に決める選択だ。コストベースの計算方法がロットを選ぶ仕組みを参照されたい。
12月の問題
損失確定売りは年末の数週間に集中する。そのため、期間の計算が最も大きな問題になる。年末最終セッションの売却には、1月深くまで続く買い戻しウィンドウが生じる。1月の買い付けによって、前年の確定申告ですでに報告した損失が否認されることもある。
各数値の背後にある正確なSQL
WITH sessions AS
(
SELECT DISTINCT date AS d
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= '2025-10-20'
AND date < '2026-02-10'
)
SELECT
toString(sale.d) AS session_date,
concat(formatDateTime(sale.d, '%b'), ' ', toString(toDayOfMonth(sale.d))) AS sold_on,
countIf(s.d >= sale.d - 30 AND s.d <= sale.d + 30) AS sessions_in_window,
greatest(dateDiff('day', toDate('2025-12-31'), sale.d + 30), 0) AS window_days_in_new_year
FROM
(
SELECT d
FROM sessions
WHERE d >= '2025-12-01'
AND d < '2026-01-01'
) AS sale
CROSS JOIN sessions AS s
GROUP BY sale.d
ORDER BY sale.d各行は12月の一つの取引セッションを示し、計算を固定するため2025年12月に設定している。Dec 1の売却では、ウィンドウの日数の0が新年に入る。Dec 31の売却では30が新年に入り、そのウィンドウは全体で42取引セッションに及ぶ。12月の取引明細には、そのことは表示されない。否認された損失は1月に買った株式に付け替えられ、その新しいポジションを最終的に売却するまで控除できない。売却時期は翌年になることも、数年後になることもある。
オプションがウォッシュセール・ルールに入る場面
内国歳入法1091条は、株式または証券に加え、実質的に同一の株式を取得する契約またはオプションにも適用される。1988年の改正で、取得だけでなく売却の契約やオプションにも範囲が広げられた。取引画面では、次の4点が重要になる。
- 損失確定で売却した株式についてコールを買うと、それ自体がウォッシュセールになる。コールは株式を取得する契約だからだ。行使する必要はなく、行使価格がどれだけ離れていても、ルールの適用を免れることはない。
- コールを損失確定で売却し、ウィンドウ内で原株を買う場合は、逆方向の問題になる。判断は公表されたセーフハーバーではなく、実質的に同一かどうかの基準で決まる。
- 行使される可能性が非常に高く見えるほどイン・ザ・マネーのプットを売ると、株式を買う場合と同様に扱われることがある。
- オプションの損失は証券の損失であり、オプションからオプションへの買い替えにもルールは及ぶ。
一つの契約が表す株式量は測定できる。デルタは、原資産が1ドル動いたときのオプション価格の変化を示す。デルタに100を掛けると、一つの契約が代替する株式エクスポージャーの概算になる。下のパネルでは、2026年6月までの満期まで20〜45日のAAPLの契約を、行使価格が株価に対してどの位置にあるかで5の区分に分け、それぞれのデルタを平均している。
各数値の背後にある正確なSQL
SELECT
bucket AS strike_vs_spot,
round(avgIf(delta, delta > 0), 3) AS call_delta,
round(avgIf(abs(delta), delta < 0), 3) AS put_delta_abs,
count() AS contract_count
FROM
(
SELECT
delta,
toFloat64(strike_price) / toFloat64(underlying_close) AS mny,
multiIf(
mny < 0.85, 'strike 15%+ below spot',
mny < 0.95, 'strike 5-15% below spot',
mny < 1.05, 'strike within 5% of spot',
mny < 1.15, 'strike 5-15% above spot',
'strike 15%+ above spot'
) AS bucket
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date >= '2026-06-01'
AND date < '2026-07-01'
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND underlying_close > 0
)
GROUP BY bucket
HAVING countIf(delta > 0) > 0
AND countIf(delta < 0) > 0
ORDER BY min(mny)左から右に読む。株価を大きく下回る行使価格のコールは、デルタが平均0.937だった。1に近く、契約が株式の値動きをほぼ1ドル単位で追随している。株価を大きく上回る行使価格のコールは平均0.017だった。プットは逆方向に動く。株価を最も上回る行使価格のプットは、絶対値ベースのデルタが平均0.888で、株価を最も下回る行使価格のプットは0.015だった。右端はディープ・イン・ザ・マネーのプットであり、売り手が株式のロングポジションに近いエクスポージャーを負う契約だ。行使価格と満期の用語については、オプションチェーンの読み方から確認できる。
IRSは「どの程度深ければよいか」について数値を示していない。実務上の基準では、プットを売った時点で、権利行使されずに満期を迎える可能性が実質的にあるかどうかを問う。パネルの右端にあるプットと中央にあるプットは、同じ請求権ではない。
含み損のあるロングコールをロールする場合
オプションに関する最も一般的な質問は、最も答えが定まっていない。コールを保有し、価値が下落したため売却し、同じ原資産について異なる行使価格または後の満期のコールを買う。この新しい契約は、古い契約と実質的に同一なのか。
財務省は、あるオプションが別のオプションと実質的に同一になる条件を定める規則を発行していない。これが現状だ。実務上存在するのは報告上の慣行である。ブローカーは契約シンボルでオプションポジションを照合するため、異なる行使価格や異なる満期へのロールは、通常1099-B上でフラグが付かない。慣行は法的判断ではない。法令上の基準は、買い替えによって同じ上昇・下落にさらされ続けるかどうかを問う。同じ満期で行使価格が一つ隣のコールと、6カ月先の満期で大きくアウト・オブ・ザ・マネーのコールでは、この問いへの答えは異なる。
二つの解釈が併存している。慎重な解釈では、行使価格と満期が近い買い替えは同一エクスポージャーとみなす。緩やかな解釈では、契約条件が少しでも変われば新しい証券とみなす。いずれも明確な線引きとして確立されていない。
市場データで見る61日
61暦日は、セッションとして見るまで抽象的な概念にとどまる。下のパネルは、12月1日から1月30日までの一つのウォッシュセール・ウィンドウをそのまま示す。12月最終セッションに確定した損失について、ウィンドウ全体を表している。
各数値の背後にある正確なSQL
SELECT
toString(t.date) AS session_date,
round(t.close, 2) AS close,
round(100 * (t.close / a.first_close - 1), 2) AS change_pct
FROM
(
SELECT
date,
toFloat64(any(close)) AS close
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'AAPL'
AND date >= '2025-12-01'
AND date <= '2026-01-30'
GROUP BY date
) AS t
CROSS JOIN
(
SELECT toFloat64(argMin(close, date)) AS first_close
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'AAPL'
AND date >= '2025-12-01'
AND date <= '2026-01-30'
) AS a
ORDER BY t.dateこの61暦日にはAAPLのセッションが42回あった。株価は始点の終値$283.1でウィンドウに入り、終点の終値$259.48でウィンドウを出た。始点から-8.34%だった。12月最終セッションに売却して損失を確定したい投資家は、これらすべてのセッションを通じて、実質的に同一のエクスポージャーを避ける必要があった。ルールによって、税務上の判断がウィンドウ期間中の市場エクスポージャーの判断に変わる。
1099-Bが把握すること、把握できないこと
ブローカーは、ウォッシュセールを口座ごと、証券識別子ごとに計算する。株式ではCUSIP、オプションでは契約シンボルを使う。これはブローカーに求められる報告上の処理であり、申告書に適用される法令より狭い。1091条は納税者単位で、すべての口座をまたいで適用される。配偶者の口座や、投資家が支配する法人なども含まれる。
この差が、読者から寄せられる驚きの大半を生む。
- ブローカーAで損失確定売りを行い、ブローカーBでウィンドウ内に買い戻した場合、どちらの1099-Bにもウォッシュセールは表示されない。それでも納税者にはウォッシュセールが一つある。
- 株式を損失確定で売却し、同じ口座でその株式のコールを買った場合、両者が照合されるかどうかは法令ではなくブローカーのシステムに左右される。
- 自分の口座で損失確定売りを行い、配偶者の口座で買い戻した場合、どのブローカーも両方を把握できない。
- 含み損のあるコールを新しい行使価格へロールすると、識別子が変わるため、フォーム上は問題なく処理される。それでも、実質的に同一かどうかという問題は残る。
1099-Bは判定結果ではなく、入力データとして扱うべきだ。ファンドでも同じ問題が別の形で生じる。単一の指数に連動する2つのファンドは、書面上は別個の証券だからだ。投資信託を損失確定で売却する場合では、このケースを説明している。
二度と戻らないケース:IRAで買い戻す場合
通常のウォッシュセールは、控除の繰り延べである。否認された損失は買い替え後のポジションのコストベースに加算され、旧ポジションの保有期間が新しいポジションに引き継がれる。控除は、そのポジションを最終的に閉じた時点で認められる。
買い替えをIRA内で行うと、この連鎖が途切れる。Revenue Ruling 2008-5は、課税口座での売却による損失について、ウィンドウ内にIRAまたはRoth IRAで実質的に同一の株式や証券を買った場合、損失は否認されると定めている。さらに、IRAのコストベースを引き上げる仕組みはなく、1091(d)条にもその方法はない。何も繰り越されず、控除は永久に失われる。
この非対称性があるため、IRAでの買い戻しは、確定申告時ではなく取引前に確認しておくべきケースだ。61日すべてが適用され、Roth IRAも通常のIRAと同じ扱いになる。
保有期間と移転する損失
損失が消滅せず繰り延べられる場合、二つの要素が移転する。否認された損失額は、買い替え後の株式のコストベースに加算される。売却したポジションの保有期間は買い替え後のポジションに加算されるため、取得から数日しか経っていないポジションでも、税務上は長期保有になることがある。保有期間の計算は配当の扱いにも関係する。適格配当の保有期間を参照されたい。
この枠組みの対象外となる契約もある。広範な株価指数のオプションは独自の制度に基づき年末に時価評価され、長期と短期に60/40で区分される。そのため、年末時点の損失は買い戻しウィンドウではなく、その時価評価によって処理される。指数オプションが60/40で課税される理由を参照されたい。
よくある質問
ウォッシュセール・ウィンドウは30日ですか、それとも61日ですか。
61暦日です。売却前30日、売却日当日、売却後30日が対象になります。売却日から先だけを数えると半分を見落とす。損失確定売りの前に行った買い付けも、後に行った買い付けと同じく買い替えに該当する。
コールオプションを買うとウォッシュセールになりますか。
損失確定で売却した株式について、ウィンドウ内にコールを買った場合は該当する。1091条は、実質的に同一の株式を取得する契約またはオプションに適用される。コールを行使しなくてもウォッシュセールになる。
ウォッシュセール・ルールは、異なる2つの証券口座にも適用されますか。
適用される。ブローカーは口座ごと、証券識別子ごとにウォッシュセールを計算する。一方、ルールは配偶者の口座を含むすべての口座をまたいで、納税者に適用される。各ブローカーの1099-Bが問題なくても、ウォッシュセールがなかったことにはならない。
異なる行使価格のコールは、売却したコールと実質的に同一ですか。
この点を答える規則はない。財務省は、あるオプションが別のオプションと実質的に同一になる条件を定義していない。ブローカーの報告では、経済的な性質ではなくシンボルで契約を照合するため、ロールは通常フラグなしで処理される。法令上のエクスポージャー基準は、報告上の慣行より広い。
IRA内で株式を買い戻すとどうなりますか。
損失は否認され、永久に失われる。Revenue Ruling 2008-5は、1091(d)条には否認された損失をIRAのコストベースに加算する方法がないと定めている。そのため、通常のウォッシュセールとは異なり、後で回収されることはない。
データ注記
セッション数は、米国株式市場が通常の取引セッションを開いた日を示すSPYの日次記録に基づく。最初のパネルは各月の最終セッションを基準にし、その前後61暦日内にあるすべてのセッションを数えている。12月のパネルは2025年12月に固定し、市場データのパネルは2025年12月1日から2026年1月30日に固定しているため、いずれも更新されない。デルタのパネルは、インプライド・ボラティリティが収束し、出来高がゼロではない、満期まで20〜45日の契約だけを対象とする。2026年6月までのデータを平均し、行使価格は当日の原資産終値に対して区分している。直近データには1〜2日の取り込み遅延があり、影響するのは月次で更新するパネルだけだ。これらはすべて税務上の助言ではなく、実質的に同一かどうかの判断は事実関係に基づく問題であり、税務専門家が全体を確認する必要がある。
上記の各パネルには、作成に使ったSQLが付いているため、開いてセッション数を自分で再計算できる。自分の日付で61日間のウィンドウを確認するには、Strasmore terminalで平易な英語で依頼されたい。