Strasmore Research

Wash Sale Rule आणि Options: 61 दिवसांची विंडो

Wash Sale Rule 30 नव्हे, 61 दिवसांचा आहे आणि optionsही त्यात येतात. Calls, rolls, deep in the money puts, 1099-B gap आणि IRA पुसणारा तोटा समजून घ्या.

वॉश सेल नियमामुळे तोटा असताना सिक्युरिटी विकून 61 दिवसांच्या कालावधीत तिच्यासारखीच सिक्युरिटी घेतल्यास भांडवली तोटा मान्य केला जात नाही. या कालावधीत विक्रीपूर्वीचे 30 दिवस, विक्रीचा दिवस आणि विक्रीनंतरचे 30 दिवस येतात. या नियमात options दोन प्रकारे येतात: शेअरवरील तोटा अमान्य करणारी replacement position म्हणून आणि स्वतःच्या तोट्याची position म्हणून. करपात्र खात्यात अमान्य झालेला तोटा नष्ट होत नाही. तो replacement positionच्या cost basisमध्ये जोडला जातो आणि तिथे पुढील व्यवहाराची वाट पाहतो.

या पृष्ठावर या प्रक्रियेची यांत्रिकी समजावली आहे. हा करसल्ला नाही.

वॉश सेल विंडो 30 नव्हे, तर 61 दिवसांची का आहे

हिशोब असा आहे: विक्रीपूर्वीचे 30 दिवस, विक्रीचा दिवस आणि विक्रीनंतरचे 30 दिवस मिळून 61 calendar days होतात. हे trading days नसून calendar days आहेत. त्यामुळे weekends आणि market holidaysसह सलग मोजणी होते. खालील panel प्रत्येक महिन्याच्या शेवटच्या trading sessionला आधार मानतो आणि त्या महिन्यातील 61 दिवसांच्या windowमध्ये किती sessions येतात ते मोजतो.

क्वेरी61 दिवसांच्या wash sale कालावधीत किती ट्रेडिंग सत्रे येतात
प्रत्येक आकड्यामागील अचूक 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
Run this yourself

सरळ रेषा म्हणजे नियमातील 61 calendar days. खालची रेषा म्हणजे त्या दिवसांपैकी market open असलेल्या दिवसांची संख्या. Panelमधील पहिल्या महिन्याच्या windowमध्ये 42 sessions आहेत. सर्वात अलीकडील महिन्यात 42 sessions आहेत. या panelमध्ये एकूण 30 महिन्यांचे anchors आहेत.

लोक अनेकदा विसरतात तो windowचा अर्धा भाग म्हणजे सुरुवातीचा भाग. आपण सामान्यतः विक्रीच्या दिवसापासून पुढे मोजतो आणि calendarवर 31वा दिवस चिन्हांकित करतो. पण विक्रीपूर्वीचे 30 दिवसही तितकेच महत्त्वाचे आहेत. उदाहरणार्थ, averaging down करताना 10 तारखेला आणखी 100 शेअर्स खरेदी केले आणि 20 तारखेला मूळ lot तोट्यात विकला, तर आधीच केलेली खरेदी windowमध्ये येते. त्यानंतर कोणतीही खरेदी केली नसली तरी विकलेल्या lotवरील तोटा अमान्य होतो. या ठिकाणी कोणता lot खात्यातून बाहेर जातो हे अत्यंत महत्त्वाचे असते. हा निर्णय tradeच्या वेळी घेतला जातो: cost basis पद्धती lot कसा निवडतात.

डिसेंबरची अडचण

वर्षाच्या शेवटच्या आठवड्यांत loss harvesting मोठ्या प्रमाणावर होते. त्यामुळे windowचा हिशोब याच काळात सर्वाधिक महत्त्वाचा ठरतो. वर्षाच्या शेवटच्या sessionला केलेल्या विक्रीमुळे repurchase window जानेवारीत बरीच पुढे जाते. तसेच जानेवारीतील खरेदीमुळे मागील वर्षाच्या returnमध्ये आधीच नोंदवलेला तोटा अमान्य होऊ शकतो.

