Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

অপশনের ক্লোজিং মার্ক কীভাবে নির্ধারিত হয়

অপশনের ক্লোজিং মার্ক শেষ লেনদেন, bid বা midpoint নয়। দিনের শেষের mark কীভাবে নির্ধারিত হয়, কম ভলিউমে কেন বদলায় এবং এতে কী সমস্যা হয়, তা জানুন।

Option closing mark হলো দিনের শেষে কোনো broker, clearing house বা data vendor একটি চুক্তিকে যে মূল্য নির্ধারণ করে। একই রাতে একই strike-এর জন্য এই তিন পক্ষ তিনটি ভিন্ন সংখ্যা প্রকাশ করতে পারে। Mark শেষ লেনদেনের মূল্য নয়। কম লেনদেন হওয়া কোনো চুক্তিতে এটি সাধারণত এমন কোনো মূল্যও নয়, যে দামে কেউ ট্রেড করেছে। নিচের স্তরগুলো একে একে আলাদা করা হয়েছে। প্রথমে daily options record-এর সংখ্যা দেওয়া হয়েছে। এরপর প্রতিটি স্তর margin, statement এবং dataset-এ কী প্রভাব ফেলে, তা ব্যাখ্যা করা হয়েছে।

অপশন ক্লোজিং মার্ক কী?

মার্ক হলো একটি মূল্যায়ন। ট্রেড হলো একটি লেনদেন। দিনের শেষের অপশন মূল্যের প্রায় সব বিতর্ক শুরু হয় এই দুই বিষয়কে একই সংখ্যা হিসেবে বিবেচনা করা থেকে। আপনি যে price field দেখছেন, তার পেছনে চারটি পৃথক বিষয় থাকে।

  • Last sale। এটি একটি print: প্রকৃত ট্রেড, প্রকৃত মূল্যে, যে সময়ে সম্পন্ন হয়েছে সেই সময়ের timestamp-সহ। কোনো কন্ট্রাক্ট যদি সকাল 10:14-এ একবার ট্রেড হয় এবং এরপর আর না হয়, তাহলে বিকেল 4:00টায় price field-এ থাকা সংখ্যাটি এখনও সেই 10:14-এর print।
  • Closing quote। বাজার বন্ধের সময়কার দুই-পক্ষীয় বাজার। এতে bid এবং offer-এর সঙ্গে সংশ্লিষ্ট size থাকে। কোনো thin strike-এ এই দুই দাম 1 dollar দূরে থাকতে পারে। সেক্ষেত্রে midpoint হলো দুটি অভিপ্রায়ের গড়।
  • Broker mark। আপনার statement-এ দেখানো মূল্যায়ন। এটি সাধারণত closing quote-এর ভিত্তিতে তৈরি হয় এবং পরে একটি model-এর সীমার মধ্যে রাখা হয়। কোনো call-কে তার intrinsic value-এর নিচে mark করা হয় না। বিভিন্ন strike জুড়ে mark-এর ক্রমও এমনভাবে রাখা হয় যাতে তা উল্টে না যায়।
  • Clearing mark। সিস্টেমজুড়ে margin এবং settlement-এর জন্য clearing house দিনের শেষে যে মূল্য নির্ধারণ করে। এটি পরিকল্পিতভাবেই একটি model output।

OCC এবং US options exchange-গুলোর পৃষ্ঠপোষকতায় পরিচালিত শিক্ষা প্রতিষ্ঠান Options Industry Council-ও একই পার্থক্যটি তুলে ধরে: কোনো mark bid, offer, midpoint অথবা last sale-এ মিলে যায় কেবল কাকতালীয়ভাবে। একটিকে অন্যটির সমতুল্য ধরে নিলেই reconciliation-এর কাজে ভুল হয়।

নিষ্ক্রিয় চুক্তির মূল্য কেন তবু বদলে যায়

