2
Suivre
410
Abonnés

Un moyen sûr de s'enrichir rapidement avec les cryptomonnaies ? La vérité tirée des publications populaires sur Zhihu et des tests en conditions réelles.

Créé le: 2026-01-08 15:11:50, Mis à jour le: 2026-01-23 10:48:21
comments   2
hits   275

[TOC]

Un moyen sûr de s’enrichir rapidement avec les cryptomonnaies ? La vérité tirée des publications populaires sur Zhihu et des tests en conditions réelles.

Origine : Un rêve d’arbitrage apparemment magnifique

Je suis récemment tombé sur un article sur Zhihu avec un titre très alléchant : « Un moyen stable de s’enrichir rapidement dans le monde des cryptomonnaies : de 3 000 U à 12 000 U en trois mois ».

J’ai juste ri. Stable ? Devenir riche rapidement ? Associer ces deux mots signifie généralement deux choses : soit c’est une arnaque, soit vous n’avez pas encore été confronté à un cygne noir.

Cependant, en tant que développeur de solutions de trading quantitatif, je n’ai pas pu résister à l’envie de cliquer pour jeter un coup d’œil lorsque j’ai vu la description de cette stratégie.

Cette théorie affirme ce qui suit :

  1. Le Bitcoin est le leader du monde des cryptomonnaies.Ses fluctuations de prix sont nettement plus importantes que celles de ses homologues plus petits (ETH, SOL, etc.).
  2. Le marché haussier est là.Le BTC est en forte hausse → Achetez du BTC + vendez de l’ETH à découvert → Profitez de la différence de prix.
  3. Le marché baissier est arrivé.Le BTC chute fortement → Vendre du BTC à découvert + acheter de l’ETH → Un moyen sûr de profiter de la différence de prix.

Un moyen sûr de s’enrichir rapidement avec les cryptomonnaies ? La vérité tirée des publications populaires sur Zhihu et des tests en conditions réelles.

Après l’avoir lu, je suis tombé dans une profonde réflexion…

Il semble, peut-être, possiblement, espoir, souhait, peut-être que cela ait du sens ?

Première version du code : Un début naïf

Sans plus tarder, ouvrons la plateforme de quantification des inventeurs et commençons !

La logique la plus simple :

// 伪代码
if (btcChange > 2%) {
    开多 1手 BTC
    开空 1手 ETH
}

Après avoir terminé d’écrire le code, j’ai cliqué avec confiance sur backtest, et ensuite…

Premier test de validation

Nous perdons de l’argent à une vitesse folle.

En voyant la courbe des actions dégringoler, je suis tombé dans un profond doute de moi-même.

Code de la deuxième édition : Couverture scientifique

Où résidait le problème ? L’art de la couverture bêta

En y réfléchissant calmement, le problème est évident :

1 lot de BTC ≠ 1 lot d’ETH

Le Bitcoin vaut actuellement 100 000 \( l'unité, tandis que l'Ethereum ne vaut qu'environ 3 000 \). Utiliser un ratio de 1:1 pour se couvrir revient à jeter son argent par les fenêtres.

Une stratégie de couverture adéquate doit prendre en compte :

  • Rapport de prix:BTC/ETH ≈ 30:1
  • Différence de volatilitéCorrélation des rendements entre les deux
  • valeur nominale du contratLe contrat perpétuel BTC d’OKX = 0,01 BTC, et le contrat perpétuel ETH = 0,1 ETH.

Mise en œuvre complète de la couverture bêta

Ce code constitue le moteur de calcul principal de la stratégie, implémentant intégralement le calcul du coefficient bêta de l’ETH par rapport au BTC. Ce coefficient bêta représente deux informations clés : le ratio de prix sous-jacent et la corrélation de volatilité, déterminant directement la proportion à couvrir.

// 计算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
}

