Strasmore Research
গভীর বিশ্লেষণ Matt Connorদ্বারা Matt Connor

Wash Sale Rule ও Options: 61 দিনের সময়সীমা

Wash sale rule 30 নয়, 61 দিন চলে এবং options-ও এর আওতায় পড়ে। Calls, rolls, deep in the money puts, 1099-B gap ও IRA-তে মুছে যাওয়া loss বুঝুন।

Wash sale rule অনুযায়ী, কোনো security লোকসানে বিক্রি করে 61 দিনের সময়সীমার মধ্যে substantially identical security কিনলে capital loss গ্রহণযোগ্য হয় না। এই সময়সীমার মধ্যে থাকে বিক্রির আগের 30 দিন, বিক্রির দিন এবং পরের 30 দিন। Options এই নিয়মের আওতায় দুইভাবে পড়ে। এগুলো stock loss অগ্রহণযোগ্য করে এমন replacement হতে পারে, আবার নিজস্ব loss position-ও হতে পারে। Taxable account-এ অগ্রহণযোগ্য loss নষ্ট হয় না। এটি replacement position-এর cost basis-এ যুক্ত হয়ে সেখানেই অপেক্ষা করে।

এই পৃষ্ঠায় প্রক্রিয়াটি ব্যাখ্যা করা হয়েছে। এটি tax advice নয়।

Wash sale window কেন 30 দিন নয়, 61 দিন

হিসাবটি যোগ করুন: আগের 30 দিন, বিক্রির দিন নিজে 1 দিন, এবং পরের 30 দিন—মোট 61 calendar days। এগুলো trading days নয়। Weekend এবং market holiday-ও গণনার মধ্যে থাকে। নিচের panel-এ প্রতিটি মাসের শেষ trading session-কে ভিত্তি ধরে গণনা করা হয়েছে, ওই মাসের 61 দিনের window-এর মধ্যে কতগুলো session পড়ে।

কুয়েরি61 দিনের wash sale window-তে কতগুলি trading session থাকে
প্রতিটি সংখ্যার পেছনের সঠিক 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

সমতল রেখাটি rule-এর 61 calendar days দেখায়। নিচের রেখাটি দেখায়, ওই দিনগুলোর মধ্যে কত দিন market খোলা ছিল। Panel-এর প্রথম মাসের window-এ 42টি session রয়েছে, সাম্প্রতিকতম মাসে রয়েছে 42টি, এবং panel-এ মোট 30 মাসের anchor রয়েছে।

Window-এর যে অর্ধেকটি মানুষ ভুলে যায়, সেটি হলো শুরুর দিকের অর্ধেক। আমরা সাধারণত sale-এর দিন থেকে সামনে গুনে calendar-এ 31তম দিন চিহ্নিত করি। Sale-এর আগের 30 দিনও একইভাবে গণনা হয়। Averaging down করার সময় 10 তারিখে আরও 100টি শেয়ার কিনলেন, 20 তারিখে আপনার মূল lot লোকসানে বিক্রি করলেন—তাহলে আগে করা সেই purchase-টিও window-এর মধ্যে পড়ে। পরে আর কিছু না কিনলেও বিক্রি করা lot-এর loss অগ্রহণযোগ্য হবে। এখানে কোন lot account থেকে বের হচ্ছে, তা অত্যন্ত গুরুত্বপূর্ণ। Trade করার সময় এটিই একটি সিদ্ধান্ত: cost basis method কীভাবে lot বেছে নেয়

December-এর সমস্যা

বছরের শেষ কয়েক সপ্তাহে loss harvesting বেশি হয়। তখন window-এর হিসাব সবচেয়ে বেশি প্রভাব ফেলে। বছরের শেষ session-এ করা sale-এর repurchase window জানুয়ারি পর্যন্ত চলে যায়। আবার জানুয়ারিতে করা purchase আগের বছরের return-এ ইতিমধ্যে report করা loss-কে অগ্রহণযোগ্য করে দিতে পারে।