লক্ষণটি দিয়ে শুরু করা যাক। কোনো চুক্তির মূল্য আজ বদলে গেছে, অথচ তাতে প্রায় কোনো লেনদেনই হয়নি। শেষ লেনদেনের ক্ষেত্রে কোনো পরিবর্তন হওয়ার দরকার নেই। বদলেছে চুক্তিটিকে ঘিরে থাকা কোট করা বাজার, এবং সেই কোট পড়া মডেল।

প্যানেলটি 2026 সালের জুন পর্যন্ত পাঁচটি বহুল ব্যবহৃত underlying-এর তথ্য বিশ্লেষণ করে। এতে দৈনিক options file-এ 7 থেকে 120 দিন মেয়াদ বাকি থাকা প্রতিটি contract-day গণনা করা হয়েছে এবং প্রতিটি চুক্তিতে কতটা লেনদেন হয়েছে তার ভিত্তিতে সেগুলো ভাগ করা হয়েছে। ফাইলটির একটি সীমাবদ্ধতা এই বিশ্লেষণের পরিসর নির্ধারণ করে: কোনো চুক্তিতে লেনদেন বা print থাকলেই কেবল সেটিকে contract-day হিসেবে ধরা হয়েছে। তাই কোনো চুক্তি পুরো সেশনজুড়ে সম্পূর্ণ নিষ্ক্রিয় থাকলে সেই সেশনগুলো গণনা করা যায় না। তবে কোনো closing value বদলানোর পেছনে কত সামান্য লেনদেন ছিল, তা এই তথ্য দেখাতে পারে।

কুয়েরিকম লেনদেন হওয়া কন্ট্রাক্ট-দিন এবং ক্লোজিং মূল্য কতবার এখনও পরিবর্তিত হয়েছে
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT
    underlying,
    toUInt32(count())                               AS contract_day_count,
    round(100 * countIf(volume <= 10) / count(), 1) AS pct_thin_days,
    round(100 * countIf(volume <= 10 AND abs(mark - prior_mark) >= 0.01)
              / greatest(countIf(volume <= 10), 1), 1) AS pct_thin_marks_moved
FROM
(
    SELECT
        underlying,
        ticker,
        date,
        volume,
        mark,
        any(mark) OVER (PARTITION BY ticker ORDER BY date
                        ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prior_mark
    FROM
    (
        SELECT
            underlying_symbol            AS underlying,
            ticker,
            date,
            max(volume)                  AS volume,
            toFloat64(max(option_close)) AS mark
        FROM global_markets.options_greeks
        WHERE underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'KO', 'SPY')
          AND date >= '2026-06-01'
          AND date <  '2026-07-01'
          AND days_to_expiry BETWEEN 7 AND 120
        GROUP BY underlying, ticker, date
    )
)
WHERE prior_mark > 0
GROUP BY underlying
ORDER BY pct_thin_days DESC
Run this yourself

প্যানেলে সবচেয়ে পাতলা order book হলো KO: ওই মাসে এর contract-day-এর 38.2%-এ পুরো সেশনে মোট volume ছিল 10টি চুক্তি বা তার কম, এবং ওই thin contract-day-এর 90.1%-এ closing value চুক্তিটির আগের recorded session-এর তুলনায় অন্তত 1 penny দূরে ছিল। সবচেয়ে কম thin day থাকা নাম, NVDA, তার contract-day-এর 21.8%-এও volume 10টি চুক্তি বা তার কম রেখেছে। হাতে গোনা কয়েকটি lot লেনদেন হওয়ার সময় কোনো closing value বদলে যাওয়া data error নয়। এটিই mark-এর প্রকৃতি: চুক্তিটির ভেতরে যে লেনদেন হয়েছে, তার ভিত্তিতে নয়, বরং চুক্তিটিকে ঘিরে থাকা বাজারের অবস্থান থেকে নির্ধারিত একটি মূল্য।

ক্লোজের সময় সর্বশেষ লেনদেনটি কত পুরোনো?