Fonctions principales et logique

  1. Traitement de validation et de dégradation des donnéesVérifiez si les données historiques sont suffisantes ; sinon, utilisez directement le ratio de prix actuel pour garantir le bon fonctionnement de la stratégie.
  2. Calcul des séries de rendementLa conversion des données de prix en rendement élimine l’influence des dimensions absolues des prix, rendant ainsi comparables les actifs à des prix différents.
  3. Calculs fondamentaux pour l’analyse statistique
    • Covariance: Mesure la direction et la force de la corrélation entre les rendements du BTC et de l’ETH.
    • variance: Mesure la volatilité du rendement du BTC lui-même.
    • Rendement bêtaCov(ETH,BTC) / Var(BTC)Cela indique la sensibilité des rendements de l’ETH aux variations des rendements du BTC.
    • Coefficient de corrélationLa covariance standardisée reflète le degré de corrélation linéaire.
  4. Synthèse bêta complèteBêta final = Ratio de prix moyen historique × Bêta de rendement. Ce calcul tient compte à la fois de la différence de prix du sous-jacent (par exemple, le BTC est 30 fois plus cher que l’ETH) et de la différence de volatilité (par exemple, la volatilité de l’ETH est 0,8 fois inférieure à celle du BTC). Par exemple, si le ratio de prix est de 30 et le bêta de rendement de 0,8, le bêta final est de 24, ce qui signifie que la couverture de 1 BTC nécessite 24 ETH.
  5. Les mécanismes de contrôle des risquesFixez des limites raisonnables à la valeur bêta afin d’éviter le calcul de ratios de couverture déraisonnables en raison de conditions de marché extrêmes à court terme.

Après la publication de la version bêta, il a fallu combler l’écart entre la théorie et la pratique en convertissant les coefficients théoriques en quantités négociables sur le marché. Cette partie du code a permis cette conversion essentielle.

// 计算对冲张数
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
    }
}

Étapes clés de conversion

  1. Déterminer la taille de la position de baseDéfinissez un montant de base de BTC (par exemple, 0,1) en fonction de la configuration, qui servira d’« ancre » pour l’ensemble du portefeuille de couverture.
  2. Calcul théorique de la valeur d’une pièceQuantité théorique d’ETH = Quantité de base de BTC × Coefficient bêta.
  3. conversion de la valeur nominale du contratL’étape pratique la plus cruciale consiste à diviser le nombre théorique de jetons par la « valeur du contrat » (CtVal) de chaque contrat. Par exemple, un contrat BTC peut représenter 0,01 BTC et un contrat ETH 0,1 ETH, ce qui permet d’obtenir le nombre de contrats.
  4. IntégrationL’arrondi à l’inférieur garantit que les transactions portent sur des contrats entiers, avec un minimum d’un contrat. Parallèlement, la proportion des transactions réelles est calculée à l’envers pour des calculs précis de profits et pertes ultérieurs.

logique d’ouverture et de fermeture

Cette section traite de l’exécution de la stratégie et du contrôle des risques, de la traduction du plan de couverture calculé en opérations de trading concrètes et de la gestion des risques. La logique d’entrée est illustrée ici, à l’aide d’une position longue comme exemple ; une position courte peut être comprise de la même manière.

Conception des conditions de déclenchementLe système repose sur une double condition : la hausse du prix du BTC doit être supérieure à 2 % et la hausse du prix du BTC doit être supérieure à celle du prix de l’ETH. Ceci garantit une volatilité suffisante du marché et le respect de la relation de force relative attendue.

// 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))
}

Exécution atomique des transactionsL’exécution est séquentielle et comprend un mécanisme d’annulation. Commencez par ouvrir une position longue sur BTC ; en cas de succès, ouvrez une position courte sur ETH. Si l’ordre sur ETH échoue, fermez immédiatement la position longue existante sur BTC afin de garantir l’intégrité de la position et d’éviter une exposition à un risque unilatéral.

Voici une démonstration de la logique de fermeture :

Bénéfices et pertes calculés en deviseLe profit et la perte totaux des deux positions sont calculés en fonction du nombre de pièces ouvertes, et l’effet global de la couverture est déterminé.

  • Gain/perte d’une position longue en BTC = (prix actuel - prix d’ouverture) × nombre de BTC détenus
  • Gain/perte sur une position courte ETH = (prix d’ouverture - prix actuel) × nombre d’ETH détenus

paramètres de seuil de contrôle des risquesLa performance globale du portefeuille est évaluée, et des lignes de prise de bénéfices asymétriques (+3%) et de stop-loss (-1%) sont définies pour poursuivre une valeur attendue positive.