কুয়েরিপ্রতিটি December session এবং এর wash sale window নতুন বছরে কতদূর পৌঁছায়
প্রতিটি সংখ্যার পেছনের সঠিক 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 একটি December session। হিসাব স্থির রাখতে সবগুলোকে December 2025-এ স্থাপন করা হয়েছে। Dec 1 তারিখে sale হলে window-এর 0 দিন নতুন বছরে পড়ে। Dec 31 তারিখে sale হলে এর মধ্যে 30 দিন নতুন বছরে পড়ে, এবং পুরো window-জুড়ে মোট 42টি trading session থাকে। December statement-এ এর কোনো সংকেত থাকে না। অগ্রহণযোগ্য loss January shares-এর সঙ্গে যুক্ত হয়। নতুন position শেষ পর্যন্ত বন্ধ না হওয়া পর্যন্ত এটি deductible হয় না। সেটি পরের বছরেও হতে পারে, আবার কয়েক বছর পরেও হতে পারে।

Options কীভাবে wash sale rule-এর আওতায় পড়ে

Section 1091 stock বা securities-এর পাশাপাশি substantially identical stock acquire করার contract বা option-কেও অন্তর্ভুক্ত করে। 1988 সালে Congress এই বিধানকে buy বা sell করার contract এবং option পর্যন্ত প্রসারিত করে। Trading screen-এ এর চারটি গুরুত্বপূর্ণ ফল রয়েছে:

  • লোকসানে বিক্রি করা stock-এর ওপর call কেনা নিজেই wash sale। Call হলো shares acquire করার একটি contract। এটি exercise করতেই হবে এমন নয়। Strike যত দূরেই হোক, rule প্রয়োগ থেকে call-কে বাদ দেওয়ার মতো দূরত্ব নেই।
  • লোকসানে call বিক্রি করে window-এর মধ্যে underlying stock কিনলে একই প্রশ্ন উল্টোভাবে ওঠে। উত্তরটি substantially identical standard-এর ওপর নির্ভর করে, কোনো প্রকাশিত safe harbor-এর ওপর নয়।
  • এমনভাবে in the money put লেখা হলে, যার exercise হওয়া প্রায় নিশ্চিত মনে হয়, সেটিকে stock কেনার কাছাকাছি হিসেবে বিবেচনা করা হতে পারে।
  • কোনো option-এর loss হলো security-এর loss। তাই option থেকে option replacement-এর ক্ষেত্রেও rule প্রযোজ্য।

একটি contract কত stock বহন করে, তা পরিমাপ করা যায়। Underlying-এ $1 পরিবর্তনের বিপরীতে option-এর price কত পরিবর্তিত হয়, সেটিই delta। Delta-কে 100 দিয়ে গুণ করলে একটি contract যে shares-এর exposure-এর প্রতিনিধিত্ব করে, তার আনুমানিক হিসাব পাওয়া যায়। June 2026 পর্যন্ত expiry-র 20 থেকে 45 দিন বাকি থাকা AAPL contract-গুলোকে stock-এর তুলনায় strike কোথায় ছিল তার ভিত্তিতে panel 5টি band-এ ভাগ করা হয়েছে। এরপর প্রতিটি band-এ delta-এর গড় নেওয়া হয়েছে।

কুয়েরিstrike distance অনুযায়ী গড় call ও put delta, AAPL, expiry পর্যন্ত 20 থেকে 45 দিন, June 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

বাম থেকে ডানে পড়ুন। Stock-এর অনেক নিচে strike করা call-গুলোর delta-এর গড় ছিল 0.937। এটি one-এর কাছাকাছি, তাই contract-টি প্রায় dollar-for-dollar ভিত্তিতে shares-এর গতিবিধি অনুসরণ করে। Stock-এর অনেক ওপরে strike করা call-গুলোর গড় ছিল 0.017। Puts বিপরীতভাবে চলে। Stock-এর সবচেয়ে ওপরে strike করা puts-এর absolute delta-এর গড় ছিল 0.888, আর সবচেয়ে নিচে strike করা puts-এর গড় ছিল 0.015। ডান প্রান্তটি deep in the money put। এই contract-এর writer shares-এ long position-এর কাছাকাছি exposure বহন করেন। Strike এবং expiration-এর পরিভাষা বুঝতে শুরু করুন option chain কীভাবে পড়তে হয় দিয়ে।

