[TOC]

हाल ही में मुझे ज़ीहू पर एक पोस्ट मिली जिसका शीर्षक बहुत ही आकर्षक था: “क्रिप्टोक्री दुनिया में जल्दी अमीर बनने का एक स्थिर तरीका: तीन महीनों में 3000U से 12000U”।
मुझे हंसी आ गई। स्थिर? झटपट अमीर बनना? इन दोनों शब्दों को एक साथ रखने का आमतौर पर मतलब दो ही होता है: या तो यह एक घोटाला है, या आप ऐसे व्यक्ति हैं जिसने अभी तक किसी अप्रत्याशित घटना का सामना नहीं किया है।
हालांकि, एक क्वांटिटेटिव ट्रेडिंग डेवलपर होने के नाते, जब मैंने इस रणनीति का विवरण देखा तो मैं इस पर क्लिक करने से खुद को रोक नहीं पाया।

इसे पढ़ने के बाद मैं गहन चिंतन में डूब गया…
ऐसा लगता है, शायद, संभवतः, हो सकता है, आशा है, इच्छा है, शायद कुछ हद तक समझ में आता है?
तो चलिए, बिना देर किए इन्वेंटर्स क्वांटिफिकेशन प्लेटफॉर्म खोलें और शुरू करें!
सबसे सरल तर्क:
// 伪代码
if (btcChange > 2%) {
开多 1手 BTC
开空 1手 ETH
}
कोड लिखने के बाद, मैंने आत्मविश्वास से बैकटेस्ट पर क्लिक किया, और फिर…