// 按币数计算盈亏
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}
}

Le test a été répété et les résultats ont été…

Deuxième test de validation

La courbe est enfin ascendante !

Analyse des données de backtesting

D’octobre 2025 à janvier 2026, soit environ 3 mois :

performance du fonds

  • Capital initial : 50 000 $
  • Capitaux nets finaux : 51 095 $
  • Rendement total : environ 2,2 %
  • Perte maximale : à maintenir dans une fourchette raisonnable

Statistiques de transaction

  • Nombre d’opportunités de prise de bénéfices : 6
  • Nombre d’ordres stop-loss : 14
  • Taux de victoire : 30 %

La véritable conclusion

Après des tests rétrospectifs complets, cette stratégie a été validée :

✅ Pièces théoriquement réalisables :

  1. La couverture bêta peut effectivement réduire le risque unilatéral.
  2. Le retournement du ratio des prix offre des opportunités d’arbitrage.
  3. Les ordres stop-loss et take-profit permettent de protéger les profits.

⚠️ Problèmes du monde réel :

  1. Faibles rendementsLa marge bénéficiaire n’était que de 30 %, avec un rendement cumulé de 2,2 % sur trois mois, loin du rendement quadruplé annoncé dans l’article.
  2. Peu d’opportunités pour ouvrir un posteLe seuil de 2 % limite la fréquence d’ouverture des positions.
  3. Frais de transactionL’ouverture et la fermeture fréquentes de positions vont grignoter une grande partie des bénéfices.
  4. Risque de glissementLe trading en direct peut donner des résultats inférieurs à ceux des tests rétrospectifs.
  5. Conditions de marché extrêmesSi le BTC et l’ETH subissent simultanément une hausse/dépréciation, le mécanisme de couverture échouera.

🔍 Axes d’optimisation :

  1. Rotation multidevisesNon seulement il peut couvrir l’ETH, mais il peut également couvrir le SOL, le BNB, etc.
  2. Déclin dynamiqueAjustement des seuils d’entrée en fonction de la volatilité
  3. Refroidissement stop-lossN’ouvrez pas de nouvelle position immédiatement après le placement d’un ordre stop-loss.
  4. Couverture de la volatilité deltaOutre le bêta des prix, la couverture de la volatilité peut également être envisagée.
  5. Gestion des fondsAjuster dynamiquement le ratio de capital pour chaque ouverture de poste.

En conclusion : L’importance de la quantification

C’est tout l’attrait du trading quantitatif :

Partir d’une idée → Écrire le code pour la mettre en œuvre → Effectuer des tests rétrospectifs pour la vérifier → Optimiser et améliorer

La stratégie décrite dans cet article de Zhihu était judicieuse, mais le diable se cache dans les détails :

  • Sans couverture bêta, c’est simplement parier sur la direction.
  • Sans mécanisme de contrôle des risques, c’est comme courir nu.
  • Sans vérification rétrospective, ce n’est qu’un vœu pieux.

Le véritable trading quantitatif implique de valider chaque idée par des données, de mettre en œuvre chaque stratégie par du code et d’enregistrer chaque transaction.

Si vous avez une idée, vous devriez la vérifier.

Le code se trouve à la fin de l’article. N’hésitez pas à l’exécuter, à le modifier et à l’optimiser vous-même.

Si cela vous intéresse, je peux continuer à écrire plus tard :

  • Stratégies de couverture basées sur le delta de volatilité
  • Mise en œuvre de la rotation multidevises
  • Optimisation de la gestion des fonds et du contrôle des risques

N’hésitez pas à aimer, commenter et demander plus de mises à jour !

📝Code source de l’article (les paramètres de stratégie peuvent être définis de manière flexible dans la section des paramètres au début du code source ; la logique de trading a été optimisée).Stratégie de couverture bêta bidirectionnelle


Clause de non-responsabilité

Cet article a pour seul but de fournir des informations et des communications, et ne constitue en aucun cas un conseil en investissement.

P.S. : Il n’existe aucun moyen sûr de s’enrichir rapidement dans le monde des cryptomonnaies ; seules la gestion des risques et l’optimisation continue sont efficaces.