IRS কখনও “deep enough”-এর কোনো নির্দিষ্ট সংখ্যা দেয়নি। Practitioners-এর প্রয়োগ করা working standard হলো: put লেখার সময় সেটি exercise ছাড়া expire হওয়ার কোনো substantial likelihood আছে কি না। Panel-এর একেবারে ডান দিকে থাকা put এবং মাঝামাঝি থাকা put একই ধরনের claim নয়।

Loss হওয়া long call roll করা

Options-সংক্রান্ত সবচেয়ে সাধারণ প্রশ্নটির উত্তরই সবচেয়ে অনিশ্চিত। আপনার একটি call আছে, সেটির value কমেছে, আপনি সেটি বিক্রি করে একই underlying-এর ওপর ভিন্ন strike বা পরবর্তী expiration-সহ আরেকটি call কিনলেন। নতুন contract কি পুরোনোটির substantially identical?

একটি option কখন অন্য option-এর substantially identical হয়, তা নির্ধারণ করে Treasury কোনো regulation জারি করেনি। এটিই বাস্তব অবস্থা। প্রয়োগে যে reporting convention দেখা যায়, তা হলো brokers contract symbol অনুযায়ী option position match করে। তাই ভিন্ন strike বা ভিন্ন expiration-এ roll করলে 1099-B-তে সাধারণত কোনো flag দেখা যায় না। কিন্তু convention কোনো ruling নয়। Statutory standard জানতে চায় replacement-এর পরও আপনি একই up-and-down move-এর exposure বহন করছেন কি না। একই expiration-সহ এক strike দূরের call এবং ছয় মাস পরের, far out of the money call এই প্রশ্নের ভিন্ন উত্তর দিতে পারে।

দুটি ব্যাখ্যা পাশাপাশি রয়েছে। সতর্ক ব্যাখ্যায় near strike এবং near expiration replacement-কে একই exposure হিসেবে ধরা হয়। উদার ব্যাখ্যায় contract terms-এর যেকোনো পরিবর্তনকে নতুন security হিসেবে ধরা হয়। কোনোটিই এখনও একটি সুস্পষ্ট সীমারেখা নির্ধারণ করেনি।

Tape-এ 61 দিন দেখতে কেমন

61 calendar days session হিসেবে না দেখলে এটি একটি বিমূর্ত ধারণা থেকে যায়। নিচের panel-এ ঠিক একটি wash sale window দেখানো হয়েছে: December 1 থেকে January 30। এটি December-এর শেষ session-এ নেওয়া loss-এর সম্পূর্ণ window।

কুয়েরিtape-এ একটি পূর্ণ 61 দিনের wash sale window: AAPL, Dec 1 2025 থেকে Jan 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 session ছিল। Stock-টি window-এ প্রবেশের সময় close ছিল $283.1, এবং window থেকে বের হওয়ার সময় close ছিল $259.48—শুরুর অবস্থান থেকে -8.34%। কেউ December-এর শেষ session-এ বিক্রি করে loss দাবি করতে চাইলে, ওই session-গুলোর প্রতিটিতে substantially identical exposure এড়িয়ে চলতে হতো। Rule একটি tax decision-কে window-টির পুরো সময়ের জন্য market exposure decision-এ পরিণত করে।

আপনার 1099-B কী জানে, আর কী জানে না

Brokers একবারে একটি account এবং একটি security identifier অনুযায়ী wash sale গণনা করে। Stock-এর ক্ষেত্রে সেটি CUSIP, আর option-এর ক্ষেত্রে contract symbol। Broker reporting rules তাদের কাছে এটিই চায়। কিন্তু return-এ যে law প্রয়োগ করতে হয়, এটি তার চেয়ে সংকীর্ণ। Section 1091 taxpayer-ভিত্তিক এবং সব account জুড়ে প্রযোজ্য। এর মধ্যে spouse-এর account এবং আপনার নিয়ন্ত্রণাধীন entity-ও অন্তর্ভুক্ত।