क्वेरीडिसेंबरमधील प्रत्येक सत्र आणि त्याचा wash sale कालावधी नव्या वर्षात कितीपर्यंत पोहोचतो
प्रत्येक आकड्यामागील अचूक 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
Run this yourself

प्रत्येक row म्हणजे डिसेंबरमधील एक session आहे. हिशोब स्थिर राहावा म्हणून सर्व rows December 2025ला जोडले आहेत. Dec 1 रोजी केलेल्या विक्रीसाठी windowमधील 0 दिवस नवीन वर्षात येतात. Dec 31 रोजी केलेल्या विक्रीसाठी 30 दिवस नवीन वर्षात येतात. त्या windowमध्ये सुरुवातीपासून शेवटपर्यंत 42 trading sessions आहेत. December statementवर याची कोणतीही सूचना दिसत नाही. अमान्य झालेला तोटा जानेवारीत घेतलेल्या शेअर्सना जोडला जातो. ही नवीन position बंद केल्यावरच तो deduction म्हणून मिळू शकतो. ते पुढील वर्षी किंवा अनेक वर्षांनीही होऊ शकते.

Options वॉश सेल नियमात कसे येतात

Section 1091मध्ये stock किंवा securitiesसोबत substantially identical stock घेण्याचा contract किंवा option यांचाही समावेश आहे. Congressने 1988मध्ये हा नियम वाढवून खरेदी किंवा विक्रीसाठीचे contracts आणि options यांनाही लागू केला. Trading screenसमोर याचे चार परिणाम दिसतात:

  • नुकताच तोट्यात विकलेल्या stockवर call खरेदी केल्यास तो स्वतःच wash sale ठरतो. Call हा शेअर्स घेण्याचा contract आहे. तो exercise करणे आवश्यक नाही. Strike कितीही दूर असला तरी नियम लागू होऊ शकतो.
  • तोट्यात call विकून windowमध्ये underlying stock खरेदी केल्यास हाच प्रश्न उलट दिशेने लागू होतो. उत्तर published safe harborवर नव्हे, तर substantially identical या निकषावर अवलंबून असते.
  • Exercise जवळजवळ निश्चित वाटेल इतका deep in the money put लिहिल्यास त्याकडे stock खरेदीसारखे पाहिले जाऊ शकते.
  • Optionवरील तोटा हा securityवरील तोटा असतो. त्यामुळे option ते option replacementलाही हा नियम लागू होतो.

एखाद्या contractमध्ये किती stock exposure आहे हे मोजता येते. Underlyingमध्ये $1ची हालचाल झाल्यावर optionच्या किंमतीत होणारी हालचाल म्हणजे delta. Deltaला 100ने गुणल्यास एका contractच्या exposureमागे असलेल्या शेअर्सची अंदाजे संख्या मिळते. June 2026पर्यंत expiryसाठी 20 ते 45 दिवस असलेले AAPL contracts, strike stockच्या तुलनेत कुठे होता यानुसार panel 5 bandsमध्ये विभागतो आणि प्रत्येक bandमधील deltaची सरासरी काढतो.

क्वेरीस्ट्राइकपासूनच्या अंतरानुसार सरासरी call आणि put delta, AAPL, expiry ला 20 ते 45 दिवस, जून 2026
प्रत्येक आकड्यामागील अचूक 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)
Run this yourself

Panel डावीकडून उजवीकडे वाचा. Stockच्या किंमतीपेक्षा खूप खाली असलेल्या strikesचे calls सरासरी 0.937 deltaवर होते. हा आकडा oneच्या जवळ असल्यामुळे contract शेअर्सच्या किंमतीचा जवळजवळ dollar-for-dollar मागोवा घेतो. Stockच्या किंमतीपेक्षा खूप वर असलेल्या strikesचे calls सरासरी 0.017 होते. Putsचा कल उलटा असतो. Stockच्या किंमतीपेक्षा सर्वाधिक वर असलेल्या strikesचे puts absolute deltaमध्ये सरासरी 0.888 होते. सर्वाधिक खाली असलेल्या strikesचे puts सरासरी 0.015 होते. उजवीकडील टोक deep in the money put दाखवते. अशा contractचा writer शेअर्समध्ये long positionसदृश exposure बाळगतो. Strikes आणि expirationsची भाषा समजून घेण्यासाठी option chain कशी वाचावी हे पाहा.

