Options Symbol कसा वाचावा: OSI Format समजून घ्या
Options Symbol मधील OSI root, expiry, call किंवा put flag आणि आठ-अंकी strike वाचा. Adjusted roots, SPXW आणि 00007500 म्हणजे $7.50 हे समजून घ्या.
ऑप्शनचे symbol ही एकच string असते. त्यात चार माहितीघटक असतात: underlyingचा root, expiration date, call किंवा putचा flag आणि strike price. या रचनेला OSI म्हणतात. हे नाव US options उद्योगाने 2010मध्ये स्वीकारलेल्या Options Symbology Initiativeवरून आले आहे. प्रत्येक order ticket आणि data feed याच रचनेवर आधारित असतो. हे चार fields एकदा समजले की, सूचीबद्ध US optionचे कोणतेही symbol पाहताक्षणी उलगडता येते.
ऑप्शन symbolमधील चार fields कोणते?
Canonical OSI symbolमध्ये निश्चित क्रमाने 21 characters असतात:
- Rootमध्ये सहा characters असतात. Underlyingचा root सहापेक्षा लहान असल्यास तो डावीकडे align करून उजवीकडे spacesने भरला जातो.
- Expirationमध्ये सहा digits असतात. त्यांचा क्रम YYMMDD असा असतो. 260116 म्हणजे January 16, 2026.
- Rightमध्ये एक character असतो: callसाठी C आणि putसाठी P.
- Strikeमध्ये आठ digits असतात. ते decimal pointशिवाय dollarच्या thousandthsमध्ये लिहिलेले असतात.
बहुतेक brokers आणि websites हे padding काढून compact form दाखवतात. काही feeds stringच्या आधी O:सारखा marker ठेवतात. यापैकी कोणत्याही गोष्टीमुळे parsing बदलत नाही. शेवटचे 15 characters नेहमी date, right आणि strike दर्शवतात. त्यामुळे त्यांच्या आधी असलेला भाग म्हणजे root. खालील panel या नियमावरून वास्तविक contractsचे विभाजन करतो आणि parsed fieldsसोबत contract recordमध्ये असलेली expiration दाखवतो.
प्रत्येक आकड्यामागील अचूक SQL
SELECT
contract,
substring(contract, 1, length(contract) - 15) AS root,
substring(contract, length(contract) - 14, 6) AS expiry_field,
substring(contract, length(contract) - 8, 1) AS right_code,
substring(contract, length(contract) - 7, 8) AS strike_field,
toFloat64(substring(contract, length(contract) - 7, 8)) / 1000 AS strike_dollars,
listed_expiration
FROM
(
SELECT
replaceRegexpOne(ticker, '^O:', '') AS contract,
formatDateTime(any(expiration_date), '%b %e, %Y') AS listed_expiration
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND expiration_date = '2026-01-16'
AND toFloat64(strike_price) IN (500, 600, 650, 700)
AND date >= '2025-12-01'
AND date < '2026-01-01'
GROUP BY contract
)
ORDER BY strike_dollars ASC, right_code ASCपहिल्या rowमध्ये root SPY, date field 260116, right C आणि strike field 00500000 असे parse होतात. Strike fieldला भागल्यावर strike $500 येतो. Contractच्या स्वतःच्या expiration recordमध्ये Jan 16, 2026 आहे. हे stringमधील सहा digitsशी जुळते. या panelमध्ये 8 contracts आहेत: तेच strikes calls आणि puts या दोन्ही स्वरूपात सूचीबद्ध आहेत. Matching call आणि putमध्ये एकच character फरक असतो. म्हणून order ticketवर हा character दोनदा तपासणे महत्त्वाचे आहे. Broker screenवरील हे fields परिचित वाटत असल्यास, option chain वाचणे या लेखात त्यांच्या आसपासचे columns स्पष्ट केले आहेत.
Command lineवर options symbol कसे वाचावे
Parsingसाठी libraries किंवा network accessची गरज नाही. Fields fixed widthचे असून उजवीकडून मोजले जातात. त्यामुळे bashमध्ये substring expansion पुरेसे आहे. हे terminalमध्ये paste करा:
SYM=SPY260116C00650000
echo "root ${SYM:0:$(( ${#SYM} - 15 ))}"
echo "expiry ${SYM: -15:6}"
echo "right ${SYM: -9:1}"
echo "strike ${SYM: -8}"
प्रत्येक negative offsetच्या आधीची space आवश्यक आहे. ती नसल्यास bash :-ला default value expansion म्हणून वाचते आणि चुकीचा परिणाम दाखवते.
Symbolsच्या listसाठी awk हेच arithmetic one-based positions वापरून करते:
awk '{
n = length($0)
root = substr($0, 1, n - 15)
expiry = substr($0, n - 14, 6)
right = substr($0, n - 8, 1)
strike = substr($0, n - 7, 8)
printf "%-6s 20%s-%s-%s %-4s $%.3f\n",
root,
substr(expiry, 1, 2), substr(expiry, 3, 2), substr(expiry, 5, 2),
(right == "C" ? "call" : "put"),
strike / 1000
}' <<'EOF'
SPY260116C00650000
SPY260116P00650000
SPXW260116C05500000
XYZ1260116C00007500
EOF
Python3ची आवृत्ती padded 21-character form आणि feed prefix एकाच functionमध्ये हाताळते. यासाठी standard libraryबाहेरील काहीही आवश्यक नाही:
from datetime import datetime
def parse_osi(symbol):
s = symbol.strip()
if s.startswith("O:"):
s = s[2:]
s = s.replace(" ", "")
return {
"root": s[:-15],
"expiry": datetime.strptime(s[-15:-9], "%y%m%d").date(),
"right": "call" if s[-9] == "C" else "put",
"strike": int(s[-8:]) / 1000,
}
samples = [
"SPY 260116C00650000",
"O:SPY260116P00650000",
"SPXW 260116C05500000",
"XYZ1 260116C00007500",
]
for sym in samples:
f = parse_osi(sym)
print("{:<6} {} {:<4} ${:,.3f}".format(f["root"], f["expiry"], f["right"], f["strike"]))
दोन्ही snippetsमध्ये standard Ubuntu imageवर awk आणि python3व्यतिरिक्त काहीही install करण्याची गरज नाही. दोन्ही networkशी संपर्क साधत नाहीत. त्यामुळे आज आणि पाच वर्षांनी त्यांचा output सारखाच राहील.
00007500चा अर्थ $7.50 strike का होतो?
Strike fieldमध्ये decimal pointशिवाय आठ digits असतात. त्याचे unit dollarचा one-thousandth भाग असते. Dollarमधील किंमत मिळवण्यासाठी 1,000ने भागा. 00007500 म्हणजे 7,500 thousandths, म्हणजे $7.50. 07500000 म्हणजे 7,500,000 thousandths, म्हणजे $7,500. दोन्हीमध्ये शून्यांच्या मालिकेत दडलेले तीन zeros हा फरक आहे. या संपूर्ण formatमधील सर्वात सामान्य चुकीचे वाचन हेच आहे. Fixed widthमुळे प्रत्येक symbolची लांबी समान राहते. Thousandths unitमुळे corporate actionनंतर centच्या अपूर्णांकावर येणाऱ्या strikesसाठीही जागा मिळते.
कमी किंमतीच्या shareपासून चार-अंकी index levelपर्यंत प्रत्येक listed strike दाखवण्यासाठी एकाच fieldचा वापर करावा लागतो. खालील panel अनेक underlyingsसाठी lowest आणि highest strike वाचतो आणि symbolमध्ये दिसणारे आठ digits जसेच्या तसे दाखवतो.
प्रत्येक आकड्यामागील अचूक SQL
SELECT
underlying,
round(toFloat64(min(strike)), 2) AS lowest_strike,
argMin(strike_field, strike) AS lowest_strike_field,
round(toFloat64(max(strike)), 2) AS highest_strike,
argMax(strike_field, strike) AS highest_strike_field,
uniqExact(strike) AS strike_count
FROM
(
SELECT
underlying_symbol AS underlying,
strike_price AS strike,
substring(replaceRegexpOne(ticker, '^O:', ''),
length(replaceRegexpOne(ticker, '^O:', '')) - 7, 8) AS strike_field
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('KO', 'NVDA', 'AAPL', 'SPY', 'SPX')
AND date >= today() - 7
)
GROUP BY underlying
ORDER BY highest_strike ASCदाखवलेल्या sessionsमध्ये KO येथे $32.5 ते $125 असे strikes सूचीबद्ध करतो. Symbolमध्ये ते अनुक्रमे 00032500 आणि 00125000 असे लिहिलेले आहेत. Panelच्या दुसऱ्या टोकाला SPY $1480पर्यंत पोहोचतो. म्हणजेच 01480000, आणि हे 462 वेगवेगळ्या strikesमध्ये पसरलेले आहे. किंमतपातळी कोणतीही असो, आठ digits आणि divisor तोच असतो.
Adjusted options: rootच्या शेवटी असलेल्या अंकाचा अर्थ
Standard equity optionमधून 100 shares मिळतात. Corporate actionमुळे हे बदलू शकते. उदाहरणार्थ, पूर्णांक नसलेल्या ratioमधील split, अंशतः cashमध्ये दिलेला merger, spinoff किंवा thresholdपेक्षा जास्त special cash dividend. OCC open contractsमध्ये adjustment करते आणि त्यांना नवीन root देते. जुन्या rootच्या शेवटी digit जोडला जातो. पहिल्या adjustmentनंतर ABCचा root ABC1 होतो आणि दुसऱ्या adjustmentनंतर ABC2. Layout बदलत नाही. त्यामुळे तुमचा parser काम करत राहतो. मात्र contractमागील deliverable बदलतो आणि symbol त्याबद्दल काही सांगत नाही.
Rootच्या शेवटी असलेला digit mini contractsसाठीही वापरला जातो. त्यासाठी 7 वापरले जाते. Mini contractsमध्ये 100ऐवजी 10 shares असतात. दोन्ही परिस्थितीत हा अंक contract terms वाचणे आवश्यक असल्याचा संकेत असतो. Strikeची इतर कशाशी तुलना करण्यापूर्वी terms तपासणे गरजेचे आहे. stock splitsचा optionsवर परिणाम या noteमध्ये strike आणि deliverableवरील ratioचे गणित स्पष्ट केले आहे.
Adjusted seriesमध्ये नवीन expirations क्वचितच जोडल्या जातात. ABC1सारखा root त्याच्या listed dates संपत गेल्यावर कमी liquid होत जातो. त्यात नवीन dates भरल्या जात नाहीत. शेवटची expiration झाल्यावर तो chainमधून पूर्णपणे नाहीसा होऊ शकतो. Terms ही माहिती stringमध्ये नसते. ती त्या contractसाठीच्या OCC adjustment memoमध्ये असते. त्या memoमध्ये revised deliverable, cash component असल्यास तो आणि त्यासोबत असलेला multiplier नमूद केलेला असतो. हा memo वाचल्याशिवाय, त्याच underlyingवरील adjusted strike आणि standard strike हे दिसायला समान आठ digits असलेले दोन वेगळे contracts आहेत.
SPX, SPXW आणि Wचा अर्थ
Index optionsना स्वतंत्र roots असतात. S&P 500 complex हे बहुतेकांना प्रथम परिचित होणारे उदाहरण आहे. SPX आणि SPXW एकाच indexचा संदर्भ देतात आणि समान 21-character layout वापरतात. नावावरून वाटत असले तरी W आता weekly listing दर्शवत नाही. SPX हा AM-settled root आहे. त्यातील third Friday contractची settlement value expiration Fridayला index componentsच्या opening printsवर आधारित असते. त्याचे trading आदल्या Thursdayला थांबते. SPXW हा PM-settled root आहे. Calendarवरील इतर सर्व contracts त्यात येतात. Monday ते Friday dailiesपासून month-end contractsपर्यंत प्रत्येक contractचा trading त्याच्या स्वतःच्या expiration dayच्या closeपर्यंत सुरू राहतो.
Calendarही याच पद्धतीने विभागला जातो. प्रत्येक monthly cycleमध्ये एक AM-settled third Friday contract SPX rootवर असतो. Indexवरील इतर प्रत्येक forward date SPXWमध्ये येते. Full chainमध्ये दिसणाऱ्या बहुतेक expirations SPXWच्या असतात. String स्वतः यापैकी काहीही स्पष्टपणे दाखवत नाही. Root हा फक्त संकेत असतो. Contract specificationच अंतिम प्राधिकृत स्रोत असतो. दोन roots, एक index, एक screen आणि वेगवेगळ्या settlement mechanicsचे सविस्तर विश्लेषण AM आणि PM-settled optionsमध्ये दिले आहे.
ऑप्शन symbolमधून कोणती माहिती कधीच मिळत नाही
चार fields contractची ओळख पूर्णपणे सांगतात. मात्र contractचे स्वरूप त्यातून फारच मर्यादित प्रमाणात समजते. विशेषतः:
- Multiplier. Standard US equity optionमध्ये 100 shares असतात. Stringमधील कोणतेही field हे सांगत नाही. Adjusted series आणि mini series वेगळ्या असतात. Index productsचे multipliers स्वतंत्र असतात.
- Settlement style. Symbolमध्ये AM आणि PM settlementमधील फरक किंवा cash settlement आणि physical delivery यांपैकी कोणते आहे हे दिसत नाही. Index rootsमध्ये conventionचा संकेत मिळतो. मात्र contract specificationच अंतिम प्राधिकृत स्रोत असतो.
- Deliverable. Adjustmentनंतर 100 sharesची गृहीत धारणा लागू राहत नाही. Digit वगळता symbol पूर्वीसारखेच दिसते.
- उरलेला कालावधी. Date field expiration दाखवते; countdown नाही. त्याचे days to expiryमध्ये रूपांतर करण्यासाठी calendarवर स्वतंत्र arithmetic करावे लागते.
- Liquidity. समान रचना असलेले दोन symbols volume आणि open interestमध्ये अनेक पटींचा फरक असलेले orders दाखवू शकतात.
वारंवार विचारले जाणारे प्रश्न
ऑप्शन symbolमध्ये किती characters असतात?
Canonical OSI formमध्ये 21 characters असतात: rootसाठी सहा, dateसाठी सहा, call किंवा put flagसाठी एक आणि strikeसाठी आठ. सहापेक्षा लहान roots spacesने भरले जातात. बहुतेक screens हे padding काढतात. त्यामुळे तीन-letter root साधारणतः 18-character string म्हणून दिसतो.
ऑप्शन symbolमधील rootनंतरच्या अंकाचा अर्थ काय?
तो contractचे terms आता standard राहिलेले नाहीत, हे दर्शवतो. Corporate actionनंतरच्या adjusted seriesची ओळख पटवण्यासाठी OCC digit जोडते. 7 हा 100ऐवजी 10 shares असलेल्या mini contractसाठी वापरला जातो. Date आणि strike fields मात्र त्याच पद्धतीने parse होतात.
Strikeमध्ये आठ digits का असतात?
या fieldमध्ये strike fixed-width integerच्या स्वरूपात dollarच्या thousandthsमध्ये ठेवला जातो. त्यामुळे decimal point न वापरता tenth of a centपासून $99,999.999पर्यंतची किंमत दाखवता येते. Dollarमधील किंमत वाचण्यासाठी आठ digitsना 1,000ने भागा: 00007500 म्हणजे $7.50.
SPXW आणि SPX एकच आहेत का?
दोन्ही एकाच indexचा संदर्भ देतात आणि समान symbol layout वापरतात. Settlement वेगळे असते. SPX contracts Friday morningच्या opening printsवर आधारित valueवर settle होतात आणि आदल्या दिवशी trading थांबते. SPXW contracts त्यांच्या expiration dayच्या closeपर्यंत trade होतात आणि closing index levelवर settle होतात.
ऑप्शन symbolमधून option weekly आहे की monthly, हे कळते का?
US equitiesसाठी नाही. एकाच underlyingवरील weekly आणि monthly options समान root वापरतात. त्यांच्यात फरक फक्त सहा date digitsमध्ये असतो. Third Friday conventionमुळे एखादी date monthly असल्याचे दिसते. Index complexes मात्र यासाठी स्वतंत्र roots वापरतात.
या pageवरील प्रत्येक panelखाली expanderमध्ये तो तयार करणारा अचूक SQL दिलेला आहे. त्यामुळे stringमधून प्रत्येक field कसा काढला आहे ते पाहता येते. तुम्ही सध्या पाहत असलेल्या symbolचे विभाजन करायचे असल्यास, Strasmore terminalवर plain Englishमध्ये त्यासाठी विनंती करा.