Bracket Order மற்றும் OCO Order விளக்கம்
Bracket order என்றால் என்ன, லாப இலக்கு மற்றும் பாதுகாப்பு நிறுத்தம் எவ்வாறு OCO முறையில் இணைகின்றன, பகுதி நிறைவு மற்றும் இந்த கட்டளைகளின் செயல்பாட்டு முறை குறித்து விரிவாக அறியலாம்.
Bracket order என்றால் என்ன?
ஒரு bracket order என்பது மூன்று கட்டளைகளை (orders) ஒரு குறிப்பிட்ட பிணைப்பில் அனுப்பும் ஒரு வழிமுறையாகும்: ஒரு நுழைவு (entry) மற்றும் அதனுடன் இணைக்கப்பட்ட வெளியேறும் ஜோடி (exit pair). இந்த ஜோடி OCO (one cancels the other - ஒன்று மற்றொன்றை ரத்து செய்யும்) என்று அழைக்கப்படுகிறது. நுழைவு விலைக்கு மேலே ஒரு லாப இலக்கு (profit-target limit) மற்றும் கீழே ஒரு பாதுகாப்பு நிறுத்தம் (protective stop) இருக்கும். இதில் ஏதேனும் ஒன்று நிறைவேறினால், மற்றொன்று தானாகவே ரத்து செய்யப்படும். ஒரு bracket என்பது உண்மையில் ஒரு சிறிய state machine ஆகும்; அதன் நிலைகளுக்கு இடையிலான தருணங்களில்தான் பெரும்பாலான எதிர்பாராத நிகழ்வுகள் நடக்கின்றன.
ஒரு வர்த்தகர் 200 பங்குகளை $50-க்கு அருகில் வாங்க விரும்புகிறார் என்று வைத்துக்கொள்வோம். அது லாபகரமாக அமைந்தால் $53-க்கு அருகில் விற்கவும், இல்லையெனில் $48.50-க்கு அருகில் வெளியேறவும் திட்டமிடுகிறார். இதை தனித்தனி கட்டளைகளாகச் செய்தால், அது மூன்று கட்டளைகளாகிவிடும் மற்றும் கைமுறையாகச் செய்ய வேண்டிய வேலையாகிவிடும்: இலக்கு நிறைவேறியவுடன் நிறுத்தத்தை (stop) ரத்து செய்ய வேண்டும், இல்லையெனில் 200 பங்குகளை இருமுறை விற்கும் அபாயம் ஏற்படும். ஒரு bracket இந்த நோக்கத்தை ஒரே சமர்ப்பிப்பாக மாற்றுகிறது. நுழைவு என்பது ஒரு சாதாரண market order அல்லது limit order ஆகும். வெளியேறும் இரண்டு கட்டளைகளும் அதன் சந்ததிகள் (children): இலக்கு விலையில் விற்க ஒரு limit order மற்றும் பாதுகாப்பு நிலையில் வெளியேற ஒரு stop அல்லது stop limit order.
இதற்கான பெயர்கள் மாறுபடும். Bracket, attached order, OCO bracket மற்றும் OTOCO ஆகியவை இந்த அமைப்பையே குறிக்கின்றன. OTOCO (one triggers a one-cancels-the-other) என்பது இந்த வரிசைக்கு மிகவும் பொருத்தமான பெயர்: நுழைவு கட்டளை ஜோடியைத் தூண்டுகிறது, பின்னர் அந்த ஜோடி தங்களுக்குள் ஒன்றை ரத்து செய்கிறது.
Bracket order-ல் OCO என்றால் என்ன?
OCO என்பது அவற்றுக்கிடையே ரத்து செய்யும் பிணைப்பைக் கொண்ட இரண்டு நிலுவையில் உள்ள கட்டளைகள் ஆகும். இரண்டுமே ஒரே நேரத்தில் புத்தகத்தில் (book) இருக்கும். ஒன்று நிறைவேறும்போது, மற்றொன்று நீக்கப்படும். ஒன்று பகுதியளவு நிறைவேறினால், மற்றொன்று முழுமையாக நீக்கப்படுவதற்குப் பதிலாக, நிறைவேறிய அளவுக்கு ஏற்ப குறைக்கப்படுகிறது. இந்த குறைப்புதான் ஒரு பங்கின் நிலையையும் அதன் பாதுகாப்பையும் சமமாக வைத்திருக்க உதவுகிறது.
200 பங்குகளுக்கான முழுமையான bracket வரிசை இவ்வாறு செயல்படுகிறது:
- நுழைவு கட்டளை மட்டும் செயல்படும். இலக்கு மற்றும் நிறுத்தக் கட்டளைகள் புரோக்கரின் அமைப்பில் இருக்கும், ஆனால் அவை செயல்படும் கட்டளைகள் அல்ல. எனவே, நுழைவு நிறைவேறாத வரை இலக்கு விலையில் வர்த்தகம் நடந்தாலும் எதுவும் நடக்காது.
- நுழைவு 200 பங்குகளுக்கு நிறைவேறுகிறது. இரண்டு சந்ததிக் கட்டளைகளும் தலா 200 பங்குகளுக்குச் செயல்படத் தொடங்குகின்றன.
- வர்த்தகம் நிறுத்த விலையை அடைகிறது. நிறுத்தம் ஒரு நேரடி விற்பனை கட்டளையாக மாறி புத்தகத்தில் செயல்படுகிறது.
- சந்தை நகர்வதற்கு முன், நிறுத்தக் கட்டளை 120 பங்குகளை நிறைவேற்றுகிறது. இலக்கு limit order 200-லிருந்து 80-ஆகக் குறைக்கப்படுகிறது, இது மீதமுள்ள நிலைக்கு ஏற்ப அமைகிறது.
- அந்த கடைசி 80 பங்குகளும் பின்னர் இலக்கு விலையில் நிறைவேறுகின்றன. நிறுத்தக் கட்டளையின் மீதமுள்ள 80 பங்குகள் ரத்து செய்யப்பட்டு bracket முடிவடைகிறது.
நுழைவு கட்டளையில் பகுதியளவு நிறைவேற்றம் (partial fills) நடக்கும்போதுதான் தளங்கள் மாறுபடுகின்றன. சில புரோக்கர்கள் நிறைவேறிய அளவுக்கு மட்டும் சந்ததிக் கட்டளைகளை உடனடியாகச் செயல்படுத்துவார்கள். மற்றவர்கள் நுழைவு முழுமையாக நிறைவேறும் வரை காத்திருப்பார்கள், இது இடைப்பட்ட நேரத்தில் நிலையைப் பாதுகாப்பற்றதாக மாற்றும். புரோக்கர்களுக்கு இடையே இந்த நுணுக்கங்கள் முக்கியமானவை: சந்ததிக் கட்டளைகள் பகுதியளவு நுழைவில் செயல்படுமா மற்றும் ஒரு சந்ததிக் கட்டளையைத் திருத்துவது மற்றொன்றின் ரத்து பிணைப்பை உடைக்குமா என்பது முக்கியம்.
இரண்டு கால்களும் (legs) எவ்வளவு இடைவெளியில் இருக்க வேண்டும்?
இரண்டு கால்களும் ஒரு சாதாரண நாளில் சந்தையின் இரைச்சலுக்கு (noise) வெளியிலும், அதே சமயம் அந்தப் பங்கு நகரக்கூடிய தூரத்திற்கு உள்ளேயும் இருக்க வேண்டும். தினசரி வர்த்தக வரம்பு (daily range) இதற்கான முதல் அளவுகோலாகும். கீழே உள்ள அட்டவணை கடந்த ஆண்டில் ஆறு முக்கிய பங்குகளைக் காட்டுகிறது: தொடக்க விலையிலிருந்து (open) உயர்-தாழ்வு வரம்பின் சராசரி சதவீதம் மற்றும் தொடக்கத்திலிருந்து முடிவுக்கு (close) உள்ள சராசரி நகர்வு.
ஒவ்வொரு எண்ணின் பின்னணியில் உள்ள துல்லியமான 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 DESCNVDA இந்த ஆறில் அதிகபட்ச தினசரி வரம்பைக் கொண்டுள்ளது (2.72%), மற்றும் SPY மிகக் குறைந்த வரம்பைக் கொண்டுள்ளது (0.86%). இரண்டாவது நெடுவரிசை முதல் நெடுவரிசையை விட எவ்வளவு கீழே உள்ளது என்பதைக் கவனியுங்கள். ஒரு பங்கு தொடக்கத்திலிருந்து முடிவுக்கு நகர்வதை விட, ஒரு அமர்வின் போது அதிக தூரம் பயணிக்கிறது. ஒரு இலக்கு மற்றும் நிறுத்தம் ஆகிய இரண்டும் ஒரே நாளில் எட்டக்கூடியவை.
Bracket-ன் ஒரு கால் எவ்வளவு அடிக்கடி தொடப்படுகிறது?
நுழைவு விலையிலிருந்து உள்ள தூரத்தை வர்த்தகர் கட்டுப்படுத்தலாம். அடுத்த அட்டவணை SPY-ன் மூன்று ஆண்டுகால தரவுகளைக் கொண்டு, தொடக்க விலையிலிருந்து ஒரு குறிப்பிட்ட தூரத்தில் எத்தனை அமர்வுகள் அந்த இலக்கை அல்லது நிறுத்தத்தைத் தொட்டன என்பதைக் காட்டுகிறது.
ஒவ்வொரு எண்ணின் பின்னணியில் உள்ள துல்லியமான 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.distதொடக்கத்திலிருந்து கால் சதவீத தூரத்தில், 62.3% அமர்வுகள் அந்த அளவுக்குக் கீழே வர்த்தகம் செய்யப்பட்டன மற்றும் 64.7% அந்த அளவுக்கு மேலே வர்த்தகம் செய்யப்பட்டன. தூரத்தை 3%-க்கு அதிகரித்தால், கீழ்நோக்கிய எண்ணிக்கை 0.5%-ஆகக் குறைகிறது. இரண்டு வளைவுகளும் ஒன்றாகக் குறைகின்றன, இதுவே bracket அளவீட்டில் உள்ள சிக்கல். மிக நெருக்கமான நிறுத்தம் சாதாரண நாட்களிலேயே தூண்டப்படலாம். மிகத் தொலைவான இலக்கு பெரும்பாலும் நிறைவேறாமலேயே முடிந்துவிடும்.
நிறுத்த இழப்பு (stop loss) எப்போதும் நிறுத்த விலையிலேயே நிறைவேறுகிறதா?
இல்லை. நிறுத்தம் என்பது ஒரு தூண்டுதல் விலை (trigger price) எட்டப்பட்டவுடன் ஒரு கட்டளையை அனுப்பும் அறிவுறுத்தலாகும். ஒரு சாதாரண நிறுத்தம் market order-ஐ அனுப்புகிறது, அது அந்த நேரத்தில் சந்தையில் என்ன விலை கிடைக்கிறதோ அதில் நிறைவேறும். ஒரு stop limit order நீங்கள் நிர்ணயித்த விலையில் limit order-ஐ அனுப்புகிறது, இது விலையைப் பாதுகாக்கிறது ஆனால் நிறைவேறாமல் போகும் அபாயத்தை ஏற்கிறது. இந்த பரிமாற்றம் stop order versus stop limit order என்பதில் விவரிக்கப்பட்டுள்ளது.
ஒரே இரவில் ஏற்படும் விலை இடைவெளி (overnight gap) இதற்கு மிகச்சிறந்த உதாரணம். சந்தை மூடப்பட்டிருக்கும் போது பாதுகாப்பு நிறுத்தம் நிலுவையில் இருக்கும், சந்தை திறக்கும்போது விலை தூண்டுதல் விலையைத் தாண்டி இருக்கலாம். 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அவற்றில் மிகப்பெரியது -9.45% (Aug 5, 2024 அன்று) மற்றும் பட்டியலில் பத்தாவது -2.96% ஆக இருந்தது. அந்த இடைவெளிகளுக்குள் இருந்த எந்தவொரு பாதுகாப்பு நிறுத்தமும் தூண்டுதல் விலையில் அல்லாமல், சந்தை திறந்த விலையிலேயே (opening print) மாற்றப்பட்டது. தினசரி வர்த்தக வரம்பை மட்டும் வைத்து bracket-ஐ அளவிடுவது இந்த அபாயத்தைக் கணக்கில் கொள்வதில்லை.
OCO பிணைப்பு உண்மையில் எங்கே இருக்கிறது?
இது கிட்டத்தட்ட எப்போதும் பங்குச் சந்தையில் (exchange) இருப்பதில்லை. இரண்டு சந்ததிக் கட்டளைகளுக்கு இடையிலான ரத்து பிணைப்பு புரோக்கரின் கட்டளை மேலாண்மை அமைப்பில் (order-management system) அல்லது உங்கள் கணினியில் இயங்கும் வர்த்தகத் தளத்தில் (trading platform) இருக்கும். பங்குச் சந்தை இரண்டு சாதாரண, தொடர்பில்லாத கட்டளைகளாகவே இதைப் பார்க்கிறது.
இந்த இடம் எங்கே இருக்கிறது என்பதுதான் தொழில்நுட்பக் கோளாறின் போது எது தப்பிக்கும் என்பதைத் தீர்மானிக்கிறது. புரோக்கர் தளத்தில் உள்ள bracket, உங்கள் மடிக்கணினி அணைக்கப்பட்டாலும் செயல்படும், ஏனெனில் புரோக்கரின் சேவையகங்கள் (servers) பிணைப்பு மற்றும் ரத்து தர்க்கத்தை வைத்திருக்கின்றன. சில விளக்கப்படத் தளங்கள் (charting applications) உள்ளூரில் செயல்படுத்தும் bracket-க்கு, அந்தத் தளம் இயங்கிக்கொண்டிருக்க வேண்டும். சில தளங்கள் உள்ளூர் நினைவகத்தில் மட்டுமே நிறுத்தத்தை வைத்திருக்கும்; மடிக்கணினியை அணைத்தால் அந்த நிறுத்தம் சந்தைக்கு அனுப்பப்படாது.
இதே கேள்வி உங்கள் சொந்த நிரலுக்கும் பொருந்தும். ஒரு இயங்கும் செயல்முறைக்குள் (process) மட்டுமே இருக்கும் நிறுத்தம், அந்தச் செயல்முறை நின்றவுடன் புத்தகத்தில் எதையும் விட்டுவைக்காது. Circuit breakers for trading bots தானியங்கி அமைப்புகளுக்கான முறையை விளக்குகிறது: செயல்முறை மோசமான தருணத்தில் நின்றுவிட்டால், புரோக்கரிடம் என்ன நிலுவையில் உள்ளது என்பதை எப்போதும் கவனத்தில் கொள்ளுங்கள்.
கால அளவு (time in force) ஒவ்வொரு காலுக்கும் பொருந்தும்
ஒவ்வொரு காலும் அதன் சொந்த time in force அமைப்பைக் கொண்டுள்ளது. ஒரு நாள் நுழைவு (day entry) மற்றும் GTC (Good Till Cancelled) சந்ததிக் கட்டளைகளை இணைப்பது பொதுவானது, ஆனால் அது சிக்கலானது: நுழைவு சந்தை முடிவில் காலாவதியாகிவிடும், ஆனால் சந்ததிக் கட்டளைகள் செயல்படாமல் இருக்கும். மறுபுறம், ஒரே இரவில் வைத்திருக்கும் நிலைக்கு, சந்தை முடிவில் காலாவதியாகும் பாதுகாப்பு நிறுத்தத்தை வைப்பது ஆபத்தானது.
சந்தை நேரத்திற்கு வெளியே புத்தகத்தின் தன்மை மாறுகிறது. கீழே உள்ள அட்டவணை SPY-ன் ஒரு நிமிட வர்த்தகத்தை ET நேரத்தின்படி பிரிக்கிறது: ஒரு நிமிட நகர்வின் சராசரி அளவு (basis points-ல்) மற்றும் ஒரு நிமிடத்தில் நடந்த சராசரி வர்த்தக அளவு.
ஒவ்வொரு எண்ணின் பின்னணியில் உள்ள துல்லியமான 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இந்த அட்டவணை 32 அரை மணி நேரப் பிரிவுகளைக் காட்டுகிறது (04:00 முதல் 19:30 ET வரை). இடமிருந்து வலமாகப் பார்த்தால், சந்தையின் வடிவம் புரியும். சந்தை திறப்பதற்கு முன் வர்த்தகம் குறைவாக இருக்கும், 09:30 மணிக்குத் திறக்கும்போது உயரும், 16:00 மணிக்கு மேல் குறையும். அதிகாலை 5 மணிக்கு நிலுவையில் உள்ள GTC நிறுத்தம், மிகக் குறைந்த வர்த்தகம் நடக்கும் நேரத்தில் இருக்கும்; அந்த நேரத்தில் stop-market கட்டளை தூண்டப்பட்டால், அது தூண்டுதல் விலையிலிருந்து வெகு தொலைவில் நிறைவேற வாய்ப்புள்ளது.
அடிக்கடி கேட்கப்படும் கேள்விகள்
Bracket order மற்றும் OCO order-க்கு என்ன வித்தியாசம்?
OCO என்பது அந்த ஜோடி மட்டுமே: ரத்து பிணைப்புடன் கூடிய இரண்டு நிலுவைக் கட்டளைகள். Bracket என்பது ஒரு நுழைவு கட்டளையுடன் இணைக்கப்பட்ட OCO ஜோடி; நுழைவு நிறைவேறிய பிறகுதான் இந்த ஜோடி செயல்படும். ஒவ்வொரு bracket-லும் ஒரு OCO உள்ளது. பல OCO ஜோடிகள் தனியாகவும் பயன்படுத்தப்படுகின்றன.
என் கணினி அணைக்கப்பட்டால் bracket order செயல்படுமா?
இது பிணைப்பு எங்கே உள்ளது என்பதைப் பொறுத்தது. புரோக்கர் தளத்தில் உள்ள bracket, புரோக்கரின் சேவையகங்களில் இருப்பதால் கணினி அணைக்கப்பட்டாலும் செயல்படும். தளம் சார்ந்த அல்லது உருவகப்படுத்தப்பட்ட bracket-க்கு, அந்தத் தளம் இயங்கிக்கொண்டிருக்க வேண்டும்.
லாப இலக்கு பகுதியளவு நிறைவேறினால் நிறுத்தத்திற்கு என்னவாகும்?
நிறுத்தம் ரத்து செய்யப்படாமல், நிறைவேறிய அளவுக்குக் குறைக்கப்படுகிறது. 200 பங்குகளுக்கான இலக்கில் 60 பங்குகள் நிறைவேறினால், நிறுத்தம் 140 பங்குகளாகக் குறையும். நிலையின் கடைசிப் பங்கு விற்கப்படும்போதுதான் ரத்து கட்டளை செயல்படும்.
சந்தை நேரத்திற்கு வெளியேயும் (premarket/after-hours) bracket order-ஐப் பயன்படுத்தலாமா?
இது புரோக்கரைப் பொறுத்து மாறுபடும். பல புரோக்கர்கள் சந்தை நேரத்திற்குள் மட்டுமே bracket சந்ததிகளை அனுமதிப்பார்கள். குறிப்பாக stop orders பெரும்பாலும் காலை 9:30 முதல் மாலை 4:00 மணி வரை மட்டுமே அனுமதிக்கப்படும். ஒவ்வொரு காலுக்கும் உள்ள time-in-force அமைப்பே அது கூடுதல் நேரத்தில் செயல்படுமா என்பதைத் தீர்மானிக்கிறது.
எனது இரண்டு கட்டளைகளும் இணைக்கப்பட்டுள்ளன என்பது பங்குச் சந்தைக்குத் தெரியுமா?
இல்லை. அமெரிக்கப் பங்குகளில், ரத்து பிணைப்பு புரோக்கர் அல்லது தளத்தால் மட்டுமே பராமரிக்கப்படுகிறது. பங்குச் சந்தை இரண்டு தனித்தனி கட்டளைகளையே பெறுகிறது. ஒரு கால் நிறைவேறிய பிறகு, பிணைப்பை வைத்திருக்கும் அமைப்புதான் மற்றொன்றை ரத்து செய்யும் கட்டளையை அனுப்புகிறது.
இங்கே உள்ள ஒவ்வொரு அட்டவணையும் அதன் பின்னணியில் உள்ள SQL குறியீட்டுடன் வருகிறது. நீங்கள் பின்பற்றும் பங்கின் வரம்பு மற்றும் இடைவெளி அபாயத்தை அளவிட, Strasmore முனையத்தில் (terminal) சாதாரண ஆங்கிலத்தில் கேளுங்கள்.