हमें लगातार नुकसान हो रहा है।
शेयर बाजार की कीमत में भारी गिरावट को देखकर मैं गहरे आत्मसंदेह में डूब गया।
शांत मन से सोचने पर समस्या स्पष्ट हो जाती है:
1 लॉट बीटीसी ≠ 1 लॉट ईटीएच
वर्तमान में BTC की कीमत 100,000 डॉलर प्रति यूनिट है, जबकि ETH की कीमत लगभग 3,000 डॉलर ही है। यदि आप 1:1 अनुपात का उपयोग करके हेजिंग करते हैं, तो यह हेजिंग नहीं है, बल्कि पैसा लुटाना है।
एक उचित हेजिंग रणनीति में निम्नलिखित बातों पर विचार करना आवश्यक है:
यह कोड रणनीति का मुख्य गणना इंजन है, जो BTC के सापेक्ष ETH के बीटा गुणांक की गणना को पूरी तरह से कार्यान्वित करता है। यहां बीटा गुणांक दो महत्वपूर्ण जानकारियों को दर्शाता है: अंतर्निहित मूल्य अनुपात और अस्थिरता सहसंबंध, जो सीधे तौर पर हेजिंग के लिए आवश्यक अनुपात को निर्धारित करता है।
// 计算ETH相对BTC的Beta系数
function calculateBeta(btcRecords, ethRecords, lookback) {
// 数据不足时的降级处理
if (btcRecords.length < lookback + 1 || ethRecords.length < lookback + 1) {
Log("⚠️ K线数据不足,使用当前价格比作为默认Beta")
let btcPrice = btcRecords[btcRecords.length - 1].Close
let ethPrice = ethRecords[ethRecords.length - 1].Close
let defaultBeta = btcPrice / ethPrice
betaInfo.currentBeta = defaultBeta
betaInfo.correlation = 0
betaInfo.priceRatio = defaultBeta
betaInfo.returnBeta = 1.0
betaInfo.lastUpdate = new Date().toLocaleString()
Log(" 默认Beta =", _N(defaultBeta, 2), "| 价格比:", _N(btcPrice, 0), "/", _N(ethPrice, 0))
return defaultBeta
}
let btcReturns = []
let ethReturns = []
let priceRatios = []
// 第一步:计算日收益率 + 历史价格比
for (let i = btcRecords.length - lookback; i < btcRecords.length; i++) {
// 日收益率 = (今日收盘 - 昨日收盘) / 昨日收盘
let btcRet = (btcRecords[i].Close - btcRecords[i-1].Close) / btcRecords[i-1].Close
let ethRet = (ethRecords[i].Close - ethRecords[i-1].Close) / ethRecords[i-1].Close
btcReturns.push(btcRet)
ethReturns.push(ethRet)
// 记录每天的价格比
let ratio = btcRecords[i].Close / ethRecords[i].Close
priceRatios.push(ratio)
}
// 第二步:计算历史平均价格比
let avgPriceRatio = priceRatios.reduce((a, b) => a + b, 0) / priceRatios.length
// 第三步:计算价格比的波动性
let priceRatioVariance = 0
for (let i = 0; i < priceRatios.length; i++) {
let diff = priceRatios[i] - avgPriceRatio
priceRatioVariance += diff * diff
}
priceRatioVariance /= (priceRatios.length - 1)
let priceRatioStd = Math.sqrt(priceRatioVariance)
let priceRatioCv = priceRatioStd / avgPriceRatio // 变异系数
// 第四步:计算收益率的均值
let btcMean = btcReturns.reduce((a,b) => a+b, 0) / btcReturns.length
let ethMean = ethReturns.reduce((a,b) => a+b, 0) / ethReturns.length
// 第五步:计算协方差和方差
let covariance = 0
let btcVariance = 0
let ethVariance = 0
for (let i = 0; i < btcReturns.length; i++) {
let btcDiff = btcReturns[i] - btcMean
let ethDiff = ethReturns[i] - ethMean
covariance += btcDiff * ethDiff
btcVariance += btcDiff * btcDiff
ethVariance += ethDiff * ethDiff
}
covariance /= (btcReturns.length - 1)
btcVariance /= (btcReturns.length - 1)
ethVariance /= (ethReturns.length - 1)
// 第六步:计算收益率Beta
// Beta = Cov(ETH, BTC) / Var(BTC)
let returnBeta = covariance / btcVariance
// 第七步:计算相关系数
// 相关系数 = Cov(ETH, BTC) / (Std(BTC) × Std(ETH))
let correlation = covariance / Math.sqrt(btcVariance * ethVariance)
// 第八步:最终Beta = 历史平均价格比 × 收益率Beta
let finalBeta = avgPriceRatio * returnBeta
// 第九步:限制Beta范围,避免极端值
let minBeta = avgPriceRatio * 0.5
let maxBeta = avgPriceRatio * 2.0
finalBeta = Math.max(minBeta, Math.min(maxBeta, finalBeta))
// 第十步:获取当前价格比
let currentBtcPrice = btcRecords[btcRecords.length - 1].Close
let currentEthPrice = ethRecords[ethRecords.length - 1].Close
let currentPriceRatio = currentBtcPrice / currentEthPrice
// 更新Beta信息到全局
betaInfo.currentBeta = finalBeta
betaInfo.correlation = correlation
betaInfo.returnBeta = returnBeta
betaInfo.avgPriceRatio = avgPriceRatio
betaInfo.currentPriceRatio = currentPriceRatio
betaInfo.priceRatioStd = priceRatioStd
betaInfo.priceRatioCv = priceRatioCv
betaInfo.lastUpdate = new Date().toLocaleString()
return finalBeta
}
मुख्य कार्य और तर्क:
Cov(ETH,BTC) / Var(BTC)यह दर्शाता है कि ETH का रिटर्न BTC के रिटर्न में होने वाले परिवर्तनों के प्रति कितना संवेदनशील है।बीटा संस्करण जारी होने के बाद, सिद्धांत और वास्तविकता के बीच के अंतर को पाटना आवश्यक हो गया, जिसके तहत सैद्धांतिक गुणांकों को एक्सचेंज पर वास्तविक व्यापार योग्य मात्राओं में परिवर्तित किया गया। कोड के इस भाग ने इस महत्वपूर्ण रूपांतरण को पूरा किया।
// 计算对冲张数
function calculateHedgeAmount(beta) {
let btcCoinAmount = config.btcCoinAmount // 0.1 BTC
let ethCoinAmount = btcCoinAmount * beta // ETH数量 = 0.1 × Beta
// 转换成合约张数
let btcContracts = Math.floor(btcCoinAmount / contractInfo.btcCtVal)
btcContracts = Math.max(1, btcContracts) // 至少1张
let ethContracts = Math.floor(ethCoinAmount / contractInfo.ethCtVal)
ethContracts = Math.max(1, ethContracts)
// 实际开仓的币数
let actualBtcCoins = btcContracts * contractInfo.btcCtVal
let actualEthCoins = ethContracts * contractInfo.ethCtVal
Log("🎯 对冲计算 | Beta:", _N(beta, 3),
"\n BTC: ", _N(actualBtcCoins, 4), "币 =", btcContracts, "张 (CtVal:", contractInfo.btcCtVal, ")",
"\n ETH: ", _N(actualEthCoins, 4), "币 =", ethContracts, "张 (CtVal:", contractInfo.ethCtVal, ")",
"\n 实际比例:", _N(actualEthCoins / actualBtcCoins, 3))
return {
btc: btcContracts,
eth: ethContracts,
btcCoins: actualBtcCoins,
ethCoins: actualEthCoins,
beta: beta
}
}
रूपांतरण के मुख्य चरण:
इस अनुभाग में रणनीति क्रियान्वयन और जोखिम नियंत्रण, सुनियोजित हेजिंग योजना को वास्तविक ट्रेडिंग संचालन में बदलना और जोखिम प्रबंधन को शामिल किया गया है। यहाँ लॉन्ग पोजीशन के उदाहरण से प्रवेश प्रक्रिया समझाई गई है; शॉर्ट पोजीशन को भी इसी तरह समझा जा सकता है।
ट्रिगर स्थिति डिजाइनयह प्रणाली दोहरी शर्त का उपयोग करती है: बीटीसी की कीमत में 2% से अधिक की वृद्धि और बीटीसी की कीमत में ईटीएच की कीमत में वृद्धि से अधिक की वृद्धि। इससे बाजार में पर्याप्त अस्थिरता सुनिश्चित होती है और अपेक्षित सापेक्षिक मजबूती का संबंध सही साबित होता है।
// BTC涨 > 2% 且涨幅大于ETH → 开多BTC + 开空ETH
if (btcChange > 0.02 && btcChange > ethChange) {
let amounts = calculateHedgeAmount(beta)
// 先开BTC多单
let btcOrder = createMarketOrder(config.btcSymbol, "buy", amounts.btc)
if (!btcOrder) {
Log("❌ BTC开多失败")
return null
}
// 再开ETH空单
let ethOrder = createMarketOrder(config.ethSymbol, "sell", amounts.eth)
if (!ethOrder) {
Log("❌ ETH开空失败,回滚BTC")
createMarketOrder(config.btcSymbol, "closebuy", amounts.btc)
return null
}
Log("🟢 开仓完成 | Beta:", _N(beta, 3))
}
परमाणु लेनदेन निष्पादनप्रक्रिया क्रमबद्ध है और इसमें रोलबैक तंत्र शामिल है। सबसे पहले, बीटीसी में लॉन्ग पोजीशन खोलें; यदि सफल हो, तो ईटीएच में शॉर्ट पोजीशन खोलें। यदि ईटीएच ऑर्डर विफल हो जाता है, तो पोजीशन की अखंडता सुनिश्चित करने और एकतरफा जोखिम से बचने के लिए बीटीसी में मौजूदा लॉन्ग पोजीशन को तुरंत बंद कर दें।
समापन तर्क का प्रदर्शन निम्नलिखित है:
मुद्रा के आधार पर लाभ और हानि की गणना की जाती है।दोनों पोजीशनों के कुल लाभ और हानि की गणना खोले गए सिक्कों की संख्या के आधार पर की जाती है, और समग्र हेजिंग प्रभाव निर्धारित किया जाता है।
जोखिम नियंत्रण सीमा निर्धारणपोर्टफोलियो के समग्र प्रदर्शन का मूल्यांकन किया जाता है, और सकारात्मक अपेक्षित मूल्य प्राप्त करने के लिए असममित लाभ-ग्रहण (+3%) और स्टॉप-लॉस (-1%) लाइनें निर्धारित की जाती हैं।
// 按币数计算盈亏
function checkClose(pos, btcTicker, ethTicker) {
let btcPnlUsd, ethPnlUsd
if (pos.type === 'long_btc_short_eth') {
// BTC多单盈亏 = (当前价 - 开仓价) × 币数
btcPnlUsd = (btcTicker.Last - pos.btcPrice) * pos.btcCoinAmount
// ETH空单盈亏 = (开仓价 - 当前价) × 币数
ethPnlUsd = (pos.ethPrice - ethTicker.Last) * pos.ethCoinAmount
} else {
btcPnlUsd = (pos.btcPrice - btcTicker.Last) * pos.btcCoinAmount
ethPnlUsd = (ethTicker.Last - pos.ethPrice) * pos.ethCoinAmount
}
let totalPnlUsd = btcPnlUsd + ethPnlUsd
let totalCost = pos.btcPrice * pos.btcCoinAmount + pos.ethPrice * pos.ethCoinAmount
let totalPnlPct = totalPnlUsd / totalCost
// 止盈: +3%
if (totalPnlPct >= 0.03) {
return {close: true, reason: '✅止盈', pnl: totalPnlPct, pnlUsd: totalPnlUsd}
}
// 止损: -1%
if (totalPnlPct <= -0.01) {
return {close: true, reason: '🛑止损', pnl: totalPnlPct, pnlUsd: totalPnlUsd}
}
return {close: false, pnl: totalPnlPct, pnlUsd: totalPnlUsd}
}
परीक्षण को दोबारा किया गया, और परिणाम ये थे…

