रणनीतियाँ
BTC नकद-और-कैरी तिमाही आधार कन्वर्जेन्स, मार्केट-न्यूट्रल (BTCUSDT.BINANCE_SPOT लॉन्ग + निकटतम-समाप्ति BTC USD-M DATED QUARTERLY फ़्यूचर शॉर्ट, DETERMINISTICALLY-CONVERGENT कॉन्टैंगो आधार लेने के लिए सेटलमेंट तक होल्ड — NOT perp funding, समाप्ति पर रोल, 2-पैरामीटर)
परिणाम: परित्यक्त
BtcQuarterlyBasisConvergenceCarryNeutral
परिणाम सारांश
इस रणनीति ने फ़ैक्टरी की मृत perp-funding कैरी से सचमुच अलग बढ़त प्रस्तावित की थी—डेल्टा-न्यूट्रल BTC कैश-एंड-कैरी, जो दिनांकित तिमाही भविष्य-अनुबंधों के नियतात्मक रूप से अभिसरित होने वाले आधार-अंतर से लाभ लेती, सेटलमेंट तक रखी जाती और हर तिमाही केवल दो समायोज्य पैरामीटर के साथ रोल होती। इसका बैकटेस्ट कभी नहीं हुआ: 3 प्रयासों में रन विफल रहा, क्योंकि इंजन तिमाही लेग 'BTCUSDT_230929.BINANCE' के लिए funding इतिहास प्राप्त नहीं कर सका। उसने दिनांकित अनुबंध को perp मान लिया और सटीकता के लिए निष्पादन रोक दिया। बैकटेस्ट, बैकटेस्ट समीक्षा, अनुकूलन या विश्लेषक चरण तक पहुँचे बिना, रणनीति आर्थिक औचित्य के बजाय डेटा/बुनियादी ढाँचे की निर्भरता के कारण छोड़ दी गई। परिकल्पना में साफ़ चेतावनी थी कि तिमाही-अनुबंध डेटा की उपलब्धता निर्णायक निर्भरता है, और पाइपलाइन ठीक उसी जगह रुकी।
परिकल्पना
backtest_failed: RuntimeError: परपेचुअल लेग 'BTCUSDT_230929.BINANCE' के लिए Funding डेटा उपलब्ध नहीं — ऑन-डिमांड संग्रह विफल हुआ या वेन्यू में funding इतिहास नहीं है (सटीकता के लिए बैकटेस्ट अवरुद्ध; बायपास करने हेतु SF_DISABLE_ONDEMAND_FUNDING=1 सेट करें) Traceback (most recent call last): File "/opt/strategy-factory/src/agents/backtest_agent.py", line 190, in _run_backtest await self._ensure_funding_for_perp_legs(instrument_id, extra_instrs) File "/opt/strategy-factory/src/agents/backtest_agent.py", line 406, in _ensure_funding_for_perp_legs raise RuntimeError( RuntimeError: परपेचुअल लेग 'BTCUSDT_230929.BINANCE' के लिए Funding डेटा उपलब्ध नहीं — ऑन-डिमांड संग्रह विफल हुआ या वेन्यू में funding इतिहास नहीं है (सटीकता के लिए बैकटेस्ट अवरुद्ध; बायपास करने हेतु SF_DISABLE_ONDEMAND_FUNDING=1 सेट करें)
कार्यान्वयन
सत्यापन परिणाम
सत्यापन विफल (लेयर 3 — सैंडबॉक्स बैकटेस्ट): स्मोक टेस्ट में 300 सेकंड की वॉल-क्लॉक सीमा पार हो गई। इसका लगभग हमेशा अर्थ है कि प्रति-बार काम इतिहास के साथ बढ़ता है—जैसे हर बार फंडिंग/पूरक श्रृंखला को फिर से स्कैन करना, या हर बार calculate_signal()/on_bar() के भीतर सूची बनाकर min()/sorted() चलाना। __init__ में क्रमबद्ध टाइमस्टैम्प सरणियाँ ONCE पहले से तैयार करें और द्विभाजन खोज का उपयोग करें, या टाइमस्टैम्प के आधार पर लुकअप कैश करें, ताकि प्रति-बार लागत O(log n) हो, O(n) नहीं।
extra_instruments को FULL BTC तिमाही श्रृंखला (~2020 से 16-20 कॉन्ट्रैक्ट) तक बढ़ाएँ। सैंडबॉक्स सीमा में रहने के लिए मोटे 12H/1D तिमाही बार इस्तेमाल करें, ताकि metrics_reliable=true हो और वॉक-फ़ॉरवर्ड विंडो में हर एक में कई कन्वर्जेन्स हों। केवल कॉन्फ़िगरेशन विस्तार — रोल लॉजिक मनमानी लंबाई की श्रृंखलाएँ पहले से संभालता है।
अभिसरण की संख्या सीमांत है (8) और metrics_reliable=false — iter-1 में लक्षित लगभग 16-20 से कम। डेवलपर ने Layer-3 बजट के लिए श्रृंखला को 8 कॉन्ट्रैक्ट्स तक सीमित किया। विफल मैक्रो ट्रेंड-फ़ॉलोअर्स के UNLIKE, यह विन्यास में सुधार योग्य है, कोई अंतर्निहित सीमा नहीं: BTC के ऐतिहासिक दिनांकित तिमाही कॉन्ट्रैक्ट्स (लगभग 2020 तक) सूचीबद्ध करके अधिक अभिसरण आसानी से हासिल किए जा सकते हैं। अहम बात यह है कि n=8 पर भी एज को निदानात्मक समर्थन मिलता है: शार्प CI [1.14, 46.66] की निचली सीमा POSITIVE है (शून्य को शामिल नहीं करती) और वितरण संतुलित है (स्क्यू -0.56, कर्टोसिस 2.37)—यह उन ट्रेंड-फ़ॉलोअर्स से स्पष्ट भिन्न है जिनके CI में बहुत नकारात्मक मान शामिल थे। नियतात्मक-अभिसरण एज के कारण 8 लगभग स्वतंत्र घटनाएँ वास्तविक साक्ष्य हैं, महज़ संयोग नहीं।
मुख्य मूल्यांकन वॉक-फ़ॉरवर्ड कन्वर्जेन्स (विस्तारित श्रृंखला) पर करें, 15-दिन के होल्डआउट पर नहीं; यदि होल्डआउट गेट वैध तिमाही-होल्ड कैरी को रोकता है, तो ऑपरेटर को सूचित करें।
होराइज़न संबंधी सावधानी (मैक्रो रणनीतियों की तरह): ~90-दिन की होल्ड के कारण 15-दिन के होल्डआउट में लगभग 0 बंद कन्वर्जेन्स होंगे, इसलिए होल्डआउट गेट का मूल्यांकन करना संरचनात्मक रूप से कठिन है। ट्रेंड फ़ॉलोअर की तुलना में बाधा कम है, क्योंकि विस्तारित श्रृंखला में निदान के लिए पर्याप्त कन्वर्जेन्स और वॉक-फ़ॉरवर्ड विंडो हैं; फिर भी ऑपरेटर को ध्यान रखना चाहिए कि तिमाही-होल्ड कैरी के लिए होल्डआउट को होराइज़न के अनुसार संभालना होगा।
विस्तारित श्रृंखला के पूर्ण बैकटेस्ट में डेल्टा-न्यूट्रैलिटी और हर तिमाही के आधार-अंतर के योगदान की पुष्टि करें।
विश्लेषकों की दो विवेक-जाँचें (दोनों कोड दोष नहीं): (1) exposure_pct 227% — capital_frac 0.45/लेग पर डेल्टा-न्यूट्रल स्पॉट+शॉर्ट-फ़्यूचर जोड़ी के लिए अपेक्षित सकल लगभग 0.90x है; 227% संभवतः सकल-notional/मूल्यांकित-मार्क प्रभाव है (बीटा 0.0105, max_dd 3.24%, लगभग सममित largest_win/हानि से पुष्टि होती है कि पोर्टफ़ोलियो IS न्यूट्रल है), लेकिन विस्तारित श्रृंखला में आकार का विचलन न होने की पुष्टि करें। (2) avg_loss ($13,905) avg_win ($12,384) से win_rate 0.5625 पर थोड़ा अधिक है — शुद्ध लाभ है, लेकिन कुछ तिमाहियों में प्रतिकूल कन्वर्जेन्स होता है (बैकवर्डेशन/रोल से पहले आधार का बढ़ना); पुष्टि करें कि लाभ केवल एक या दो उच्च कॉन्टैंगो तिमाहियों से नहीं आया।
कोड में कोई समस्या नहीं — रोल सही है और मनमानी लंबाई की श्रृंखला पर दोबारा इस्तेमाल किया जा सकता है।
CREDIT (कोई दोष नहीं): ROLL मेरे iter-1 अनुरोध के अनुसार सही ढंग से लागू है — _candidate रनवे के साथ लाइव निकटतम-समाप्ति तिमाही चुनता है (3-दिन की पुरानापन _live जाँच + प्रति-कॉन्ट्रैक्ट _dte), सेटलमेंट से पहले roll_buffer_days तक होल्ड करता है, फिर अगली फ्रंट तिमाही में रोल करता है; समाप्ति प्रति कॉन्ट्रैक्ट निकाली जाती है, अनहेज्ड लेग से बचाव, डेल्टा-न्यूट्रल समान-notional लेग (लीनियर USDT-मार्जिन वाला), केवल स्पॉट BUY (CASH-सुरक्षित), पथ-स्वतंत्र आकार पर सीमा, प्रति-बार O(1) काम। 12-HOUR तिमाही टाइमफ़्रेम (1-DAY प्राथमिक से अलग) समाप्त/असूचीबद्ध कॉन्ट्रैक्ट के लिए समान-टाइमफ़्रेम संरेखण अवरोध से सही ढंग से बचता है। तंत्र सत्यापित: 8 साफ़ 90-दिन कन्वर्जेन्स, सालाना लगभग 4, शुल्क के बाद भी संभव (1.06% कमीशन)।
पुनरावृत्ति इतिहास
RuntimeError: परपेचुअल लेग 'BTCUSDT_230929.BINANCE' के लिए Funding डेटा उपलब्ध नहीं — ऑन-डिमांड संग्रह विफल हुआ या वेन्यू में funding इतिहास नहीं है (सटीकता के लिए बैकटेस्ट अवरुद्ध; बायपास करने हेतु SF_DISABLE_ONDEMAND_FUNDING=1 सेट करें) Traceback (most recent call last): File "/opt/strategy-factory/src/agents/backtest_agent.py", line 190, in _run_backtest await self._ensure_funding_for_perp_legs(instrument_id, extra_instrs) File "/opt/strategy-factory/src/agents/backtest_agent.py", line 406, in _ensure_funding_for_perp_legs raise RuntimeError( RuntimeError: परपेचुअल लेग 'BTCUSDT_230929.BINANCE' के लिए Funding डेटा उपलब्ध नहीं — ऑन-डिमांड संग्रह विफल हुआ या वेन्यू में funding इतिहास नहीं है (सटीकता के लिए बैकटेस्ट अवरुद्ध; बायपास करने हेतु SF_DISABLE_ONDEMAND_FUNDING=1 सेट करें)
परिणाम सारांश
परिकल्पना ने पुराने-तिमाही kline/डेटा उपलब्धता को तुरंत विफल होने वाली निर्भरता बताया था, और यह निर्णायक साबित हुआ: तिमाही-आधार कैरी का मूल्यांकन करने से पहले फ्यूचर्स लेग के लिए बैकटेस्ट हार्नेस की funding-डेटा आवश्यकता पूरी करनी होगी (या SF_DISABLE_ONDEMAND_FUNDING के ज़रिए बायपास करना होगा)।
इसे 3 पुनरावृत्तियों के बाद छोड़ दिया गया, जब बैकटेस्ट RuntimeError के साथ विफल हुआ: 'BTCUSDT_230929.BINANCE' लेग के लिए funding डेटा उपलब्ध नहीं था — इंजन ने दिनांकित तिमाही को funding इतिहास की आवश्यकता वाले perp की तरह माना, जिससे सटीकता के लिए बैकटेस्ट अवरुद्ध हुआ।
बाज़ार-तटस्थ BTC कैश-एंड-कैरी, जो BTCUSDT स्पॉट में लॉन्ग और निकटतम समाप्ति वाले दिनांकित USD-M तिमाही भविष्य-अनुबंध में शॉर्ट पोज़िशन लेती है। पतले perp funding के बजाय नियतात्मक रूप से अभिसरित होने वाले कंटैंगो आधार-अंतर (~5-15% वार्षिकीकृत) से लाभ लेने के लिए पोज़िशन सेटलमेंट तक रखी जाती है।
प्रदर्शन के कोई मेट्रिक्स मौजूद नहीं — बैकटेस्ट पूरा ही नहीं हुआ, इसलिए कोई रिटर्न, Sharpe या ट्रेड संख्या नहीं है; अनुकूलन चरण तक पहुँचा ही नहीं गया।
छोड़ने का कारण
backtest_failed: RuntimeError: परपेचुअल लेग 'BTCUSDT_230929.BINANCE' के लिए Funding डेटा उपलब्ध नहीं — ऑन-डिमांड संग्रह विफल हुआ या वेन्यू में funding इतिहास नहीं है (सटीकता के लिए बैकटेस्ट अवरुद्ध; बायपास करने हेतु SF_DISABLE_ONDEMAND_FUNDING=1 सेट करें) Traceback (most recent call last): File "/opt/strategy-factory/src/agents/backtest_agent.py", line 190, in _run_backtest await self._ensure_funding_for_perp_legs(instrument_id, extra_instrs) File "/opt/strategy-factory/src/agents/backtest_agent.py", line 406, in _ensure_funding_for_perp_legs raise RuntimeError( RuntimeError: परपेचुअल लेग 'BTCUSDT_230929.BINANCE' के लिए Funding डेटा उपलब्ध नहीं — ऑन-डिमांड संग्रह विफल हुआ या वेन्यू में funding इतिहास नहीं है (सटीकता के लिए बैकटेस्ट अवरुद्ध; बायपास करने हेतु SF_DISABLE_ONDEMAND_FUNDING=1 सेट करें)
Stratmill एक रिसर्च और पेपर-ट्रेडिंग टूल है, वित्तीय सलाह या ब्रोकर नहीं। बैकटेस्ट और पेपर परिणाम काल्पनिक हैं। ट्रेडिंग में नुकसान का जोखिम होता है।