Bracket आणि OCO Orders: अर्थ व कार्यपद्धती
Bracket order म्हणजे काय? Profit target आणि protective stop OCO म्हणून कसे जोडले जातात, partial fillनंतर काय होते आणि हे linkage नेमके कुठे असते.
Bracket order म्हणजे एका सूचनेत तीन orders पाठविणारी रचना: एक entry आणि त्याच्याशी जोडलेली, entryच्या दोन्ही बाजूंना ठेवलेली exitची जोडी. या जोडीला OCO म्हणतात; OCO म्हणजे one cancels the other. Profit-target limit entry priceच्या वर ठेवला जातो आणि protective stop entry priceच्या खाली. यापैकी कोणताही leg भरला की दुसरा आपोआप रद्द होतो. Bracket ही प्रत्यक्षात एक छोटी state machine आहे. तिच्या statesमधील संक्रमणाच्या क्षणी बहुतेक अनपेक्षित परिणाम दिसतात.
Bracket order म्हणजे काय?
समजा एखाद्या traderला $50च्या आसपास 200 शेअर्स खरेदी करायचे आहेत. व्यवहार अनुकूल ठरल्यास position $53च्या आसपास बंद करायची आहे. व्यवहार प्रतिकूल ठरल्यास $48.50च्या आसपास बाहेर पडायचे आहे. स्वतंत्र tickets म्हणून हे तीन orders आणि एक manual काम ठरते: target भरताच stop रद्द करणे. ते न केल्यास 200 शेअर्स दोनदा विकले जाऊ शकतात. Bracket हीच योजना एका submissionमध्ये बांधतो. Entry हा सामान्य market order किंवा limit order असतो. दोन्ही exits हे त्याचे children असतात: targetवर position बंद करण्यासाठी limit आणि protective levelवर बंद करण्यासाठी stop किंवा stop limit order.
या रचनेसाठी वापरली जाणारी संज्ञा brokerनुसार बदलते. Bracket, attached order, OCO bracket आणि OTOCO या सर्व संज्ञा या रचनेचे वर्णन करतात. OTOCO म्हणजे one triggers a one-cancels-the-other. Sequenceचे हे सर्वांत थेट नाव आहे: entry pair सक्रिय करतो आणि त्यानंतर pair स्वतःला एका orderपर्यंत कमी करतो.
Bracket orderमध्ये OCOचा अर्थ काय?
OCO म्हणजे परस्पर cancel link असलेले दोन resting orders. दोन्ही orders एकाच वेळी bookमध्ये live असतात. एक भरला की दुसरा काढला जातो. एखादा order अंशतः भरला तर दुसरा पूर्णपणे काढला जात नाही; भरलेल्या quantityइतका कमी केला जातो. त्यामुळे उघडी position आणि तिचे protection शेअर-शेअर जुळून राहतात.
200 शेअर्सच्या long bracketचा पूर्ण sequence असा असतो.
- Entry एकटाच कार्यरत असतो. Target आणि stop brokerच्या systemमध्ये असतात; मात्र ते working orders नसतात. त्यामुळे entry न भरता target priceवरून trade झाला तरी काहीही घडत नाही.
- Entry 200 शेअर्ससाठी भरतो. दोन्ही children live होतात आणि प्रत्येकी 200 शेअर्सचे असतात.
- Trading stop priceपर्यंत पोहोचते. Stop live sell orderमध्ये रूपांतरित होतो आणि bookमध्ये कार्यरत होतो.
- बाजाराची दिशा बदलण्यापूर्वी stop 120 शेअर्स भरतो. Target limit 200वरून 80 शेअर्सपर्यंत कमी केला जातो. त्यामुळे उरलेल्या positionशी त्याचा मेळ राहतो.
- त्या दिवशी नंतर उरलेले 80 शेअर्स targetवर भरतात. Stopमधील उरलेले 80 शेअर्स रद्द होतात आणि bracket पूर्णपणे बंद होतो.
Entryच्या partial fillsमध्ये platformsमधील फरक सर्वाधिक दिसतो. काही brokers भरलेल्या quantityपुरते children त्वरित सक्रिय करतात आणि entryची उर्वरित quantity भरत गेल्यावर त्यांची size वाढवतात. इतर brokers entry पूर्णपणे भरेपर्यंत प्रतीक्षा करतात. त्यामुळे त्या काळात positionला protection नसते. Brokerनुसार semanticsमधील फरक केवळ तांत्रिक नसतात: partial entry fillवर children सक्रिय होतात का आणि एका childमध्ये बदल केल्यास दुसऱ्याशी असलेला cancel link तुटतो का, हे महत्त्वाचे असते.
दोन्ही legsमध्ये किती अंतर असते?
दोन्ही legs एखाद्या securityच्या सामान्य दिवसातील noiseच्या बाहेर, पण ती प्रत्यक्षात पार करू शकणाऱ्या अंतराच्या आत असणे आवश्यक आहे. Daily range हे यासाठीचे पहिले साधे मोजमाप आहे. खालील panel मागील वर्षातील सहा परिचित namesचे आकडे दाखवतो: openच्या टक्केवारीतील high-to-low rangeचा median आणि त्यासोबत open ते closeमधील absolute moveचा median.
प्रत्येक आकड्यामागील अचूक SQL
SELECT
ticker,
round(quantileDeterministic(0.5)(
(toFloat64(high) - toFloat64(low)) / toFloat64(open) * 100,
toUInt32(date)), 2) AS median_range_pct,
round(quantileDeterministic(0.5)(
abs(toFloat64(close) - toFloat64(open)) / toFloat64(open) * 100,
toUInt32(date)), 2) AS median_open_to_close_pct
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO', 'JNJ')
AND date >= today() - 370
AND date < today() - 2
GROUP BY ticker
ORDER BY median_range_pct DESCसहा namesमध्ये NVDAचा typical session सर्वांत रुंद असून तो 2.72% इतका आहे. SPYचा session सर्वांत अरुंद असून तो 0.86% इतका आहे. प्रत्येक rowमध्ये दुसरा column पहिल्यापेक्षा किती खाली आहे, हे लक्षात घ्या. एखादा typical name sessionदरम्यान open ते closeच्या निव्वळ हालचालीपेक्षा बरेच अधिक अंतर पार करतो. दोन्ही bracket legs या हालचालीच्या मर्यादेत असतात. त्यामुळे target आणि stop दोन्ही एकाच सामान्य दिवशी गाठले जाऊ शकतात.
Bracket legला किती वेळा स्पर्श होतो?
Entryपासूनचे अंतर हा trader प्रत्यक्षात नियंत्रित करू शकणारा घटक आहे. पुढील panel SPYच्या ठरावीक तीन वर्षांतील sessionsवर हा प्रश्न मांडतो. Opening printपासून विविध अंतरांवर दिवसाच्या कोणत्याही टप्प्यावर किंमत त्या अंतराइतकी खाली आणि त्या अंतराइतकी वर किती sessionsमध्ये गेली, हे यात दाखवले आहे.
प्रत्येक आकड्यामागील अचूक SQL
SELECT
concat(toString(d.dist), '%') AS distance_from_open,
round(100 * countIf(
(toFloat64(a.open) - toFloat64(a.low)) / toFloat64(a.open) * 100 >= d.dist
) / count(), 1) AS reached_below_pct,
round(100 * countIf(
(toFloat64(a.high) - toFloat64(a.open)) / toFloat64(a.open) * 100 >= d.dist
) / count(), 1) AS reached_above_pct
FROM global_markets.stocks_daily_aggs AS a
CROSS JOIN
(
SELECT arrayJoin([0.25, 0.5, 1.0, 1.5, 2.0, 3.0]) AS dist
) AS d
WHERE a.ticker = 'SPY'
AND a.date >= '2023-08-01'
AND a.date < '2026-08-01'
GROUP BY d.dist
ORDER BY d.distOpenपासून एक चतुर्थांश टक्के अंतरावर, 62.3% sessionsमध्ये किंमत दिवसाच्या कोणत्यातरी टप्प्यावर तितकी खाली गेली आणि 64.7% sessionsमध्ये तितकी वर गेली. हे अंतर 3%पर्यंत वाढवल्यावर downside figure 0.5%पर्यंत कमी होते. दोन्ही curves एकत्र कमी होतात. Bracketच्या sizingमधील मुख्य ताण याचाच आहे. Tight stop म्हणजे सामान्य दिवसांतही भरला जाणारा stop. दूरचा target म्हणजे बहुतेक वेळा न भरता expiryपर्यंत पोहोचणारा target.
Stop loss नेहमी stop priceवर भरतो का?
नाही. Trigger priceवर print झाल्यावर order पाठविण्याची सूचना म्हणजे stop. साधा stop market order पाठवतो. त्या क्षणी bookमध्ये उपलब्ध असलेल्या किंमतीवर fill होतो. Stop limit तुम्ही ठरवलेल्या किंमतीवर limit order पाठवतो. त्यामुळे किंमत संरक्षित राहते; मात्र order अजिबात न भरण्याचा धोका स्वीकारावा लागतो. हा trade-off stop order विरुद्ध stop limit orderमध्ये स्पष्ट केला आहे.
Overnight gap हे याचे सर्वांत स्पष्ट उदाहरण आहे. Exchange बंद असताना protective stop तसाच resting राहतो. Opening print trigger priceपेक्षा खूप पुढे असू शकतो. साडेतीन वर्षांतील AAPLची दहा उदाहरणे:
प्रत्येक आकड्यामागील अचूक SQL
SELECT
formatDateTime(session_date, '%b %e, %Y') AS gap_label,
round((day_open / prev_close - 1) * 100, 2) AS overnight_gap_pct
FROM
(
SELECT
session_date,
day_open,
lagInFrame(day_close) OVER (
ORDER BY session_date ROWS BETWEEN 1 PRECEDING AND CURRENT ROW
) AS prev_close
FROM
(
SELECT
date AS session_date,
toFloat64(any(open)) AS day_open,
toFloat64(any(close)) AS day_close
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'AAPL'
AND date >= '2023-01-01'
AND date < '2026-07-01'
GROUP BY date
)
)
WHERE prev_close > 0
ORDER BY overnight_gap_pct ASC
LIMIT 10त्यांपैकी सर्वांत मोठे gap -9.45% इतके असून ते Aug 5, 2024 रोजी झाले. यादीतील दहावे gapसुद्धा -2.96% इतके होते. त्या gapsच्या आत कुठेही resting असलेला protective stop trigger priceवर नव्हे, तर opening printवर convert झाला. केवळ intraday rangeवर bracketचे sizing केल्यास हे अंतर मोजणीत समाविष्ट होत नाही.
OCO link प्रत्यक्षात कुठे असतो?
जवळजवळ कधीही exchangeवर नाही. दोन childrenमधील cancel link brokerच्या order-management systemमध्ये असतो. काही वेळा तो तुमच्या स्वतःच्या machineवर चालणाऱ्या trading platformच्या आणखी एका layerमध्ये असतो. Exchangeला दोन सामान्य आणि परस्पर असंबद्ध orders दिसतात.
ही जागा outageनंतर काय टिकून राहील, हे ठरवते. Broker-side bracket laptop बंद झाल्यावरही कार्यरत राहतो, कारण दोन्ही legs आणि cancel logic brokerच्या serversवर असतात. काही charting applicationsमध्ये असलेला platform-side bracket application चालू आणि connected असण्यावर अवलंबून असतो. काही platforms simulated stop ठेवतात. तो trigger price छापला जाईपर्यंत केवळ local memoryमध्ये असतो. Laptop बंद केल्यास तो stop कधीच पाठवला जात नाही.
हाच प्रश्न तुमच्या स्वतःच्या codeलाही लागू होतो. Running processमध्येच असलेला stop process थांबल्यावर bookमध्ये काहीही resting ठेवत नाही. Trading botsसाठी circuit breakers automated systemsसाठीची पद्धत स्पष्ट करते: process सर्वांत वाईट क्षणी बंद पडला, असे गृहीत धरा आणि brokerकडे त्यानंतर काय कार्यरत राहते, हे विचारा.
Time in force प्रत्येक legला लागू होते
प्रत्येक legचे स्वतःचे time in force setting असते. Day entryसोबत GTC children ही सामान्य पण अवघड जोड आहे. Entry closeवेळी expire होतो; children कधीही सक्रिय होत नाहीत. त्यामुळे दुसऱ्या दिवशी सकाळी bracket शांतपणे काहीही करत नाही. उलट जोडीत overnight ठेवलेल्या positionचे protection 4:00 p.m. ETला expire होते.
Regular hoursच्या बाहेर bookचे स्वरूपच बदलते. खालील panel संपूर्ण दिवसातील SPY minute barsना ET clock timeनुसार groupsमध्ये विभागतो. प्रत्येक अर्ध्या तासासाठी दोन गोष्टी दाखवल्या आहेत: one-minute moveची सरासरी size, basis pointsमध्ये, आणि एका मिनिटातील median volume. One basis point म्हणजे टक्क्याच्या शंभराव्या भागाएवढे.
प्रत्येक आकड्यामागील अचूक SQL
SELECT
formatDateTime(
toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE),
'%H:%i') AS et_time,
round(avg(abs(toFloat64(close) - toFloat64(open)) / toFloat64(open) * 10000), 1) AS avg_move_bps,
round(quantileDeterministic(0.5)(toFloat64(volume), toUInt64(window_start)), 0) AS median_volume
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= today() - 120
AND window_start < today() - 2
GROUP BY et_time
ORDER BY et_timeया panelमध्ये 32 अर्ध्या-तासांचे groups आहेत. ते 04:00 ते 19:30 ETपर्यंत आहेत. डावीकडून उजवीकडे वाचा. दोन्ही series premarket hoursमध्ये त्यांच्या किमान पातळीच्या आसपास असतात. 09:30 openच्या दिशेने त्या वेगाने वाढतात आणि 16:00नंतर पुन्हा कमी होतात. सकाळी 5 वाजता resting असलेला GTC stop या curveच्या thin भागात असतो. इतक्या thin bookमध्ये stop-market fill trigger priceपासून बर्याच दूर जाऊ शकतो.
वारंवार विचारले जाणारे प्रश्न
Bracket order आणि OCO orderमध्ये काय फरक आहे?
OCO म्हणजे pair स्वतः: cancel link असलेले दोन resting orders. त्यापैकी एक भरला की दुसरा काढला जातो. Bracket म्हणजे OCO pair जोडलेला entry order. Entry भरल्यानंतरच pair live होतो. प्रत्येक bracketमध्ये एक OCO असतो. मात्र अनेक OCO pairs स्वतंत्रपणेही वापरले जातात.
माझा computer बंद असला तरी bracket order कार्यरत राहतो का?
Linkage कुठे आहे, यावर ते अवलंबून असते. Broker-side bracket brokerच्या serversवर resting राहतो आणि platform बंद असतानाही कार्यरत राहतो. Platform-side किंवा simulated bracketसाठी application चालू आणि connected असणे आवश्यक असते. Application नसल्यास child orders marketपर्यंत पोहोचणारही नाहीत.
Profit target अंशतः भरल्यास stopचे काय होते?
Stop रद्द न होता भरलेल्या quantityइतका कमी केला जातो. 200 शेअर्सचा target 60 शेअर्ससाठी भरल्यास stop 140 शेअर्सपर्यंत कमी होतो. त्यामुळे उघड्या positionशी त्याचा मेळ राहतो. Positionमधील शेवटचा शेअर बंद झाल्यावरच cancel होतो.
Premarket किंवा after-hours tradingमध्ये bracket order वापरता येतो का?
Brokerनुसार behaviour बदलते. अनेक brokers bracket children केवळ regular hoursमध्ये route करतात. विशेषतः US equitiesमध्ये 9:30 a.m. ते 4:00 p.m. ETच्या बाहेर stop orders अनेकदा reject केले जातात किंवा hold केले जातात. प्रत्येक legचे time-in-force setting त्या legला extended sessionमध्ये eligible करते की नाही, हे ठरवते.
माझे दोन orders linked आहेत, हे exchangesना माहीत असते का?
नाही. US equitiesमध्ये cancel link broker किंवा platformकडे असतो. Exchangeला दोन स्वतंत्र orders मिळतात. एका legचा fill झाल्याची माहिती मिळाल्यानंतर link ज्या systemकडे आहे, ते system उरलेल्या legसाठी cancel message पाठवते.
येथील प्रत्येक panel त्यामागील अचूक SQLसह उपलब्ध आहे. तुम्ही पाहत असलेल्या securityसाठी range आणि gap risk मोजायचा असल्यास Strasmore terminalवर plain Englishमध्ये प्रश्न विचारा.