IRSने “deep enough”साठी कधीही निश्चित आकडा दिलेला नाही. Practitioners वापरत असलेल्या कार्यपद्धतीनुसार put लिहिताना तो unexercised expire होण्याची कोणतीही substantial likelihood आहे का, हे पाहिले जाते. Panelच्या अगदी उजवीकडे असलेला put आणि मध्यभागी असलेला put हे समान claim नसतात.

तोट्यातील long call roll करणे

Optionsशी संबंधित सर्वाधिक सामान्य प्रश्नाचे उत्तर सर्वाधिक अनिश्चित आहे. तुमच्याकडे एक call आहे. त्याची किंमत कमी झाली आहे. तुम्ही तो विकता आणि त्याच underlyingवर वेगळ्या strikeचा किंवा नंतरच्या expirationचा दुसरा call खरेदी करता. नवीन contract हा जुन्या contractसारखा substantially identical आहे का?

Treasuryने एक option दुसऱ्या optionसारखा substantially identical कधी ठरतो याची व्याख्या करणारे regulations जारी केलेले नाहीत. हीच सध्याची वस्तुस्थिती आहे. प्रत्यक्ष व्यवहारात reporting convention वापरली जाते: brokers option positionsची जुळवणी contract symbolनुसार करतात. त्यामुळे वेगळ्या strikeकडे किंवा वेगळ्या expirationकडे केलेला roll साधारणपणे 1099-Bवर flag होत नाही. पण convention म्हणजे ruling नाही. कायद्यातील निकष replacementमुळे तुम्ही त्याच upward आणि downward movesच्या exposureमध्ये राहता का, हे विचारतो. त्यामुळे त्याच expirationचा one strike दूर असलेला call आणि सहा महिन्यांनी expire होणारा, far out of the money call यांचे उत्तर वेगळे असू शकते.

दोन व्याख्या प्रचलित आहेत. सावध व्याख्येनुसार जवळचा strike आणि जवळची expiration असलेली replacement exposure substantially identical मानली जाऊ शकते. उदार व्याख्येनुसार contract termsमधील कोणताही बदल नवीन security निर्माण करतो. यापैकी कोणतीही व्याख्या स्पष्ट bright lineमध्ये तपासली गेलेली नाही.

Tapeवर 61 दिवस कसे दिसतात

61 calendar days sessionsच्या रूपात पाहिल्याशिवाय केवळ अमूर्त संकल्पना वाटतात. खालील panelमध्ये December 1 ते January 30 अशी नेमकी एक wash sale window दाखवली आहे. ही Decemberच्या शेवटच्या sessionला झालेल्या तोट्याच्या विक्रीसाठीची पूर्ण window आहे.

क्वेरीटेपवरील पूर्ण 61 दिवसांचा wash sale कालावधी: AAPL, 1 डिसेंबर 2025 ते 30 जानेवारी 2026
प्रत्येक आकड्यामागील अचूक 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
Run this yourself

त्या 61 calendar daysमध्ये 42 AAPL sessions होत्या. Stockने windowमध्ये प्रवेश करताना $283.1 या closeवर व्यवहार केला आणि window संपताना $259.48 या closeवर होता. सुरुवातीच्या किंमतीपासून तो -8.34% अंतरावर होता. Decemberच्या शेवटच्या sessionला विक्री करून तोटा मिळवू इच्छिणाऱ्या व्यक्तीला या सर्व sessionsदरम्यान substantially identical exposureपासून दूर राहावे लागले असते. या windowच्या संपूर्ण कालावधीसाठी नियम करनिर्णयाला market exposureच्या निर्णयात रूपांतरित करतो.

तुमच्या 1099-Bला काय माहीत असते आणि काय माहीत नसते

