Источник: Казалось бы, прекрасная мечта об арбитраже.
Недавно я наткнулся на пост на Zhihu с очень заманчивым заголовком: «Надежный способ быстро разбогатеть в мире криптовалют: от 3000U до 12000U за три месяца».
Я просто рассмеялся. Стабильный? Быстро разбогатеть? Сочетание этих двух слов обычно означает одно из двух: либо это мошенничество, либо вы человек, который еще не сталкивался с «черным лебедем».
Однако, будучи разработчиком количественных торговых стратегий, я все же не смог удержаться и, увидев описание этой стратегии, заглянул внутрь.
Согласно этой теории, утверждается следующее:
- **BTC — лидер в мире криптовалют.**Колебания его цены определенно сильнее, чем у его более мелких аналогов (ETH, SOL и т. д.).
- Бычий рынок началсяБиткоин стремительно растёт → Откройте длинную позицию по BTC и короткую по ETH → Получите прибыль от разницы в цене.
- Медвежий рынок наступилЦена BTC резко падает → Открытие короткой позиции по BTC + открытие длинной позиции по ETH → По-прежнему верный способ получить прибыль от разницы цен.
Прочитав это, я погрузился в глубокие размышления...
Кажется, возможно, вероятно, надежда, желание, может быть, в этом есть какой-то смысл?
Первая версия кода: Наивное начало
Итак, без лишних слов, давайте откроем платформу количественной оценки изобретателей и начнём!
Простейшая логика:
javascript
// 伪代码
if (btcChange > 2%) {
开多 1手 BTC
开空 1手 ETH
}
Закончив писать код, я уверенно нажал на кнопку тестирования, и затем...

