নগ্ন অপশন বিক্রির মার্জিন: Reg T হিসাব
নগ্ন অপশন বিক্রিতে কত মার্জিন লাগে? Reg T-এর ন্যূনতম সূত্রের দুটি শাখা, premium-সহ হিসাব, Python স্ক্রিপ্ট এবং বাস্তব option chain দেখুন।
নগ্ন অপশন বিক্রির জন্য মার্জিন একটি প্রকাশিত সূত্র থেকে নির্ধারিত হয়। ট্রেড করার আগেই আপনি তা নিজে হিসাব করতে পারেন। একটি uncovered equity option-এর ন্যূনতম মার্জিন হলো দুটি শাখার মধ্যে যেটি বেশি, এবং উভয়ের সঙ্গে প্রাপ্ত premium যোগ হয়: underlying শেয়ারের দামের 20% থেকে optionটি যতটা out of the money, সেই পরিমাণ বাদ দেওয়া; অথবা 10%-এর floor। এই পৃষ্ঠার প্রতিটি শতাংশ regulatory minimum। Broker চাইলে এর চেয়ে বেশি অর্থ আটকে রাখতে পারে, এবং অধিকাংশ broker তাই করে।
নগ্ন অপশন বিক্রির মার্জিন কীভাবে হিসাব করা হয়?
কোনো option-এর বিপরীতে কোনো সম্পদ না থাকলে সেটি uncovered বা naked হিসেবে বিবেচিত হয়: account-এ শেয়ার ছাড়া short call, অথবা strike-এর বিপরীতে কোনো নগদ আলাদা করে না রাখা short put। cash secured put-এ পুরো strike value আলাদা করে রাখা হয়। এটি ভিন্ন ব্যবস্থা এবং এর margin requirement-ও ভিন্ন।
Regulation T margin account-এর credit rules নির্ধারণ করে। Uncovered option-এর শতাংশ FINRA Rule 4210 এবং সেটির অনুরূপ exchange margin manual-এ নির্ধারিত। হিসাবটি প্রতি শেয়ার ধরে করা হয়। এরপর 100 শেয়ারের প্রতিটি contract অনুযায়ী তা প্রয়োগ করা হয়:
- Uncovered call, প্রথম শাখা: প্রাপ্ত premium + underlying-এর দামের 20% - out of the money amount (strike থেকে underlying বাদ, তবে ফল শূন্যের নিচে হলে শূন্য)।
- Uncovered put, প্রথম শাখা: প্রাপ্ত premium + underlying-এর দামের 20% - out of the money amount (underlying থেকে strike বাদ, তবে ফল শূন্যের নিচে হলে শূন্য)।
- Call-এর floor শাখা: প্রাপ্ত premium + underlying-এর দামের 10%।
- Put-এর floor শাখা: প্রাপ্ত premium + strike price-এর 10%।
দুটি শাখার মধ্যে যেটি বেশি, সেটিই requirement। Broad based index options-এ 20%-এর পরিবর্তে 15% প্রযোজ্য। Uncovered option বিক্রি করতে সঠিক option approval level-সহ margin account প্রয়োজন। Margin account-এর সঙ্গে pattern day trader rule-ও প্রযোজ্য হয়।
উভয় শাখাতেই premium যোগ হয়। তাই এটি পুরো সংখ্যাটি বাড়ায়, কিন্তু কোন শাখাটি প্রযোজ্য হবে তা বদলায় না। সেটি নির্ধারণ করে strike ও underlying-এর দামের দূরত্ব। Call-এর ক্ষেত্রে strike underlying-এর চেয়ে ঠিক 10% ওপরে থাকলে দুটি শাখা সমান হয়। Put-এর ক্ষেত্রে strike underlying-এর চেয়ে প্রায় 11.1% নিচে থাকলে দুটি শাখা সমান হয়। এই সীমার ভেতরে 20% শাখাটি বেশি। সীমা অতিক্রম করলে floor কার্যকর হয়।
20% শাখা ও 10% floor কোথায় সমান হয়
নিচের panel-এ June 2026-এর শেষ trading session-এ তালিকাভুক্ত AAPL-এর প্রতিটি strike দেখানো হয়েছে। শেয়ারের দামের সামান্য নিচ থেকে শুরু করে প্রায় 18% ওপরে পর্যন্ত strike নেওয়া হয়েছে। Expiry-এর 20 থেকে 45 দিন আগে থাকা contract ব্যবহার করা হয়েছে। প্রতিটি strike-এ uncovered call-এর জন্য প্রতি শেয়ারে দুটি শাখাই হিসাব করা হয়েছে। গাণিতিক রেখার গঠন পরিষ্কার রাখতে premium এখানে বাদ দেওয়া হয়েছে। Premium যোগ করলে দুটি রেখাই সমানভাবে ওপরে সরে যাবে।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT
round(toFloat64(strike_price), 2) AS strike,
round(0.20 * max(toFloat64(underlying_close))
- greatest(toFloat64(strike_price) - max(toFloat64(underlying_close)), 0.0), 2) AS main_branch,
round(0.10 * max(toFloat64(underlying_close)), 2) AS floor_branch,
round(0.20 * max(toFloat64(underlying_close))
- greatest(toFloat64(strike_price) - max(toFloat64(underlying_close)), 0.0)
- 0.10 * max(toFloat64(underlying_close)), 2) AS branch_gap
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date = (
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date BETWEEN '2026-06-01' AND '2026-06-30'
)
AND days_to_expiry BETWEEN 20 AND 45
AND iv_converged = 1
AND volume > 0
AND toFloat64(strike_price) BETWEEN 0.98 * toFloat64(underlying_close)
AND 1.18 * toFloat64(underlying_close)
GROUP BY strike_price
ORDER BY strikeFloor line-টি সমতল। শেয়ারের দামের 10% strike কোথায় আছে, তা বিবেচনা করে না। তাই panel-এর সব 12টি strike জুড়ে এটি প্রতি শেয়ারে $28.9-এ স্থির থাকে। প্রথম শাখার রেখাটি নিচের দিকে ঢালে। সর্বনিম্ন strike-এ এটি $57.8 থেকে সর্বোচ্চ strike-এ $6.81-এ নামে, কারণ অতিরিক্ত দূরত্বের প্রতিটি dollar সরাসরি এই পরিমাণ কমায়। branch_gap column হলো প্রথম শাখা থেকে floor বাদ দেওয়া ফল: 20% শাখা কার্যকর হলে এটি শূন্যের ওপরে, floor কার্যকর হলে শূন্যের নিচে থাকে। শেয়ারের দামের 10% ওপরে থাকা strike-এ দুটি সমান হয়।
একটি naked put-এর কত margin প্রয়োজন?
প্রথম শাখা একই, কিন্তু floor ভিন্ন: underlying-এর দামের 10%-এর পরিবর্তে strike-এর দামের 10%। এই একটি পরিবর্তনেই চিত্রটি বদলে যায়। Floor আর সমতল থাকে না; strike-এর সঙ্গে এটি ঢালু হয়। Crossing point-ও শেয়ারের দামের প্রায় 11% নিচে সরে যায়।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT
round(toFloat64(strike_price), 2) AS strike,
round(0.20 * max(toFloat64(underlying_close))
- greatest(max(toFloat64(underlying_close)) - toFloat64(strike_price), 0.0), 2) AS main_branch,
round(0.10 * toFloat64(strike_price), 2) AS floor_branch,
round(0.20 * max(toFloat64(underlying_close))
- greatest(max(toFloat64(underlying_close)) - toFloat64(strike_price), 0.0)
- 0.10 * toFloat64(strike_price), 2) AS branch_gap
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date = (
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date BETWEEN '2026-06-01' AND '2026-06-30'
)
AND days_to_expiry BETWEEN 20 AND 45
AND iv_converged = 1
AND volume > 0
AND toFloat64(strike_price) BETWEEN 0.82 * toFloat64(underlying_close)
AND 1.02 * toFloat64(underlying_close)
GROUP BY strike_price
ORDER BY strikeএখানকার put strike-গুলোর ক্ষেত্রে floor সর্বনিম্ন strike-এ প্রতি শেয়ারে $24 থেকে সর্বোচ্চ strike-এ $29 পর্যন্ত ওঠে। একই সময়ে strike money-এর কাছাকাছি এলে প্রথম শাখার পরিমাণ বাড়ে। বাজারদামের অনেক নিচে, যেখানে the wheel strategy ব্যবহারকারী বিক্রেতারা প্রায়ই কাজ করেন, floor-ই কার্যকর requirement। এই floor-ই নিশ্চিত করে যে deep out of the money naked put কখনও বিনা margin-এ ধরে রাখা যাবে না।
একটি naked contract কত buying power আটকে রাখে?
প্রতি শেয়ারের হিসাব হলো সূত্রের ফল। প্রতি contract-এর হিসাবই account থেকে আসলেই বেরিয়ে যায়। একই June 2026 session-এ 5টি household name নেওয়া হয়েছে। প্রতিটির শেয়ারের দামের 5% ওপরে থাকা সবচেয়ে কাছের তালিকাভুক্ত call strike বেছে নিয়ে দুটি শাখাকেই contract-এর আওতাধীন 100 শেয়ার দিয়ে গুণ করা হয়েছে।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT
ticker,
round(100 * (0.20 * share_price - greatest(strike - share_price, 0.0)), 0) AS main_branch,
round(100 * (0.10 * share_price), 0) AS floor_branch
FROM
(
SELECT
underlying_symbol AS ticker,
max(toFloat64(underlying_close)) AS share_price,
argMin(toFloat64(strike_price),
abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1.05)) AS strike
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO')
AND date = (
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date BETWEEN '2026-06-01' AND '2026-06-30'
)
AND days_to_expiry BETWEEN 20 AND 45
AND iv_converged = 1
AND volume > 0
GROUP BY underlying_symbol
)
ORDER BY main_branch DESCএই দূরত্বে একটি uncovered SPY call-এর একটি contract-এর জন্য ন্যূনতম requirement $11156। KO-এর ক্ষেত্রে তা $1252। Trade একই, সূত্রও একই। সংখ্যাটি option-এর কোনো বৈশিষ্ট্যের চেয়ে শেয়ারের দামের সঙ্গে বেশি সম্পর্কিত। এখানে প্রতিটি নামের ক্ষেত্রে 5% out of the money অবস্থায় প্রথম শাখাটিই কার্যকর। প্রতিটি জোড়ার মধ্যে উঁচু bar-টিই প্রযোজ্য requirement।
একটি ছোট Python script দিয়ে যেকোনো position পরীক্ষা করুন
সূত্রটি একটি file-এ সহজেই রাখা যায়। এর জন্য python3 ছাড়া আর কিছু দরকার নেই: শুধু standard library, pip install বা network নয়। এটি naked_margin.py নামে save করুন।
#!/usr/bin/env python3
"""Reg T style minimum for one uncovered (naked) equity option.
Prints both branches of the requirement and the one that binds.
Standard library only. Educational, not a broker quote.
"""
import argparse
SHARES_PER_CONTRACT = 100
def branches(kind, spot, strike, premium, rule_pct, floor_pct):
if kind == 'call':
out_of_money = max(strike - spot, 0.0)
floor_base = spot
else:
out_of_money = max(spot - strike, 0.0)
floor_base = strike
rule = rule_pct * spot - out_of_money + premium
floor = floor_pct * floor_base + premium
return rule, floor
def report(kind, spot, strike, premium, rule_pct, floor_pct):
rule, floor = branches(kind, spot, strike, premium, rule_pct, floor_pct)
if rule >= floor:
binds = '{0:.0%} branch'.format(rule_pct)
else:
binds = '{0:.0%} floor'.format(floor_pct)
print('naked {0}: spot {1:.2f}, strike {2:.2f}, premium {3:.2f}'.format(
kind, spot, strike, premium))
print(' {0:.0%} branch: {1:.2f} per share, {2:.2f} per contract'.format(
rule_pct, rule, rule * SHARES_PER_CONTRACT))
print(' {0:.0%} floor: {1:.2f} per share, {2:.2f} per contract'.format(
floor_pct, floor, floor * SHARES_PER_CONTRACT))
print(' binds: {0}, requirement {1:.2f} per contract'.format(
binds, max(rule, floor) * SHARES_PER_CONTRACT))
def main():
ap = argparse.ArgumentParser(description='Reg T style naked option minimum')
ap.add_argument('--spot', type=float, required=True, help='underlying price')
ap.add_argument('--strike', type=float, required=True, help='strike price')
ap.add_argument('--premium', type=float, required=True, help='premium per share')
ap.add_argument('--index', action='store_true', help='broad based index rate')
args = ap.parse_args()
rule_pct = 0.15 if args.index else 0.20
for kind in ('call', 'put'):
report(kind, args.spot, args.strike, args.premium, rule_pct, 0.10)
if __name__ == '__main__':
main()
এখানে দুটি run দেখানো হয়েছে। এগুলো এমনভাবে বেছে নেওয়া হয়েছে যাতে দুই ক্ষেত্রে কার্যকর শাখা বদলে যায়। উভয় ক্ষেত্রেই round hypothetical input ব্যবহার করা হয়েছে।
$ python3 naked_margin.py --spot 100 --strike 105 --premium 1.50
naked call: spot 100.00, strike 105.00, premium 1.50
20% branch: 16.50 per share, 1650.00 per contract
10% floor: 11.50 per share, 1150.00 per contract
binds: 20% branch, requirement 1650.00 per contract
naked put: spot 100.00, strike 105.00, premium 1.50
20% branch: 21.50 per share, 2150.00 per contract
10% floor: 12.00 per share, 1200.00 per contract
binds: 20% branch, requirement 2150.00 per contract
$ python3 naked_margin.py --spot 100 --strike 85 --premium 0.60
naked call: spot 100.00, strike 85.00, premium 0.60
20% branch: 20.60 per share, 2060.00 per contract
10% floor: 10.60 per share, 1060.00 per contract
binds: 20% branch, requirement 2060.00 per contract
naked put: spot 100.00, strike 85.00, premium 0.60
20% branch: 5.60 per share, 560.00 per contract
10% floor: 9.10 per share, 910.00 per contract
binds: 10% floor, requirement 910.00 per contract
প্রথম run-এ strike underlying-এর 5% ওপরে। এটি 10% crossover-এর ভেতরে, তাই call এবং put উভয়ের ক্ষেত্রেই প্রথম শাখা কার্যকর। দ্বিতীয় run-এ strike underlying-এর 15% নিচে। ফলে প্রথম শাখায় callটি in the money থাকে, আর putটি যথেষ্ট out of the money হওয়ায় 10% floor কার্যকর হয়। --spot, --strike এবং --premium ব্যবহার করে নিজের input দিন। 15% broad based index figure-এর জন্য --index যোগ করুন। Script যা দেখায়, তা broker কত ন্যূনতম চাইতে পারে তার floor; কখনও ceiling নয়।
বিক্রির পর requirement কীভাবে বদলায়
এই সংখ্যা একবার নির্ধারিত হয়ে স্থির থাকে না। Underlying-এর দামের ভিত্তিতে এটি প্রতিদিন পুনরায় হিসাব করা হয়, আর underlying-এর দামও পরিবর্তিত হয়। April 2026-এ AAPL যে দামে open করেছিল, তার প্রায় 10% ওপরে একটি short call strike স্থির ধরে জুনের শেষ পর্যন্ত share price-এর শতাংশ হিসেবে requirement অনুসরণ করা হয়েছে।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT
toString(d.dt) AS session_date,
round(d.px, 2) AS underlying_close,
round(100 * (s.short_strike - d.px) / d.px, 2) AS cushion_pct,
round(100 * greatest(0.20 * d.px - greatest(s.short_strike - d.px, 0.0),
0.10 * d.px) / d.px, 2) AS requirement_pct
FROM
(
SELECT
date AS dt,
max(toFloat64(underlying_close)) AS px
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date BETWEEN '2026-04-01' AND '2026-06-30'
GROUP BY date
) AS d
CROSS JOIN
(
SELECT round(1.10 * argMin(toFloat64(underlying_close), date), 0) AS short_strike
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date BETWEEN '2026-04-01' AND '2026-06-30'
) AS s
ORDER BY d.dtPosition-টি crossover-এর ওপর শুরু হয়। তখন এটি share price-এর 10.19%, এবং strike পর্যন্ত headroom 9.81%। Window-এর শেষে তা 20%-এ পৌঁছায়। Stock short call strike-এর দিকে উঠলে out of the money subtraction কমে যায়। ফলে requirement পূর্ণ 20%-এর দিকে বাড়ে। আরও চারটি বিষয় এটিকে পরিবর্তন করে:
- Assignment হলে option শেষ হয় এবং stock বা short stock position তৈরি হয়। এর নিজস্ব requirement থাকে। Short options-এ early assignment সাধারণত dividend এবং deep in the money strike-এর সময় বেশি দেখা যায়।
- House requirement minimum-এর ওপরে বসে। Uncovered position-এর ক্ষেত্রে broker-রা নিয়মিত Reg T-এর চেয়ে বেশি requirement নির্ধারণ করে। Volatile name-এ কখনও কখনও তা Reg T-এর একাধিক গুণও হয়।
- Position-এর বিপরীতে price move হলে requirement বাড়ে, একই সময়ে account equity কমে। এই দুইয়ের ব্যবধান থেকেই maintenance call তৈরি হয়।
- Portfolio margin একটি পৃথক regime। Approved account-এ পুরো portfolio-র stress test-এর ভিত্তিতে charge নেওয়া হয়। Equity underlying-এর দামে প্রায় 15% ওপরে বা নিচে move ধরে এই পরীক্ষা করা হয়। অধিকাংশ broker-এর ক্ষেত্রে account minimum ছয় অঙ্কের। Hedged book হলে এই figure Reg T-এর তুলনায় অনেক কম হতে পারে। Volatility বাড়লে এটি আরও দ্রুত বদলে যায়।
এটি কোনো সুপারিশ নয়। Uncovered selling-এ call-এর ক্ষেত্রে ক্ষতির সীমা নেই এবং put-এর ক্ষেত্রে ক্ষতি অত্যন্ত বড় হতে পারে। options trading কতটা ঝুঁকিপূর্ণ তা data-সহ ব্যাখ্যা করা হয়েছে।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
একটি naked put বিক্রি করতে আমার কত margin প্রয়োজন?
Regulatory minimum হলো দুটি শাখার মধ্যে যেটি বেশি। উভয় শাখাতেই প্রাপ্ত premium অন্তর্ভুক্ত থাকে: underlying-এর দামের 20% থেকে out of the money amount বাদ দেওয়া, অথবা strike price-এর 10%। $100 দামের stock-এ $90 strike put $0.60 premium-এ বিক্রি করলে ফল হয় প্রতি শেয়ারে $10.60, আর $9.60 floor। তাই একটি contract-এর জন্য requirement $1,060। Broker-রা সাধারণত আরও বেশি margin চায়।
প্রতিটি broker-এর কাছে কি naked option margin একই?
না। Reg T এবং FINRA Rule 4210 minimum নির্ধারণ করে। প্রতিটি broker এর ওপরে house requirement যোগ করতে পারে। Single name এবং earnings date-এর আশপাশে অনেক broker তা করে। প্রকাশিত সূত্রটি range-এর নিচের সীমা দেখায়, আপনার platform-এ প্রদর্শিত প্রকৃত সংখ্যা নয়।
আমি যে premium সংগ্রহ করি, তা কি requirement-এর মধ্যে গণনা হয়?
প্রাপ্ত premium সূত্রের উভয় শাখায় যোগ হয় এবং trade settle হলে account-এ credit হয়। এটি কখনও কোন শাখাটি কার্যকর হবে তা বদলায় না, কারণ উভয় পাশে সমান পরিমাণে এটি অন্তর্ভুক্ত থাকে।
একটি naked index option-এর margin কত?
Broad based index options-এ 20%-এর পরিবর্তে 15% প্রযোজ্য। 10% floor এবং premium-এর একই term বজায় থাকে। Broad index track করা ETF-এর options-কে 20% হারে equity option হিসেবে গণনা করা হয়। তাই wrapper বদলালেও exposure-এর সঙ্গে lower percentage প্রযোজ্য হয় না। উভয় হারই regulatory minimum।
আমি position ধরে রাখার সময় naked option-এর requirement কি বদলাতে পারে?
হ্যাঁ। Underlying-এর দামের ভিত্তিতে requirement পুনরায় হিসাব করা হয়। তাই stock-এর দাম বদলালেই এটি বদলায়, যেমন ওপরের trace-এ দেখা গেছে। Short call strike-এর দিকে stock উঠলে requirement বাড়ে। Open position-এর ওপর broker house requirement-ও বাড়াতে পারে।
এখানকার প্রতিটি panel-এ সেটি তৈরি করা SQL দেওয়া আছে। যেকোনো panel expand করলে branch কীভাবে হিসাব করা হয়েছে তা দেখা যাবে। আপনি যে কোনো name অনুসরণ করেন, সেটির একই chain math চালাতে Strasmore terminal-এ plain English-এ অনুরোধ করুন।