এই পার্থক্য থেকেই পাঠকেরা যে বেশিরভাগ surprise-এর কথা জানান, তা তৈরি হয়:

  • Broker A-তে লোকসানে বিক্রি করে window-এর মধ্যে Broker B-তে আবার কিনলেন। কোনো 1099-B-তেই wash sale দেখা যাবে না। তবু taxpayer-এর ক্ষেত্রে wash sale হয়েছে।
  • লোকসানে stock বিক্রি করে একই account-এ তার ওপর call কিনলেন। দুটিকে match করা হবে কি না, তা broker-এর software-এর ওপর নির্ভর করে, statute-এর ওপর নয়।
  • নিজের account-এ লোকসানে বিক্রি করে spouse-এর account-এ আবার কিনলেন। কোনো broker দুই দিক দেখতে পায় না।
  • Loss হওয়া call নতুন strike-এ roll করলেন। Identifier বদলে গেছে, তাই form-এ কোনো সমস্যা দেখা যাবে না। কিন্তু substantially identical প্রশ্নটি থেকেই যায়।

1099-B-কে determination নয়, একটি input হিসেবে বিবেচনা করুন। Funds-এর ক্ষেত্রেও একই সমস্যা অন্য রূপে দেখা যায়। একই index track করা দুটি fund কাগজে আলাদা security: লোকসানে mutual fund বিক্রি করা-তে এই পরিস্থিতি ব্যাখ্যা করা হয়েছে।

যেটি কখনও ফিরে আসে না: IRA-তে আবার কেনা

প্রতিটি সাধারণ wash sale হলো একটি deferral। অগ্রহণযোগ্য loss replacement position-এর basis-এ যুক্ত হয়। পুরোনো holding period নতুন position-এর সঙ্গে যুক্ত হয়। Position শেষ পর্যন্ত বন্ধ হলে deduction পরে পাওয়া যায়।

IRA-তে replacement কেনা এই chain ভেঙে দেয়। Revenue Ruling 2008-5 অনুযায়ী, taxable account-এ করা sale-এর loss অগ্রহণযোগ্য হয়, যদি window-এর মধ্যে আপনার IRA বা Roth IRA-তে substantially identical stock বা securities কেনা হয়। Basis adjustment-এর কোনো জায়গা থাকে না। Section 1091(d) IRA-এর basis বাড়ানোর কোনো উপায় দেয় না। কিছুই পরবর্তী সময়ে এগিয়ে আসে না। Deduction স্থায়ীভাবে হারিয়ে যায়।

এই অসমতা IRA-কে এমন একটি বিষয় করে তোলে, যা tax time-এ নয়, trade করার আগেই যাচাই করা উচিত। পুরো 61 দিনই প্রযোজ্য। Roth IRA-কে traditional IRA-এর মতোই বিবেচনা করা হয়।

Holding period এবং যে loss স্থানান্তরিত হয়

Loss মুছে না গিয়ে defer হলে দুটি বিষয় তার সঙ্গে স্থানান্তরিত হয়। অগ্রহণযোগ্য amount replacement shares-এর basis-এ যুক্ত হয়। বিক্রি করা position-এর holding period replacement-এর holding period-এর সঙ্গে যুক্ত হয়। ফলে মাত্র কয়েক দিন আগে কেনা replacement কাগজে long term হয়ে যেতে পারে। Holding period-এর হিসাব dividend treatment-ও নিয়ন্ত্রণ করে: qualified dividend holding period দেখুন।

এক ধরনের contract এই কাঠামোর বাইরে থাকে। Broad based index options নিজস্ব regime অনুযায়ী বছরের শেষে mark to market হয় এবং long term ও short term-এর মধ্যে 60/40 অনুপাতে ভাগ হয়। তাই এগুলোর year end loss repurchase window নয়, ওই mark-এর মাধ্যমে নিষ্পত্তি হয়: index options কেন 60/40 হারে taxed হয়

FAQ