Brokers wash salesचा हिशोब प्रत्येक accountसाठी आणि प्रत्येक security identifierसाठी स्वतंत्रपणे करतात. Stockसाठी हा identifier CUSIP असतो आणि optionसाठी contract symbol असतो. Broker reporting rules त्यांच्याकडून एवढीच अपेक्षा करतात. पण returnवर लागू होणाऱ्या कायद्यापेक्षा ही व्याप्ती कमी आहे. Section 1091 प्रत्येक taxpayerला लागू होतो आणि सर्व accountsमध्ये विचार केला जातो. यात spouseची accounts आणि तुमच्या नियंत्रणाखालील entities यांचाही समावेश होतो.

याच फरकामुळे वाचकांना सर्वाधिक आश्चर्य वाटते:

  • Broker Aकडे तोट्यात विक्री करून windowमध्ये Broker Bकडे पुन्हा खरेदी केली, तर कोणत्याही 1099-Bवर wash sale दिसत नाही. तरी taxpayerसाठी wash sale झालेला असतो.
  • Stock तोट्यात विकून त्याच accountमध्ये त्यावर call खरेदी केला, तर दोन्ही व्यवहारांची जुळवणी brokerच्या softwareवर अवलंबून असते, statuteवर नाही.
  • तुमच्या accountमध्ये तोट्यात विक्री करून spouseच्या accountमध्ये पुन्हा खरेदी केली, तर कोणत्याही brokerला दोन्ही बाजू दिसत नाहीत.
  • तोट्यातील call नवीन strikeकडे roll केला, तर identifier बदलतो. त्यामुळे form clean दिसतो. पण substantially identicalचा प्रश्न अजूनही उघडाच राहतो.

1099-Bकडे determination म्हणून नव्हे, तर input म्हणून पाहा. Fundsमध्येही हीच अडचण वेगळ्या स्वरूपात येते. एकाच indexचा मागोवा घेणारे दोन funds कागदोपत्री स्वतंत्र securities असतात: mutual funds तोट्यात विकणे या प्रकरणाची माहिती देते.

पुन्हा कधीही परत न येणारा तोटा: IRAमध्ये पुन्हा खरेदी

सामान्य wash saleमध्ये तोटा पुढे ढकलला जातो. अमान्य झालेला तोटा replacement positionच्या basisमध्ये जोडला जातो. जुन्या holdingचा कालावधी नवीन holdingला जोडला जातो. Position कायमची बंद केल्यावर deduction मिळतो.

Replacement IRAमध्ये खरेदी केल्यास ही साखळी तुटते. Revenue Ruling 2008-5नुसार करपात्र accountमधील विक्रीत झालेला तोटा अमान्य होतो, जर windowमध्ये substantially identical stock किंवा securities तुमच्या IRA किंवा Roth IRAमध्ये खरेदी केल्या. Basis adjustmentसाठी कुठेही जागा राहत नाही. Section 1091(d) IRAचा basis वाढवण्याची पद्धत देत नाही. काहीही पुढे carry forward होत नाही. Deduction कायमचा नष्ट होतो.

या असममिततेमुळे trade करण्यापूर्वी IRAचे प्रकरण तपासणे आवश्यक ठरते. Tax timeपर्यंत थांबू नये. सर्व 61 दिवस लागू होतात. Roth IRA आणि traditional IRAला या बाबतीत समान वागणूक दिली जाते.

Holding periods आणि पुढे जाणारा तोटा

तोटा नष्ट न होता पुढे ढकलला गेला, तर दोन गोष्टी त्याच्यासोबत जातात. अमान्य झालेली रक्कम replacement sharesच्या basisमध्ये जोडली जाते. विकलेल्या positionचा holding period replacementच्या holding periodमध्ये जोडला जातो. त्यामुळे काही दिवसांपूर्वी घेतलेली replacement position कागदोपत्री long term ठरू शकते. Holding periodचा हिशोब dividend treatmentवरही परिणाम करतो: qualified dividend holding period पाहा.

Contractsचा एक वर्ग या चौकटीबाहेर असतो. Broad based index optionsना त्यांच्या स्वतंत्र regimeनुसार वर्षअखेरीस mark to market केले जाते आणि long term व short termमध्ये 60/40 प्रमाणात विभागले जाते. त्यामुळे त्यावरील year end loss repurchase windowने नव्हे, तर त्या markने निश्चित होतो: index optionsवर 60/40 कर का लागतो.

