ग्रिड ट्रेडिंग बॉट की ईमानदार समीक्षा
ग्रिड ट्रेडिंग बॉट निश्चित सीमा में हर कदम नीचे खरीदता और हर कदम ऊपर बेचता है। वह बाजार आकृति देखें जो तंत्र को लाभ देती है और वह जो इसे तोड़ती है।
एक ग्रिड ट्रेडिंग बॉट निश्चित मूल्य अंतरालों पर ऑर्डर की एक सीढ़ी रखता है: मौजूदा कीमत से नीचे प्रत्येक पायदान पर एक खरीद ऑर्डर, और उसके ऊपर प्रत्येक पायदान पर एक बिक्री ऑर्डर। जब भी बाजार नीचे आता है, बॉट खरीदता है। जब भी यह वापस ऊपर जाता है, बॉट वह बेचता है जो उसने नीचे खरीदा था। यह तंत्र उतार-चढ़ाव से लाभ कमाता है, और जब भी बाजार सीढ़ी से एक दिशा में दूर चला जाता है और चलता रहता है, तो यह एक खुली स्थिति जमा कर लेता है।
यह पृष्ठ तंत्र को अलग करता है, फिर दो बाजार आकृतियों को मापता है जो इसके परिणाम का फैसला करती हैं। नीचे दिया गया प्रत्येक पैनल वास्तविक अमेरिकी इक्विटी कीमतों पर एक संग्रहीत क्वेरी है, जो निश्चित तिथियों से जुड़ा हुआ है ताकि आंकड़े पुनरुत्पादनीय रहें।
ग्रिड ट्रेडिंग बॉट कैसे काम करता है
तीन सेटिंग्स एक ग्रिड को परिभाषित करती हैं: सीमा की ऊपरी और निचली सीमाएं, इसके अंदर रेखाओं की संख्या, और प्रत्येक रेखा पर ऑर्डर का आकार। रेखाओं के बीच का अंतर पहली दो सेटिंग्स से निकलता है।
यहाँ अंकगणित है, जो किसी वास्तविक कोटेशन के बजाय स्पष्टता के लिए चुनी गई गोल संख्याओं का उपयोग करता है। मान लीजिए कि एक स्टॉक $100 के आसपास कारोबार करता है और एक ऑपरेटर $95 से $105 तक का ग्रिड सेट करता है जिसमें ग्यारह रेखाएं एक डॉलर अलग और प्रति रेखा 100 शेयर हैं। कीमत $99 तक गिरती है और प्रतीक्षारत खरीद ऑर्डर भर जाता है। कीमत $100 पर वापस आती है और मेल खाने वाला बिक्री ऑर्डर भर जाता है, जोड़ी को सकल $100 के लिए बंद कर देता है। दोनों ऑर्डर फिर से सक्रिय हो जाते हैं। उस घंटे में कंपनी के बारे में कुछ भी नहीं बदला। स्थिति ने बस दो आसन्न पायदानों के बीच एक चक्कर पूरा किया।
सार्वजनिक रूप से प्रसारित होने वाली ओपन-सोर्स परियोजनाओं में दो प्रकार दिखाई देते हैं। एक अंकगणितीय ग्रिड रेखाओं को एक निश्चित डॉलर राशि से अलग करता है। एक ज्यामितीय ग्रिड उन्हें एक निश्चित प्रतिशत से अलग करता है, जो एक विस्तृत श्रृंखला में प्रति चक्कर प्रतिशत लाभ को स्थिर रखता है। दस्तावेज़ीकरण एक तटस्थ ग्रिड को भी अलग करता है, जो शून्य स्थिति से शुरू होता है और दोनों दिशाओं में काम करता है, एक लॉन्ग ग्रिड से, जो इन्वेंट्री रखना शुरू करता है और तेजी में बेचता है।
भुगतान आकार एक स्पष्ट वाक्य का हकदार है। एक पूर्ण चक्कर पर लाभ लागत घटाकर एक ग्रिड चरण तक सीमित होता है। जब कीमत सीमा छोड़ती है तो बनने वाली खुली स्थिति में कोई मेल खाने वाली सीमा नहीं होती है।
ग्रिड को जिस बाजार आकृति की आवश्यकता है
एक ग्रिड को दिशा से नहीं, बल्कि यात्रा से भुगतान मिलता है। दो स्टॉक बहुत अलग दूरी तय करने के बाद एक ही कीमत पर एक अवधि समाप्त कर सकते हैं। प्रत्येक दैनिक चाल के पूर्ण आकार को जोड़ने से तय की गई कुल दूरी मिलती है। शुद्ध चाल को उस दूरी से विभाजित करने से एक दक्षता अनुपात मिलता है, जो एक मानक माप है कि कोई पथ कितना दिशात्मक था। कम अनुपात एक ऐसे पथ का वर्णन करता है जो भटकता रहा। उच्च अनुपात एक सीधी चाल का वर्णन करता है।
हर आंकड़े के पीछे का पूरा SQL
WITH daily AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
argMax(toFloat64(close), toTimeZone(window_start, 'America/New_York')) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY','KO','PG','JNJ','VZ','MO','XOM','JPM','WMT','NVDA','TSLA','NFLX')
AND toDate(toTimeZone(window_start, 'America/New_York')) BETWEEN toDate('2024-01-02') AND toDate('2026-06-30')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY ticker, dt
),
steps AS (
SELECT ticker, dt, c,
c / lagInFrame(c) OVER (PARTITION BY ticker ORDER BY dt) - 1 AS ret
FROM daily
)
SELECT ticker,
round(sum(abs(ret)) * 100, 0) AS travel_pct,
round(abs(argMax(c, dt) / argMin(c, dt) - 1) * 100, 1) AS net_move_pct,
round(100 * abs(argMax(c, dt) / argMin(c, dt) - 1) / sum(abs(ret)), 1) AS efficiency_pct
FROM steps
WHERE ret > -0.5 AND ret < 0.5
GROUP BY ticker
ORDER BY efficiency_pctपहली और आखिरी पंक्तियों को एक साथ पढ़ें। PG ने संचयी दैनिक चाल के 527% को कवर किया और जहां से शुरू हुआ था वहां से 0.9% पर समाप्त हुआ, 0.2% की दक्षता। SPY 14.3% पर विपरीत छोर पर बैठता है, 415% यात्रा को 59.2% शुद्ध चाल में बदल देता है। पहले पथ पर रखी गई एक ग्रिड सीढ़ी बार-बार अपने स्वयं के पायदानों से मिलती है। दूसरे पथ पर रखी गई वही सीढ़ी पीछे छूट जाती है।
शांत और सीमाबद्ध संबंधित लेकिन अलग गुण हैं। एक स्टॉक बहुत छोटे दैनिक वेतन वृद्धि में ऊपर की ओर बढ़ सकता है और फिर भी एक ग्रिड को फंसा सकता है, यह एक कारण है कि कम अस्थिरता विसंगति साहित्य में अध्ययन किए गए नाम स्वचालित रूप से ग्रिड सामग्री नहीं हैं।
चक्करों की गिनती
दक्षता एक लेंस है। ग्रिड आय कुछ अधिक ठोस पर निर्भर करती है: कीमत वास्तव में कितनी बार किसी स्तर पर पुनर्विचार करती है। प्रत्येक कैलेंडर वर्ष के पहले बंद पर एंकरिंग और उन सत्रों की गिनती करना जिनका बंद उस एंकर के विपरीत दिशा में समाप्त होता है, एकल ग्रिड लाइन द्वारा पकड़े गए क्रॉसिंग की संख्या देता है। कोका-कोला (KO) यहाँ विषय है, एक बड़ा, तरल उपभोक्ता नाम जिसे ग्रिड दस्तावेज़ीकरण में प्रदर्शित किया जाता है।
हर आंकड़े के पीछे का पूरा SQL
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
argMax(toFloat64(close), toTimeZone(window_start, 'America/New_York')) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'KO'
AND toDate(toTimeZone(window_start, 'America/New_York')) BETWEEN toDate('2019-01-01') AND toDate('2025-12-31')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY dt
),
anchored AS (
SELECT toYear(dt) AS year, dt, c,
first_value(c) OVER (PARTITION BY toYear(dt) ORDER BY dt) AS anchor
FROM daily
),
sided AS (
SELECT year, dt, c, anchor,
if(c >= anchor, 1, 0) AS side,
row_number() OVER (PARTITION BY year ORDER BY dt) AS rn,
lagInFrame(if(c >= anchor, 1, 0)) OVER (PARTITION BY year ORDER BY dt) AS prev_side
FROM anchored
)
SELECT year,
countIf(rn > 1 AND side != prev_side) AS crossing_count,
count() AS sessions,
round((argMax(c, dt) / any(anchor) - 1) * 100, 1) AS net_change_pct
FROM sided
GROUP BY year
ORDER BY year2019 में बंद ने 252 सत्रों में अपने स्वयं के शुरुआती स्तर को 8 बार पार किया, वर्ष को उस स्तर से 17.9% पर समाप्त किया। 2025 में गिनती 250 सत्रों में 6 थी, जिसमें 13% का शुद्ध परिवर्तन था। एक पंक्ति, एक स्टॉक, और ग्रिड के लिए कच्चा माल साल-दर-साल कई गुना भिन्न होता है, जिसमें आने वाले वर्ष की गिनती पहले से जानने का कोई तरीका नहीं है।
यह परिवर्तनशीलता मूक समस्या है। ग्रिड का विज्ञापित रिटर्न आमतौर पर प्रति पूर्ण चक्कर उद्धृत किया जाता है, और चक्करों की संख्या सेटिंग्स के बजाय बाजार द्वारा निर्धारित की जाती है।
ग्रिड कहाँ टूटता है
विफलता मोड का एक विशिष्ट आकार होता है। एक ग्रिड को एक सीमा पर ठीक करें, फिर बाजार को इसे छोड़ने दें। नीचे, छत और फर्श 2024 के पहले बीस सत्रों के उच्चतम और निम्नतम बंद हैं, जो अगले तीस महीनों में सपाट रखे गए हैं, जिसमें S&P 500 ट्रैकर का मासिक बंद उनके विरुद्ध खींचा गया है।
हर आंकड़े के पीछे का पूरा SQL
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
argMax(toFloat64(close), toTimeZone(window_start, 'America/New_York')) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND toDate(toTimeZone(window_start, 'America/New_York')) BETWEEN toDate('2024-01-02') AND toDate('2026-06-30')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY dt
),
opening_20 AS (
SELECT c FROM daily ORDER BY dt LIMIT 20
),
band AS (
SELECT min(c) AS grid_low, max(c) AS grid_high FROM opening_20
),
monthly AS (
SELECT toStartOfMonth(dt) AS month_start, argMax(c, dt) AS close_px
FROM daily
GROUP BY month_start
)
SELECT formatDateTime(monthly.month_start, '%Y-%m') AS month,
round(monthly.close_px, 2) AS spy_close,
round(band.grid_high, 2) AS grid_top,
round(band.grid_low, 2) AS grid_bottom
FROM monthly, band
ORDER BY monthly.month_startबैंड $467.27 से $491.26 तक चलता है। श्रृंखला का पहला महीना $482.92 पर बंद हुआ, इसके अंदर। 30 महीनों में से अंतिम $746.32 पर बंद हुआ, छत से बहुत ऊपर, और चार्ट रेखा को बैंड छोड़कर कभी वापस नहीं आते हुए दिखाता है।
उस पथ के साथ सीढ़ी क्या करती है, इस पर चलें। सीमा के माध्यम से बढ़ते हुए, बॉट इन्वेंट्री को पायदान दर पायदान बेचता है, हर बार एक कदम का लाभ बैंक करता है। छत के ऊपर यह नकदी रखता है और देखता है। अग्रिम का हर आगे का बिंदु एक लाभ है जिसमें ऑपरेटर अब भाग नहीं लेता है, जो विफलता का हल्का संस्करण है।
गंभीर संस्करण दर्पण छवि है। कीमत फर्श के माध्यम से गिरती है और बॉट ने नीचे आते हुए हर पायदान पर खरीदा है, इसलिए अब इसके पास बाजार से ऊपर की औसत लागत पर सीढ़ी की पूरी इन्वेंट्री है, प्रत्येक अतिरिक्त कदम अवास्तविक नुकसान को चौड़ा करता है। एक सीमा जो कभी स्थिर, छोटे, स्पष्ट रूप से सफल ट्रेडों का उत्पादन करती थी, एक एकल केंद्रित स्थिति में बदल जाती है। ग्रिड मार्केटिंग इसे बॉट के "फंसने" के रूप में वर्णित करती है; ब्रोकरेज स्टेटमेंट पर यह बिना किसी अंतर्निहित निकास के एक खुली ड्रॉडाउन है।
लागत ट्रेडों की संख्या के साथ बढ़ती है
एक ग्रिड कई छोटे ट्रेडों को पूरा करता है, और प्रत्येक एक चक्कर की पूरी लागत का भुगतान करता है: स्प्रेड, साथ ही कमीशन या एक्सचेंज शुल्क जहां वे लागू होते हैं। बिड-आस्क स्प्रेड वह हिस्सा है जिसे अक्सर ग्रिड गणित से बाहर रखा जाता है, क्योंकि यह कभी भी एक लाइन आइटम के रूप में स्टेटमेंट पर दिखाई नहीं देता है।
उदाहरणात्मक अंकगणित त्वरित है। एक-प्रतिशत स्प्रेड वाले $100 स्टॉक पर, एक चक्कर जो दोनों तरफ स्प्रेड को पार करता है, लगभग दो सेंट, या नॉटियोनल का 0.02% देता है। एक-डॉलर के ग्रिड चरण के मुकाबले, यह प्रति यात्रा सकल लाभ का लगभग 2% है। स्प्रेड को पांच सेंट तक चौड़ा करें, जो एक पतले नाम पर एक नियमित आंकड़ा है, और वही यात्रा सकल के एक डॉलर के मुकाबले दस सेंट, या 10% देती है। अधिक दोलन पकड़ने के लिए ग्रिड को दस-सेंट चरणों तक कसने से प्रति यात्रा सकल दस सेंट तक कम हो जाता है जबकि लागत अपरिवर्तित रहती है, और पांच-सेंट स्प्रेड अब पूरे व्यापार का उपभोग करता है।
यह संबंध उपयोगी ग्रिड स्पेसिंग के तहत एक मंजिल निर्धारित करता है: चरणों को राउंड-ट्रिप लागतों के सापेक्ष बड़ा रहना चाहिए, और ग्रिड जितना तंग होगा, उसकी आय का उतना ही अधिक हिस्सा ऑपरेटर के बजाय वेन्यू का होगा।
बैकटेस्ट ग्रिड बॉट्स को क्यों चापलूसी करते हैं
ग्रिड रणनीतियाँ असामान्य रूप से आकर्षक बैकटेस्ट उत्पन्न करती हैं, और चार संरचनात्मक कारण इसके अधिकांश की व्याख्या करते हैं।
- पूर्वज्ञान के साथ सीमा चयन। डेटा देखने के बाद चुनी गई सीमाएं डेटा को समाहित करेंगी। एक अवधि में फिट किया गया ग्रिड जो सीमाबद्ध था, उस अवधि पर एक उच्च हिट दर दिखाएगा।
- अबंद सीढ़ी। एक चुनी हुई समाप्ति तिथि पर रुकने वाला परीक्षण अक्सर वास्तविक चक्करों की गणना करता है जबकि शेष इन्वेंट्री के साथ उदारतापूर्वक व्यवहार करता है। ईमानदार लेखांकन अंतिम दिन खुली स्थिति को बाजार मूल्य पर चिह्नित करता है और उस नुकसान को परिणाम में शामिल करता है।
- भरण धारणाएं। सिम्युलेटेड प्रतीक्षारत ऑर्डर जब भी कीमत उन्हें छूती है, भर जाते हैं। वास्तविक कतारें हमेशा छूने पर नहीं भरती हैं, और जो यात्राएं भरने में विफल होती हैं, वे तेज बाजारों में असम्मानजनक रूप से लाभदायक होती हैं।
- पैरामीटर घनत्व। सीमाएं, रेखा गणना, स्पेसिंग और ऑर्डर आकार एक मूल्य श्रृंखला पर चार डायल देते हैं, जो लगभग किसी भी ऐतिहासिक विंडो को फिट करने के लिए पर्याप्त है।
उपरोक्त क्रॉसिंग गणनाएं चारों के लिए प्रतिसंतुलन हैं। वे बिना किसी सेटिंग के केवल मूल्य इतिहास से आते हैं, और वे साल-दर-साल इस तरह बदलते हैं जिसे कोई पैरामीटर विकल्प नियंत्रित नहीं करता है। ग्रिड दावे का मूल्यांकन करने वाला कोई भी व्यक्ति इससे एक प्रश्न पूछ सकता है: यह कितने पूर्ण चक्करों पर निर्भर करता है, और वह गिनती कहाँ से आई? एक सिम्युलेटर पर अभ्यास की अवधि, अंत में खुली सीढ़ी को बाजार मूल्य पर चिह्नित करने के साथ, वास्तविक चक्करों के चार्ट की तुलना में इसका अधिक ईमानदारी से उत्तर देती है।
सामान्य प्रश्न
क्या ग्रिड ट्रेडिंग बॉट वास्तव में पैसा कमाते हैं?
एक ग्रिड प्रत्येक पूर्ण चक्कर पर एक सीमित लाभ कमाता है और जब कीमत अपनी सीमा छोड़ती है तो एक असीमित खुली स्थिति रखता है। क्या किसी भी अवधि में वास्तविक चक्कर खुली स्थिति से अधिक हैं, यह इस बात पर निर्भर करता है कि बाजार उस सीमा के अंदर कितना दोलन करता है, जो सॉफ्टवेयर के बजाय बाजार की एक संपत्ति है।
कौन सी बाजार स्थितियां ग्रिड बॉट के लिए उपयुक्त हैं?
तंत्र एक ऐसी कीमत के लिए बनाया गया है जो बार-बार समान स्तरों पर पुनर्विचार करती है: शुद्ध गति के सापेक्ष उच्च कुल तय की गई दूरी। ऊपर बारह-नाम वाले पैनल में, दक्षता अनुपात भटकने वाले छोर पर 0.2% से दिशात्मक छोर पर 14.3% तक थे, और सीढ़ी तंत्र केवल पहले छोर पर अपने स्वयं के पायदानों से मिलता है।
जब कीमत ग्रिड सीमा से बाहर निकलती है तो क्या होता है?
सीमा से ऊपर बॉट ने अपनी इन्वेंट्री बेच दी है और बाजार के इसके बिना जारी रहने पर नकदी में बैठता है। सीमा से नीचे यह नीचे आते हुए खरीदे गए हर पायदान को रखता है, मौजूदा कीमत से ऊपर की औसत लागत पर, और प्रत्येक और गिरावट उस अवास्तविक नुकसान को चौड़ा करती है।
ग्रिड ट्रेडिंग डॉलर-कॉस्ट एवरेजिंग से कैसे अलग है?
दोनों कीमत गिरने पर अधिक खरीदते हैं, और वहाँ समानता समाप्त हो जाती है। डॉलर-कॉस्ट एवरेजिंग बिना किसी निकास नियम और बिना किसी ऊपरी सीमा के एक निश्चित कार्यक्रम पर एक निश्चित राशि जोड़ता है। एक ग्रिड पहले से चुनी गई सीमा के अंदर मूल्य ट्रिगर पर खरीदता और बेचता है, और कीमत के उस सीमा को छोड़ने के बाद इसका व्यवहार पूरी तरह से बदल जाता है।
क्या तंग ग्रिड स्पेसिंग अधिक आय उत्पन्न करती है?
तंग स्पेसिंग चक्करों की संख्या बढ़ाती है और प्रत्येक पर सकल लाभ कम करती है, जबकि चक्कर की लागत समान रहती है। स्प्रेड द्वारा निर्धारित एक बिंदु के बाद, जोड़े गए चक्कर कुल में जोड़ने के बजाय उसमें से घटाते हैं।
ऊपर दिया गया प्रत्येक आंकड़ा वास्तविक इक्विटी कीमतों पर एक संग्रहीत, संस्करणित क्वेरी से आता है; किसी भी पैनल के नीचे SQL खोलकर इसे जांचें, या Strasmore टर्मिनल पर अपने स्वयं के नामों की सूची पर यात्रा बनाम शुद्ध गति को मापें।