2
Seguir
410
Seguidores

¿Una forma estable de enriquecerse rápidamente con criptomonedas? La verdad, desde publicaciones populares de Zhihu hasta backtesting en el mundo real.

Creado el: 2026-01-08 15:11:50, Actualizado el: 2026-01-23 10:48:21
comments   2
hits   275

[TOC]

¿Una forma estable de enriquecerse rápidamente con criptomonedas? La verdad, desde publicaciones populares de Zhihu hasta backtesting en el mundo real.

Origen: Un sueño de arbitraje aparentemente hermoso

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.

Esta teoría establece lo siguiente:

  1. BTC es el líder en el mundo de las criptomonedasSus fluctuaciones de precio son definitivamente mayores que las de sus contrapartes más pequeñas (ETH, SOL, etc.).
  2. El mercado alcista está aquíBTC está subiendo → Apuesta en largo en BTC + en corto en ETH → Gana dinero con la diferencia de precio.
  3. El mercado bajista está aquíBTC está cayendo drásticamente → Apostar en corto en BTC + apostar en largo en ETH → Sigue siendo una forma segura de sacar provecho de la diferencia de precio.

¿Una forma estable de enriquecerse rápidamente con criptomonedas? La verdad, desde publicaciones populares de Zhihu hasta backtesting en el mundo real.

Después de leerlo, caí en un profundo pensamiento…

¿Parece que tal vez, posiblemente, tal vez, espero, deseo, tal vez tenga algún sentido?

Primera versión del código: Un comienzo ingenuo

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…

Primera prueba retrospectiva

Estamos perdiendo dinero a manos llenas.

Al observar cómo la curva de valores se desplomaba, caí en una profunda duda sobre mí mismo.

Código de la segunda edición: Cobertura científica

¿Dónde residía el problema? El arte de la cobertura beta

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:

  • Relación precio:BTC/ETH ≈ 30:1
  • Diferencia de volatilidadCorrelación de retornos entre ambos
  • Valor nominal del contratoEl contrato perpetuo de BTC de OKX = 0,01 BTC y el contrato perpetuo de ETH = 0,1 ETH.

Implementación completa de la cobertura beta

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

  1. Validación de datos y procesamiento de degradaciónVerifique si hay suficientes datos históricos; si no, utilice directamente la relación de precios actual para garantizar que la estrategia siempre pueda ejecutarse.
  2. Cálculo de series de retornoLa conversión de datos de precios en rendimiento elimina la influencia de las dimensiones de precios absolutos, lo que hace que los activos a diferentes precios sean comparables.
  3. Cálculos básicos para el análisis estadístico
    • Covarianza:Mide la dirección y la fuerza de la correlación entre los rendimientos de BTC y ETH.
    • diferencia:Mide la volatilidad del rendimiento de BTC en sí.
    • Beta de rendimientoCov(ETH,BTC) / Var(BTC)Esto indica la sensibilidad de los retornos de ETH a los cambios en los retornos de BTC.
    • Coeficiente de correlaciónLa covarianza estandarizada refleja el grado de correlación lineal.
  4. Síntesis beta integralBeta final = Ratio de precio promedio histórico × Beta de retorno. Esto considera tanto la diferencia en el precio subyacente (p. ej., BTC es 30 veces más caro que ETH) como la diferencia en la volatilidad (p. ej., la volatilidad de ETH es 0,8 veces mayor que la de BTC). Por ejemplo, si el ratio de precio es 30 y el Beta de retorno es 0,8, entonces el Beta final = 24, lo que significa que cubrir 1 BTC requiere 24 ETH.
  5. Mecanismo de control de riesgosEstablecer límites razonables al valor Beta para evitar que se calculen ratios de cobertura irrazonables debido a condiciones extremas del mercado a corto plazo.

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

  1. Determinar el tamaño de la posición baseEstablezca una cantidad base de BTC (por ejemplo, 0,1) según la configuración, que servirá como “ancla” para toda la cartera de cobertura.
  2. Cálculo teórico de monedasCantidad teórica de ETH = Cantidad base de BTC × Coeficiente Beta.
  3. Conversión del valor nominal del contratoEl paso práctico más crucial es dividir la cantidad teórica de monedas entre el valor del contrato (CtVal) de cada contrato. Por ejemplo, un contrato de BTC podría representar 0,01 BTC y un contrato de ETH, 0,1 ETH, obteniendo así la cantidad de contratos.
  4. IntegerizaciónEl redondeo a la baja garantiza que las operaciones se realicen en contratos completos, con un mínimo de un contrato. Simultáneamente, la proporción de operaciones reales se calcula a la inversa para obtener cálculos precisos de ganancias y pérdidas.