वारंवार विचारले जाणारे प्रश्न

वॉश सेल window 30 दिवसांची आहे की 61 दिवसांची?

61 calendar days. या नियमात विक्रीपूर्वीचे 30 दिवस, विक्रीचा दिवस आणि विक्रीनंतरचे 30 दिवस येतात. विक्रीपासून फक्त पुढे मोजल्यास अर्धा कालावधी दुर्लक्षित होतो. तोट्यातील विक्रीपूर्वी केलेली खरेदीही नंतर केलेल्या खरेदीप्रमाणेच replacement मानली जाते.

Call option खरेदी केल्यास wash sale तयार होतो का?

होय, जर तोट्यात विकलेल्या stockवर windowमध्ये call खरेदी केला असेल. Section 1091मध्ये substantially identical stock घेण्याचा contract किंवा option समाविष्ट आहे. Call कधीही exercise केला नाही तरी wash sale लागू होतो.

दोन वेगवेगळ्या brokerage accountsमध्ये wash sale नियम लागू होतो का?

होय. Brokers accountनुसार आणि security identifierनुसार wash salesचा हिशोब करतात. पण नियम spouseच्या accountसह सर्व accountsमधील taxpayerच्या व्यवहारांना लागू होतो. प्रत्येक brokerकडून clean 1099-B मिळाले, याचा अर्थ wash sale झाला नाही असा होत नाही.

मी विकलेल्या callपेक्षा वेगळ्या strikeचा call substantially identical असतो का?

याचे उत्तर कोणतेही regulation देत नाही. Treasuryने एक option दुसऱ्या optionसारखा substantially identical कधी ठरतो हे निश्चित केलेले नाही. Brokers contractsची जुळवणी economicsनुसार नव्हे, तर symbolनुसार करतात. त्यामुळे roll साधारणपणे unflagged दिसतो. मात्र कायद्यातील exposure standard reporting conventionपेक्षा व्यापक आहे.

मी IRAमध्ये stock पुन्हा खरेदी केल्यास काय होते?

तोटा अमान्य होतो आणि कायमचा नष्ट होतो. Revenue Ruling 2008-5नुसार Section 1091(d) IRAच्या basisमध्ये अमान्य झालेला तोटा जोडण्याची कोणतीही पद्धत देत नाही. त्यामुळे सामान्य wash saleप्रमाणे हा तोटा नंतर वसूल होत नाही.

डेटा नोंदी

Session counts SPYच्या daily recordवर आधारित आहेत. US equity marketsमध्ये regular session झालेल्या दिवसांचे प्रतिनिधित्व करण्यासाठी SPY वापरले आहे. पहिला panel प्रत्येक महिन्याच्या शेवटच्या sessionला anchor मानतो आणि त्याभोवतीच्या 61 calendar daysमध्ये येणारे प्रत्येक session मोजतो. December panel December 2025ला pinned आहे. Tape panel December 1 2025 ते January 30 2026 या कालावधीवर pinned आहे. त्यामुळे यापैकी कोणताही panel refresh होत नाही. Delta panelमध्ये केवळ converged implied volatility आणि non zero volume असलेले, expiryसाठी 20 ते 45 दिवस शिल्लक असलेले contracts घेतले आहेत. June 2026पर्यंतच्या contractsची सरासरी काढली आहे. Strikes त्या दिवसाच्या underlying closeच्या तुलनेत bucket केले आहेत. Front edge dataमध्ये एक-दोन दिवसांचा ingest lag असतो. त्याचा परिणाम केवळ rolling monthly panelवर होतो. यापैकी कोणतीही माहिती tax advice नाही. Substantially identicalचा निर्णय factsवर आधारित प्रश्न आहे आणि tax professionalने संपूर्ण परिस्थिती पाहणे आवश्यक आहे.


वरील प्रत्येक panelसोबत तो तयार करणारी SQL दिली आहे. त्यामुळे तुम्ही panel उघडून sessionsचा हिशोब स्वतः तपासू शकता. तुमच्या स्वतःच्या तारखांवर 61 दिवसांची window मॅप करण्यासाठी Strasmore terminalवर plain Englishमध्ये विनंती करा.