ধরা যাক, কনট্র্যাক্টটির সত্যিই লেনদেন হয়েছে। তবুও price field-টি ক্লোজের প্রকৃত চিত্র নাও দেখাতে পারে। পরের প্যানেলে বুধবার, June 17, 2026 তারিখে অন্তত একবার print হওয়া AAPL-এর প্রতিটি কনট্র্যাক্ট নেওয়া হয়েছে। এরপর দিনের সর্বশেষ print কোন ET ঘণ্টায় হয়েছে তা নির্ধারণ করে, সেই ঘণ্টা অনুযায়ী কনট্র্যাক্টের সংখ্যা গণনা করা হয়েছে।

কুয়েরিAAPL অপশন কন্ট্রাক্টে শেষবার লেনদেন হওয়ার সময়, 17 জুন 2026
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT
    et_hour,
    toUInt32(contracts)                                     AS contract_count,
    round(100 * contracts / sum(contracts) OVER (), 1)      AS share_pct
FROM
(
    SELECT
        et_hour,
        count() AS contracts
    FROM
    (
        SELECT
            ticker,
            formatDateTime(toTimeZone(max(sip_timestamp), 'America/New_York'), '%H:00') AS et_hour
        FROM global_markets.options_trades
        WHERE underlying_symbol = 'AAPL'
          AND sip_timestamp >= toDateTime('2026-06-17 00:00:00', 'America/New_York')
          AND sip_timestamp <  toDateTime('2026-06-18 00:00:00', 'America/New_York')
        GROUP BY ticker
    )
    GROUP BY et_hour
)
ORDER BY et_hour
Run this yourself

সর্বশেষ print 7টি ঘণ্টাভিত্তিক bucket-এ ছড়িয়ে আছে, 09:00 ET থেকে 15:00 ET পর্যন্ত। যে কনট্র্যাক্টগুলোতে লেনদেন হয়েছে, তাদের মধ্যে শেষ bucket-এ রয়েছে 52.6%, আর প্রথম bucket-এ রয়েছে 3.7%। কোনো কনট্র্যাক্টের সর্বশেষ print যদি সকালের bucket-এ থাকে, তাহলে 4:00 p.m. ক্লোজের সময় তার last sale ইতিমধ্যে কয়েক ঘণ্টা পুরোনো। এই সময়জুড়ে শেয়ারটির লেনদেন চলতে থাকে এবং দাম পরিবর্তিত হয়। মুদ্রামূল্য থেকে অনেক দূরের কনট্র্যাক্টগুলো আগে নিষ্ক্রিয় হয়ে যায়। তারল্য বনাম অস্থিরতা নির্ধারণ করে কেন একটি strike সারাদিন লেনদেন হতে পারে, অথচ পাশের strike-এ কোনো নড়াচড়া থাকে না।

স্ট্রাইক ল্যাডারজুড়ে মার্ক কেমন দেখায়

মার্ক একবারে একটি করে গণনা করা হয় না। একটি মডেল পুরো ল্যাডারটি একসঙ্গে মূল্যায়ন করে। তাই কোনো স্ট্রাইকে লেনদেন না হলেও সেটির জন্য পাশের স্ট্রাইকগুলোর সঙ্গে সামঞ্জস্যপূর্ণ একটি সংখ্যা পাওয়া যায়। নিচের প্যানেলটি একটি দিনের একটি expiry দেখাচ্ছে: July 17, 2026-এ মেয়াদপূর্তির AAPL call, যার মূল্যায়ন করা হয়েছে June 17, 2026-এর ক্লোজে। এখানে স্ট্রাইকগুলো সীমাবদ্ধ রাখা হয়েছে স্টকটি যে দামে ক্লোজ করেছে, তার 10%-এর মধ্যে।

কুয়েরিAAPL 17 জুলাই 2026 কল: স্ট্রাইক অনুযায়ী ক্লোজিং মূল্য ও ভলিউম
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT
    round(toFloat64(strike_price), 2)      AS strike,
    round(avg(toFloat64(option_close)), 2) AS closing_mark,
    toUInt32(sum(volume))                  AS contract_volume,
    round(avg(delta), 3)                   AS avg_delta
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
  AND date = '2026-06-17'
  AND expiration_date = '2026-07-17'
  AND lower(toString(option_type)) LIKE 'c%'
  AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.10
GROUP BY strike
ORDER BY strike
Run this yourself