Wash sale window কি 30 দিন, নাকি 61 দিন?

61 calendar days। Rule-এ sale-এর আগের 30 দিন, sale-এর দিন এবং পরের 30 দিন অন্তর্ভুক্ত। Sale-এর পর থেকে শুধু সামনে গুনলে window-এর অর্ধেক বাদ পড়ে। Loss sale-এর আগে করা purchase-ও পরের purchase-এর মতোই replacement হিসেবে গণ্য হয়।

Call option কিনলে কি wash sale হয়?

হ্যাঁ, যদি লোকসানে বিক্রি করা stock-এর ওপর window-এর মধ্যে call কেনা হয়। Section 1091 substantially identical stock acquire করার contract বা option-কে অন্তর্ভুক্ত করে। Call কখনও exercise না করলেও wash sale প্রযোজ্য হয়।

দুটি ভিন্ন brokerage account-এর মধ্যে কি wash sale rule প্রযোজ্য?

হ্যাঁ। Brokers account এবং security identifier অনুযায়ী wash sale গণনা করে। কিন্তু rule taxpayer-এর ক্ষেত্রে সব account জুড়ে প্রযোজ্য, spouse-এর account-সহ। প্রতিটি broker-এর 1099-B পরিষ্কার হলেও wash sale হয়নি—এমনটা বোঝায় না।

আমি যে call বিক্রি করেছি, ভিন্ন strike-এর call কি তার substantially identical?

কোনো regulation এর উত্তর দেয় না। Treasury কখন একটি option অন্য option-এর substantially identical হয়, তা নির্ধারণ করেনি। Broker reporting economics নয়, symbol অনুযায়ী contract match করে। তাই roll সাধারণত flag ছাড়াই report হয়। Statute-এর exposure standard reporting convention-এর চেয়ে বিস্তৃত।

IRA-তে stock আবার কিনলে কী হয়?

Loss অগ্রহণযোগ্য হয়ে স্থায়ীভাবে হারিয়ে যায়। Revenue Ruling 2008-5 অনুযায়ী, Section 1091(d) IRA-এর basis-এ অগ্রহণযোগ্য loss যোগ করার কোনো উপায় দেয় না। তাই সাধারণ wash sale-এর বিপরীতে পরে কিছুই পুনরুদ্ধার হয় না।

Data notes

Session count নেওয়া হয়েছে SPY-এর daily record থেকে। US equity market-এ যেদিন regular session ছিল, SPY সেই দিনগুলোর proxy হিসেবে ব্যবহৃত হয়েছে। প্রথম panel-এ প্রতিটি মাসের শেষ session-কে anchor ধরে তার আশেপাশের 61 calendar days-এর মধ্যে প্রতিটি session গণনা করা হয়েছে। December panel December 2025-এ এবং tape panel December 1 2025 থেকে January 30 2026 পর্যন্ত স্থির করা হয়েছে। তাই কোনোটিই refresh হয় না। Delta panel-এ কেবল converged implied volatility এবং non zero volume থাকা, expiry-র 20 থেকে 45 দিন বাকি থাকা contract নেওয়া হয়েছে। June 2026 জুড়ে এগুলোর গড় করা হয়েছে এবং প্রতিদিনের underlying close-এর তুলনায় strike অনুযায়ী bucket করা হয়েছে। Front edge data-তে এক বা দুই দিনের ingest lag থাকে। এটি কেবল rolling monthly panel-কে প্রভাবিত করে। এর কোনোটিই tax advice নয়। Substantially identical determination হলো facts-নির্ভর প্রশ্ন, যা tax professional-কে সম্পূর্ণ তথ্য দেখে নির্ধারণ করতে হয়।


উপরের প্রতিটি panel-এর সঙ্গে সেটি তৈরি করা SQL-ও দেওয়া আছে। তাই একটি panel খুলে আপনি নিজেই session-এর হিসাব পুনরায় করতে পারবেন। নিজের তারিখ অনুযায়ী 61 দিনের window map করতে Strasmore terminal-এ plain English-এ অনুরোধ করুন।