Мы теряем деньги одну за другой.
Наблюдая за стремительным падением кривой доходности акций, я впал в глубокое сомнение в собственных силах.
Код второго издания: Научное хеджирование
В чём заключалась проблема? Искусство хеджирования с использованием коэффициента бета.
Если спокойно об этом подумать, проблема очевидна:
1 лот BTC ≠ 1 лот ETH
В настоящее время BTC стоит 100 000 долларов, в то время как ETH стоит всего около 3000 долларов. Если вы используете соотношение 1:1 для хеджирования, это не хеджирование, а потеря денег.
При разработке эффективной стратегии хеджирования необходимо учитывать следующие факторы:
- Соотношение цен:BTC/ETH ≈ 30:1
- Разница волатильностиКорреляция доходности между двумя
- Номинальная стоимость контрактаБессрочный контракт OKX в BTC равен 0,01 BTC, а бессрочный контракт в ETH равен 0,1 ETH.
Полная реализация бета-хеджирования
Этот код является основным вычислительным механизмом стратегии, который полностью реализует расчет коэффициента Бета ETH относительно BTC. Коэффициент Бета здесь представляет собой два ключевых элемента информации: соотношение базовых цен и корреляцию волатильности, которые напрямую определяют долю, которую необходимо хеджировать.
javascript
// 计算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
}
Основные функции и логика:
- **Проверка и обработка данных, а также анализ их деградации.**Проверьте, достаточно ли исторических данных; если нет, используйте соотношение текущих цен напрямую, чтобы гарантировать постоянную работоспособность стратегии.
- Расчет рядов доходностиПреобразование данных о ценах в доходность исключает влияние абсолютных значений цены, что делает активы, торгующиеся по разным ценам, сопоставимыми.
- Основные вычисления для статистического анализа:
- Ковариация: Измеряет направление и силу корреляции между доходностью BTC и ETH.
- дисперсия: Измеряет волатильность самой доходности BTC.
- Доходность Бета:
Cov(ETH,BTC) / Var(BTC)Это указывает на чувствительность доходности ETH к изменениям доходности BTC. - Коэффициент корреляцииСтандартизированная ковариация отражает степень линейной корреляции.
- Комплексный бета-синтезИтоговый коэффициент Бета = Историческое среднее соотношение цен × Коэффициент Бета доходности. Этот коэффициент учитывает как разницу в цене базового актива (например, BTC в 30 раз дороже ETH), так и разницу в волатильности (например, волатильность ETH в 0,8 раза выше, чем у BTC). Например, если соотношение цен равно 30, а коэффициент Бета доходности равен 0,8, то итоговый коэффициент Бета равен 24, что означает, что для хеджирования 1 BTC требуется 24 ETH.
- Механизмы контроля рискаУстановите разумные ограничения на значение бета-коэффициента, чтобы предотвратить расчет необоснованных коэффициентов хеджирования из-за краткосрочных экстремальных рыночных условий.
После выпуска бета-версии возникла необходимость преодолеть разрыв между теорией и реальностью, преобразовав теоретические коэффициенты в фактические торгуемые величины на бирже. Эта часть кода выполнила это важнейшее преобразование.
javascript
// 计算对冲张数
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
}
}
Ключевые этапы преобразования:
- Определите размер базовой позицииУстановите базовое значение в BTC (например, 0,1) в зависимости от конфигурации, которое будет служить «якорем» для всего хеджирующего портфеля.
- Теоретический расчет стоимости монетыТеоретическое количество ETH = Базовое количество BTC × Коэффициент бета.
- конвертация номинальной стоимости контрактаНаиболее важным практическим шагом является деление теоретического количества монет на «стоимость контракта» (CtVal) каждого контракта. Например, один контракт BTC может представлять 0,01 BTC, а один контракт ETH — 0,1 ETH, таким образом получая количество контрактов.
- ИнтеграцияОкругление в меньшую сторону гарантирует, что сделки совершаются целыми контрактами, как минимум, одним контрактом. Одновременно с этим, доля фактически совершенных сделок рассчитывается в обратном порядке для последующих точных расчетов прибыли и убытков.
Логика открытия и закрытия
В этом разделе рассматриваются реализация стратегии и контроль рисков, преобразование рассчитанного плана хеджирования в реальные торговые операции и управление рисками. Логика входа иллюстрируется здесь на примере длинной позиции; короткую позицию можно понять аналогичным образом.
Проектирование условий срабатыванияСистема использует двойное условие: рост цены BTC > 2% и рост цены BTC > рост цены ETH. Это обеспечивает достаточную волатильность рынка и сохранение ожидаемой зависимости относительной силы.
javascript
// 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))
}
Атомарное выполнение транзакцийИсполнение происходит последовательно и включает механизм отката. Сначала открывается длинная позиция в BTC; в случае успеха открывается короткая позиция в ETH. Если ордер на ETH не срабатывает, немедленно закрывается существующая длинная позиция в BTC, чтобы обеспечить целостность позиции и избежать одностороннего риска.
Ниже приведена демонстрация логики закрытия:
Прибыль и убытки, рассчитанные по валютеОбщая прибыль и убыток по двум позициям рассчитываются на основе количества открытых монет, и определяется общий эффект хеджирования.
- Прибыль/убыток по длинной позиции в BTC = (текущая цена - цена открытия) × количество удерживаемых BTC
- Прибыль/убыток по короткой позиции по ETH = (цена открытия - текущая цена) × количество удерживаемых ETH
Настройки пороговых значений контроля рисковОценивается общая эффективность портфеля, и устанавливаются асимметричные линии фиксации прибыли (+3%) и стоп-лосса (-1%) для достижения положительного ожидаемого значения.
javascript
// 按币数计算盈亏
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 месяца:
Результаты деятельности фонда
- Начальный капитал: 50 000 долларов США
- Итоговая сумма собственного капитала: 51 095 долларов США.
- Общая доходность: приблизительно 2,2%
- Максимальная просадка: Держитесь в разумных пределах.
Статистика транзакций
- Количество возможностей для фиксации прибыли: 6
- Количество стоп-лосс ордеров: 14
- Процент выигрышей: 30%
Истинный вывод
После тщательного тестирования на исторических данных эта стратегия была подтверждена:
✅ Теоретически осуществимые части:
- Действительно, бета-хеджирование может снизить односторонний риск.
- Изменение соотношения цен создает возможности для арбитража.
- Стоп-лосс и тейк-профит могут защитить прибыль.
⚠️ Реальные проблемы:
- Низкая доходностьРентабельность составила всего 30%, а совокупная доходность за три месяца — 2,2%, что далеко от заявленной в публикации четырехкратной доходности.
- **Возможностей открыть вакансию немного.**Порог в 2% ограничивает частоту открытия позиций.
- Комиссии за транзакциюЧастое открытие и закрытие позиций приведет к тому, что значительная часть прибыли будет поглощена.
- Риск проскальзыванияРезультаты реальной торговли могут быть хуже, чем результаты тестирования на исторических данных.
- Экстремальные рыночные условияЕсли одновременно произойдет скачок/снижение стоимости BTC и ETH, механизм хеджирования потерпит неудачу.
🔍 Области для оптимизации:
- Многовалютная ротацияОн может хеджировать не только ETH, но и SOL, BNB и т.д.
- Динамическая убыльКорректировка пороговых значений входа в зависимости от волатильности
- Остановить потерю охлажденияНе открывайте новую позицию сразу после размещения стоп-лосса.
- Хеджирование волатильности ДельтаПомимо коэффициента бета цены, можно также рассмотреть хеджирование волатильности.
- Управление деньгамиДинамическая корректировка коэффициента достаточности капитала для каждой открытой позиции.
В заключение: значение количественного анализа.
В этом и заключается привлекательность количественной торговли:
Начните с идеи → Напишите код для её реализации → Проведите тестирование для проверки → Оптимизируйте и улучшите
Стратегия, изложенная в той статье на Zhihu, была разумной, но дьявол кроется в деталях:
- Без бета-хеджирования это просто ставка на направление движения цены.
- Без механизма контроля рисков это все равно что бегать голым.
- Без проверки на исторических данных это всего лишь пустые мечты.
Настоящая количественная торговля предполагает проверку каждой идеи данными, реализацию каждой стратегии с помощью кода и запись каждой сделки.
Если у вас есть идея, вам следует её проверить.
Код находится в конце статьи. Можете смело запускать, изменять и оптимизировать его самостоятельно.
Если вам интересно, я могу продолжить писать позже:
- Стратегии хеджирования на основе дельты волатильности
- Внедрение многовалютной ротации
- Оптимизация управления фондами и контроля рисков.
Не стесняйтесь ставить лайки, оставлять комментарии и просить больше обновлений!
📝Исходный код статьи (параметры стратегии можно гибко задавать в разделе параметров в начале исходного кода; торговая логика оптимизирована).:Двусторонняя стратегия хеджирования бета-коэффициента
Отказ от ответственности
Данная статья предназначена исключительно для обучения и обмена информацией и не является инвестиционной рекомендацией.
P.S.: В мире криптовалют нет гарантированного способа быстро разбогатеть; есть только управление рисками и постоянная оптимизация.
- 1