आखिरकार ग्राफ ऊपर की ओर जा रहा है!
अक्टूबर 2025 से जनवरी 2026 तक, लगभग 3 महीने:
संपूर्ण बैकटेस्टिंग के बाद, इस रणनीति को मान्य पाया गया:
यही मात्रात्मक व्यापार का आकर्षण है:
एक विचार से शुरुआत करें → उसे लागू करने के लिए कोड लिखें → सत्यापन के लिए बैकटेस्ट करें → अनुकूलन और सुधार करें
झीहू की उस पोस्ट में बताई गई रणनीति सही थी, लेकिन असली समस्या बारीकियों में छिपी है:
सही मायने में मात्रात्मक व्यापार में प्रत्येक विचार को डेटा के साथ मान्य करना, प्रत्येक रणनीति को कोड के साथ लागू करना और प्रत्येक व्यापार को रिकॉर्ड करना शामिल है।
अगर आपके मन में कोई विचार है, तो आपको उसे सत्यापित करना चाहिए।
कोड लेख के अंत में दिया गया है। आप इसे बेझिझक चला सकते हैं, संशोधित कर सकते हैं और स्वयं अनुकूलित कर सकते हैं।
यदि आप रुचि रखते हैं, तो मैं बाद में लिखना जारी रख सकता हूँ:
लाइक, कमेंट करने और अधिक अपडेट की मांग करने में संकोच न करें!
📝लेख का स्रोत कोड (स्रोत कोड के प्रारंभ में पैरामीटर अनुभाग में रणनीति मापदंडों को लचीले ढंग से सेट किया जा सकता है; ट्रेडिंग लॉजिक को अनुकूलित किया गया है)।:दो-तरफ़ा बीटा हेजिंग रणनीति
यह लेख केवल सीखने और जानकारी साझा करने के उद्देश्य से है और इसे किसी भी प्रकार की निवेश सलाह नहीं माना जाना चाहिए।
नोट: क्रिप्टो जगत में रातोंरात अमीर बनने का कोई निश्चित तरीका नहीं है; केवल जोखिम प्रबंधन और निरंतर अनुकूलन ही इसका समाधान है।