[TOC]

Recientemente me encontré con una publicación en Zhihu con un título muy tentador: “Una forma estable de hacerse rico rápidamente en criptomonedas: 3000U a 12000U en tres meses”.
Me reí. ¿Estable? ¿Hacerse rico rápidamente? Juntar estas dos palabras suele significar una de dos cosas: o es una estafa, o eres alguien que aún no ha tenido un evento de cisne negro.
Sin embargo, como desarrollador de trading cuantitativo, no pude resistirme a hacer clic para echar un vistazo cuando vi la descripción de esta estrategia.

Después de leerlo, caí en un profundo pensamiento…
¿Parece que tal vez, posiblemente, tal vez, espero, deseo, tal vez tenga algún sentido?
Sin más preámbulos, ¡abramos la Plataforma de Cuantificación de Inventores y comencemos!
La lógica más simple:
// 伪代码
if (btcChange > 2%) {
开多 1手 BTC
开空 1手 ETH
}
Después de terminar de escribir el código, hice clic con confianza en el backtest y luego…

Estamos perdiendo dinero a manos llenas.
Al observar cómo la curva de valores se desplomaba, caí en una profunda duda sobre mí mismo.
Pensándolo con calma, el problema es obvio:
1 lote de BTC ≠ 1 lote de ETH
Actualmente, BTC vale \(100,000 cada uno, mientras que ETH solo ronda los \)3,000. Si usas una proporción de 1:1 para cubrirte, eso no es cubrirte, es regalar dinero.
Una estrategia de cobertura adecuada debe considerar:
Este código es el motor de cálculo principal de la estrategia, que implementa completamente el cálculo del coeficiente Beta de ETH en relación con BTC. El coeficiente Beta representa dos datos clave: la relación del precio subyacente y la correlación de la volatilidad, que determina directamente la proporción que debe cubrirse.
// 计算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
}
Funciones principales y lógica:
Cov(ETH,BTC) / Var(BTC)Esto indica la sensibilidad de los retornos de ETH a los cambios en los retornos de BTC.Tras el lanzamiento de la versión Beta, era necesario superar la brecha entre la teoría y la realidad, convirtiendo los coeficientes teóricos en cantidades reales negociables en la bolsa. Esta parte del código logró esta conversión crucial.
// 计算对冲张数
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
}
}
Pasos de conversión de claves:
Esta sección abarca la ejecución de la estrategia y el control de riesgos, la conversión del plan de cobertura calculado en operaciones de trading reales y la gestión del riesgo. La lógica de entrada se ilustra aquí, utilizando una posición larga como ejemplo; una posición corta puede entenderse de la misma manera.
Diseño de condiciones de activaciónEl sistema emplea una doble condición: aumento del precio de BTC > 2% y aumento del precio de BTC > aumento del precio de ETH. Esto garantiza una volatilidad suficiente en el mercado y que se cumpla la relación de fuerza relativa esperada.
// 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))
}
Ejecución de transacciones atómicasLa ejecución es secuencial e incluye un mecanismo de reversión. Primero, abra una posición larga en BTC; si tiene éxito, abra una posición corta en ETH. Si la orden de ETH falla, cierre inmediatamente la posición larga existente en BTC para garantizar la integridad de la posición y evitar la exposición a riesgos unilaterales.
Lo siguiente es una demostración de la lógica de cierre:
Ganancias y pérdidas calculadas por monedaLa ganancia y pérdida total de las dos posiciones se calcula en función de la cantidad de monedas abiertas y se determina el efecto de cobertura general.
Configuración de umbrales de control de riesgosSe evalúa el desempeño general de la cartera y se establecen líneas de toma de ganancias asimétricas (+3%) y de stop-loss (-1%) para perseguir un valor esperado positivo.
// 按币数计算盈亏
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}
}
Se realizó nuevamente la prueba y los resultados fueron…

¡La curva finalmente está subiendo!
Desde octubre de 2025 hasta enero de 2026, aproximadamente 3 meses:
Después de realizar pruebas retrospectivas completas, se validó esta estrategia:
Éste es el atractivo del trading cuantitativo:
Comience con una idea → Escriba el código para implementarla → Realice pruebas retrospectivas para verificar → Optimice y mejore
La estrategia en esa publicación de Zhihu era sensata, pero el diablo está en los detalles:
El verdadero trading cuantitativo implica validar cada idea con datos, implementar cada estrategia con código y registrar cada operación.
Si tienes una idea, deberías verificarla.
El código está al final del artículo. Puedes ejecutarlo, modificarlo y optimizarlo tú mismo.
Si estás interesado puedo seguir escribiendo más tarde:
¡Siéntete libre de darle Me gusta, comentar y solicitar más actualizaciones!
📝Código fuente del artículo (los parámetros de la estrategia se pueden configurar de forma flexible en la sección de parámetros al comienzo del código fuente; se ha optimizado la lógica comercial).:Estrategia de cobertura beta bidireccional
Este artículo es sólo para fines de aprendizaje y comunicación y no constituye ningún consejo de inversión.
P.D.: No existe una forma segura de hacerse rico rápidamente en el mundo de las criptomonedas; solo la gestión de riesgos y la optimización continua.