12টি স্ট্রাইকের মধ্যে ক্লোজিং ভ্যালু 270 স্ট্রাইকে $27.43 থেকে 325-এ $0.79-এ নেমে আসে। এর সঙ্গে delta-ও 1 থেকে 0.092-এ কমে। স্টকের দামে 1 dollar পরিবর্তনে কোনো কন্ট্র্যাক্টের ভ্যালু কতটা বদলাবে, delta হলো সেই বিষয়ে মডেলের অনুমান। এবার volume column-কে curve-এর সঙ্গে মিলিয়ে দেখুন। ওই দিন প্রতিটি কন্ট্র্যাক্টে যত লেনদেনই হয়ে থাকুক, তার closing value নিজের শেষ print যে জায়গায় রেখে গেছে সেখানে নয়, বরং পাশের কন্ট্র্যাক্টগুলোর সঙ্গে সামঞ্জস্যপূর্ণ অবস্থানে রয়েছে। আপনি একটি option chain পড়ার সময় এই ল্যাডারটিই দেখতে পান, এবং এর বেশিরভাগই মডেল-নির্ভর।

কেন ব্রোকারের স্টেটমেন্টে শেষ লেনদেনের দামের সঙ্গে অমিল থাকে

স্টেটমেন্টে দেখানো unrealized P&L প্রতিষ্ঠানের নির্ধারিত mark-এর ভিত্তিতে হিসাব করা হয়। একই spread থাকা দুটি অ্যাকাউন্ট, যদি দুটি ভিন্ন প্রতিষ্ঠানে থাকে, তাহলে একই রাতে ভিন্ন unrealized P&L দেখাতে পারে। এর কোনোটিই ভুল হওয়া জরুরি নয়।

আসল সমস্যা আসে margin-এ। short option-এর maintenance requirement হিসাব করা হয় mark-এর সঙ্গে underlying-এর মূল্যের একটি শতাংশ যোগ করে। তাই mark বদলালে requirement-ও বদলে যায়। Portfolio margin আরও এক ধাপ এগিয়ে যায়। এতে underlying-এর সম্ভাব্য ঊর্ধ্বমুখী ও নিম্নমুখী বিভিন্ন পরিবর্তনের একটি grid-এ পজিশনটির পুনর্মূল্যায়ন করা হয়। সেই grid-এ সবচেয়ে বড় সম্ভাব্য ক্ষতিই requirement হিসেবে ধরা হয়। Grid-এর প্রতিটি price model output। কোনো কম লেনদেন হওয়া strike-এ quote-এর spread বেশি হলে input-ও বিস্তৃত হয়। তাই contract-এ কোনো লেনদেন না হলেও requirement বদলাতে পারে। naked option বিক্রির জন্য Margin-এ standard formula-টি ধাপে ধাপে ব্যাখ্যা করা হয়েছে।

Reconciliation-এর ভিত্তিও একই। কোনো chain থেকে নেওয়া last sale-এর সঙ্গে নয়, প্রতিষ্ঠানটি যে mark ব্যবহার করেছে এবং যে সময়ে তা নথিভুক্ত করেছে, সেই mark-এর সঙ্গে মিলিয়ে দেখুন। দুটি সংখ্যা না মিললে কার্যকর প্রশ্ন হলো, প্রতিটি পক্ষ কোন স্তরের তথ্য প্রকাশ করছে।

4:00 এবং 4:15-এর ক্লোজ

সব অপশনের লেনদেন একই মিনিটে বন্ধ হয় না। US single-stock options-এর লেনদেন ET অনুযায়ী বিকেল 4:00টায় equity market বন্ধ হওয়ার সঙ্গে শেষ হয়। তবে broad-market-এর কিছু পণ্য এর পরেও লেনদেন চালিয়ে যায়। মনে রাখা কোনো cut-off-এর ওপর নির্ভর না করে, প্যানেলটি একটি সেশনে এই আচরণের সময় নির্ধারণ করে।