Lógica de apertura y cierre

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.

  • Ganancia/pérdida de posición larga en BTC = (precio actual - precio de apertura) × número de BTC mantenidos
  • Ganancia/pérdida de posición corta de ETH = (precio de apertura - precio actual) × número de ETH mantenidos

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…

Segunda prueba retrospectiva

¡La curva finalmente está subiendo!

Análisis de datos de backtesting

Desde octubre de 2025 hasta enero de 2026, aproximadamente 3 meses:

Rendimiento del fondo

  • Capital inicial: $50,000
  • Patrimonio final: $51,095
  • Rentabilidad total: aproximadamente 2,2%
  • Reducción máxima: Mantener dentro de un rango razonable

Estadísticas de transacciones

  • Número de oportunidades de toma de ganancias: 6
  • Número de órdenes de stop loss: 14
  • Tasa de victorias: 30%

La verdadera conclusión

Después de realizar pruebas retrospectivas completas, se validó esta estrategia:

✅ Partes teóricamente factibles:

  1. De hecho, la cobertura beta puede reducir el riesgo unilateral.
  2. La reversión de la relación de precios ofrece oportunidades de arbitraje.
  3. Las órdenes de stop-loss y take-profit pueden proteger las ganancias.

⚠️ Problemas del mundo real:

  1. Bajos rendimientosEl margen de beneficio fue sólo del 30%, con un rendimiento acumulado del 2,2% en tres meses, muy lejos del rendimiento de cuatro veces que se afirma en el artículo.
  2. Pocas oportunidades para abrir un puestoEl umbral del 2% limita la frecuencia de apertura de posiciones.
  3. Tarifas de transacciónLa apertura y cierre frecuentes de posiciones consumirán muchas ganancias.
  4. Riesgo de deslizamientoEl trading en vivo puede tener peores resultados que el backtesting.
  5. Condiciones extremas del mercadoSi tanto BTC como ETH experimentan un aumento/depreciación simultáneo, el mecanismo de cobertura fallará.

🔍Áreas de optimización:

  1. Rotación multidivisaNo solo puede cubrir ETH, sino que también puede cubrir SOL, BNB, etc.
  2. Descenso dinámicoAjuste de los umbrales de entrada en función de la volatilidad
  3. Detener la pérdida de enfriamientoNo abra una nueva posición inmediatamente después de colocar una orden de stop-loss.
  4. Cobertura del delta de volatilidadAdemás del precio beta, también se puede considerar la cobertura de volatilidad.
  5. Administración de fondosAjustar dinámicamente el ratio de capital para cada apertura de posición.

En conclusión: La importancia de la cuantificación

É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:

  • Sin cobertura beta, simplemente se apuesta a la dirección.
  • Sin un mecanismo de control de riesgos, es como correr desnudo.
  • Sin verificación mediante pruebas retrospectivas, es sólo una ilusión.

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:

  • Estrategias de cobertura basadas en deltas de volatilidad
  • Implementación de rotación multidivisa
  • Optimización de la gestión de fondos y del control de riesgos

¡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


Descargo de responsabilidad

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.