[TOC]

Gần đây tôi tình cờ thấy một bài đăng trên Zhihu với tiêu đề rất hấp dẫn: “Một cách ổn định để làm giàu nhanh chóng trong thế giới tiền điện tử: Từ 3000U lên 12000U trong ba tháng”.
Tôi chỉ biết cười. Ổn định? Làm giàu nhanh chóng? Ghép hai từ này lại với nhau thường có nghĩa là một trong hai điều: hoặc đó là một trò lừa đảo, hoặc bạn là người chưa từng gặp phải sự kiện “thiên nga đen” nào cả.
Tuy nhiên, với tư cách là một nhà phát triển giao dịch định lượng, tôi vẫn không thể cưỡng lại việc nhấp chuột để xem khi nhìn thấy mô tả chiến lược này.

Sau khi đọc xong, tôi chìm vào suy nghĩ sâu sắc…
Có vẻ như, có lẽ, có thể, có thể, hy vọng, ước muốn, có lẽ đều có lý?
Không để mất thêm thời gian nữa, hãy cùng mở Nền tảng Định lượng Nhà phát minh và bắt đầu thôi!
Lý luận đơn giản nhất:
// 伪代码
if (btcChange > 2%) {
开多 1手 BTC
开空 1手 ETH
}
Sau khi viết xong mã, tôi tự tin nhấn vào nút kiểm thử ngược (backtest), và sau đó…

Chúng tôi đang thua lỗ nặng nề.
Nhìn thấy đường cong vốn chủ sở hữu lao dốc không phanh, tôi rơi vào trạng thái tự nghi ngờ sâu sắc.
Nếu suy nghĩ một cách bình tĩnh, vấn đề đã quá rõ ràng:
1 lô BTC ≠ 1 lô ETH
Hiện tại, BTC có giá trị khoảng 100.000 đô la mỗi đồng, trong khi ETH chỉ khoảng 3.000 đô la. Nếu bạn sử dụng tỷ lệ 1:1 để phòng ngừa rủi ro, đó không phải là phòng ngừa rủi ro mà là cho không tiền.
Một chiến lược phòng ngừa rủi ro hiệu quả cần xem xét các yếu tố sau:
Đoạn mã này là công cụ tính toán cốt lõi của chiến lược, thực hiện đầy đủ việc tính toán hệ số Beta của ETH so với BTC. Hệ số Beta ở đây thể hiện hai thông tin quan trọng: tỷ lệ giá cơ bản và tương quan biến động, trực tiếp xác định tỷ lệ cần phòng ngừa rủi ro.
// 计算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
}
Các chức năng và logic chính:
Cov(ETH,BTC) / Var(BTC)Điều này cho thấy sự nhạy cảm của lợi nhuận ETH đối với những thay đổi trong lợi nhuận BTC.Sau khi phiên bản Beta được phát hành, khoảng cách giữa lý thuyết và thực tế cần được thu hẹp, bằng cách chuyển đổi các hệ số lý thuyết thành số lượng giao dịch thực tế trên sàn giao dịch. Phần mã này đã thực hiện việc chuyển đổi quan trọng đó.
// 计算对冲张数
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
}
}
Các bước chuyển đổi chính:
Phần này đề cập đến việc thực thi chiến lược và kiểm soát rủi ro, chuyển đổi kế hoạch phòng ngừa rủi ro đã tính toán thành các hoạt động giao dịch thực tế và quản lý rủi ro. Logic vào lệnh được minh họa ở đây, sử dụng ví dụ về vị thế mua; vị thế bán có thể được hiểu theo cách tương tự.
Thiết kế điều kiện kích hoạtHệ thống này sử dụng hai điều kiện: giá BTC tăng > 2% và giá BTC tăng > giá ETH. Điều này đảm bảo sự biến động thị trường đủ lớn và mối quan hệ sức mạnh tương đối dự kiến được duy trì.
// 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))
}
Thực thi giao dịch nguyên tửQuá trình thực hiện diễn ra tuần tự và bao gồm cơ chế hoàn tác. Đầu tiên, mở vị thế mua BTC; nếu thành công, thì mở vị thế bán ETH. Nếu lệnh ETH thất bại, ngay lập tức đóng vị thế mua BTC hiện có để đảm bảo tính toàn vẹn của vị thế và tránh rủi ro một chiều.
Sau đây là ví dụ minh họa cho logic đóng:
Lợi nhuận và thua lỗ được tính theo đơn vị tiền tệTổng lãi và lỗ của hai vị thế được tính toán dựa trên số lượng coin đã mở, và hiệu quả phòng ngừa rủi ro tổng thể được xác định.
cài đặt ngưỡng kiểm soát rủi roHiệu suất tổng thể của danh mục đầu tư được đánh giá, và các đường chốt lời không đối xứng (+3%) và cắt lỗ (-1%) được thiết lập để theo đuổi giá trị kỳ vọng dương.
// 按币数计算盈亏
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}
}
Bài kiểm tra lại được tiến hành và kết quả là…

Đường cong cuối cùng cũng đang tăng lên!
Từ tháng 10 năm 2025 đến tháng 1 năm 2026, khoảng 3 tháng:
Sau khi hoàn tất quá trình kiểm tra ngược, chiến lược này đã được xác nhận:
Đây chính là sức hấp dẫn của giao dịch định lượng:
Bắt đầu với một ý tưởng → Viết mã để triển khai ý tưởng đó → Kiểm thử ngược để xác minh → Tối ưu hóa và cải tiến
Chiến lược được nêu trong bài đăng trên Zhihu đó rất hợp lý, nhưng vấn đề nằm ở chi tiết:
Giao dịch định lượng thực sự bao gồm việc xác thực mọi ý tưởng bằng dữ liệu, triển khai mọi chiến lược bằng mã lập trình và ghi lại mọi giao dịch.
Nếu bạn có một ý tưởng, bạn nên kiểm chứng nó.
Mã nguồn nằm ở cuối bài viết. Bạn có thể thoải mái chạy, chỉnh sửa và tối ưu hóa nó theo ý mình.
Nếu bạn quan tâm, tôi có thể viết tiếp sau:
Hãy thoải mái nhấn thích, bình luận và đề nghị cập nhật thêm thông tin nhé!
📝Mã nguồn bài viết (các tham số chiến lược có thể được thiết lập linh hoạt trong phần tham số ở đầu mã nguồn; logic giao dịch đã được tối ưu hóa).:Chiến lược phòng hộ Beta hai chiều
Bài viết này chỉ nhằm mục đích học tập và trao đổi thông tin, không phải là lời khuyên đầu tư.
P.S.: Không có cách nào chắc chắn để làm giàu nhanh chóng trong thế giới tiền điện tử; chỉ có quản lý rủi ro và tối ưu hóa liên tục.