কুয়েরিআন্ডারলাইং অনুযায়ী দিনের শেষ অপশন লেনদেন, 17 জুন 2026
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT
    underlying_symbol AS underlying,
    formatDateTime(toTimeZone(max(sip_timestamp), 'America/New_York'), '%H:%i') AS last_print_et,
    round(100 * countIf(toTimeZone(sip_timestamp, 'America/New_York')
                        >= toDateTime('2026-06-17 16:00:00', 'America/New_York')) / count(), 2) AS pct_after_4pm
FROM global_markets.options_trades
WHERE underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'KO', 'SPY', 'QQQ', 'IWM')
  AND sip_timestamp >= toDateTime('2026-06-17 00:00:00', 'America/New_York')
  AND sip_timestamp <  toDateTime('2026-06-18 00:00:00', 'America/New_York')
GROUP BY underlying
ORDER BY pct_after_4pm DESC
Run this yourself

QQQ options ET অনুযায়ী 16:14 পর্যন্ত লেনদেন হয়েছে। দিনের মোট লেনদেনের 1.69% 4:00 p.m.-এর পরে সম্পন্ন হয়েছে। অন্যদিকে, NVDA-এ 0% দেখা যায় এবং শেষ লেনদেনটি হয় 16:00-এ। পরবর্তী কোনো সেশনে প্যানেলটি চালালে, তখন কার্যকর cut-off সময় দেখাবে।

Hedged pair-এর ক্ষেত্রে এই ব্যবধান গুরুত্বপূর্ণ। একটি stock position-এর বিপরীতে দেরিতে ক্লোজ হওয়া option ধরে রাখলে দুই leg ভিন্ন সময়ের বাজারদরের ভিত্তিতে মূল্যায়িত হয়। stock leg 4:00 p.m.-এ ক্লোজিং auction থেকে নির্ধারিত দামে স্থির হয়। অন্যদিকে, option leg আরও 15 মিনিটের লেনদেন অন্তর্ভুক্ত করে। বেশিরভাগ দিনে এটি সামান্য পার্থক্য মাত্র। কিন্তু কোনো সেশনে 4:05 p.m.-এ গুরুত্বপূর্ণ সংবাদ প্রকাশিত হলে, দুই mark ভিন্ন সময়ের পরিস্থিতি নির্দেশ করে। ফলে hedge-এ কোনো পরিবর্তন না হলেও বিবৃতিতে P&L-এ ওঠানামা দেখা যেতে পারে। Expiration-এর ক্ষেত্রেও একই ধরনের বিভাজন রয়েছে। তখন cash-settled index option কোনো বাজারদরের ভিত্তিতে নয়, বরং গণনা করা একটি মূল্যের ভিত্তিতে settle হয়: AM বনাম PM settled options-এ বিষয়টি ব্যাখ্যা করা হয়েছে।

অপশন ডেটাসেটে mark-এর অর্থ

mark কোনো fill নয়। শূন্য volume থাকা কোনো strike-এ mark দরে execution হয়েছে ধরে নেওয়া backtest এমন এক counterparty-এর অস্তিত্ব ধরে নেয়, যে সেখানে কখনও ছিলই না। ডেটাসেটকে নির্ভরযোগ্য রাখার জন্য চারটি অভ্যাস অনুসরণ করুন।

  • last sale, quote এবং mark আলাদা কলামে রাখুন। কোনো একটি close কলামকে কখনও এই তিনটির প্রতিনিধি হতে দেবেন না। একই strike-এর close নিয়ে দুই vendor-এর মতপার্থক্য সাধারণত বোঝায় যে তারা ভিন্ন data layer প্রকাশ করছে।
  • mark-এর পাশে bid, offer এবং size সংরক্ষণ করুন। spread-এর প্রস্থ mark-এর কতটা model-নির্ভর, তা বুঝতে সাহায্য করে।
  • শুধু শেষ print-এর দাম নয়, তার timestamp-ও সংরক্ষণ করুন। সময়ের তথ্য ছাড়া কোনো দাম audit করা যায় না।
  • implied volatility এবং greeks-এর ক্ষেত্রেও একই নিয়ম প্রয়োগ করুন। যে contract-এ কেউ trade করেনি, তার model value কেবল model value-ই।
ডেটা-সংক্রান্ত নোট

তিনটি panel ইচ্ছাকৃতভাবে Wednesday June 17, 2026 তারিখে স্থির করা হয়েছে। নির্দিষ্ট অতীতের একটি session ব্যবহার করলে পুনরায় তৈরি করার সময় সংখ্যাগুলো অপরিবর্তিত থাকে, এবং ওই ইতিহাস data থেকে বাদ পড়ে না। দৈনিক options file-এ যে contract যে session-এ print হয়েছে, সেই প্রতিটি contract-session-এর জন্য একটি করে row থাকে। তাই প্রথম panel-এ কোনো volume না থাকা session নয়, মোট volume দশটি contract বা তার কম হওয়া contract-day গণনা করা হয়েছে। strike ladder-এর closing values ওই file-এর daily close। এগুলোর কোনোটিই এমন দাম নয়, যে দামে আপনি trade করতে পারতেন।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

অপশনের closing mark কি last sale price-এর সমান?

না। Last sale হলো নির্দিষ্ট সময়ে সম্পাদিত একটি প্রকৃত ট্রেড, যা বাজার বন্ধ হওয়ার কয়েক ঘণ্টা আগেও হতে পারে। Closing mark হলো বাজার বন্ধের সময় নির্ধারিত একটি valuation। যে contract-এ কোনো ট্রেড হয়নি, সেখানে এই দুই দামের মধ্যে বড় পার্থক্য থাকতে পারে।

কোনো অপশনে প্রায় কোনো ট্রেড না হলেও এর মূল্য কেন বদলাল?

Mark নির্ধারণে quoted market এবং তার পেছনের model অনুসরণ করা হয়। দুটিই পুরো সেশনজুড়ে underlying-এর সঙ্গে পরিবর্তিত হয়। উপরের panel-এ সবচেয়ে কম লেনদেন হওয়া নামটির contract-days-এর 38.2%-এ মোট volume ছিল ten contracts বা তার কম। এর মধ্যে 90.1% contract-days আগের recorded session-এর চেয়ে ভিন্ন value-তে শেষ হয়েছে।

Margin-এর জন্য আমার broker কোন price ব্যবহার করে?

Last sale নয়, firm-এর নিজস্ব mark ব্যবহার করা হয়। Short option-এর maintenance requirement এই mark এবং underlying-এর মূল্যের একটি percentage ধরে হিসাব করা হয়। Portfolio margin-এ hypothetical price move-এর একটি grid জুড়ে position-এর পুনর্মূল্যায়ন করা হয়। এই হিসাবের প্রতিটি input-ই একটি valuation।

একই option-এর closing price নিয়ে দুই data vendor-এর তথ্য আলাদা কেন?

সাধারণত তারা valuation-এর ভিন্ন স্তর প্রকাশ করে। একটি vendor-এর close হতে পারে last sale, অন্যটির closing midpoint, আর তৃতীয়টির model mark। কোনো contract-এ সকালে মাত্র একবার ট্রেড হলেও তিনটি value আলাদা হতে পারে।

Option mark কি 4:00 p.m. equity close-এর পরের ট্রেডিংও অন্তর্ভুক্ত করে?

কিছু mark করে। উপরের panel-এর session-এ single-stock নামগুলোর ট্রেডিং বন্ধ হয়ে যাওয়ার পরও QQQ পর্যন্ত options-এ prints হয়েছে, 16:14 ET পর্যন্ত। তাই ওই products-এর end-of-day mark-এ অতিরিক্ত সময়ের এই ট্রেডিংও অন্তর্ভুক্ত থাকে।


এখানকার প্রতিটি panel-এর সঙ্গে সেটি তৈরি করা SQL দেওয়া থাকে। ফলে query-তেই কোন valuation layer মাপা হচ্ছে তা দেখা যায়। একই প্রশ্ন—mark এবং last sale-এর তুলনা, অথবা final print-এর সময়—Strasmore terminal-এ plain English-এ করা যায়।