Type/to search
2
Follow
484
Followers
Configuração Dinâmica de Pesos Multi-Ativos de RWA no Mercado Cripto: Estratégia de Paridade de Risco
Discussions
Created 2026-04-08 16:37:16  Updated 2026-04-20 18:13:03
 0
 206

img

O mercado de criptomoedas não tem estado muito bem ultimamente. O BTC caiu de suas máximas, as altcoins estão piores ainda, e muitos estão apenas observando ou até saindo. Mas, nesse meio tempo, outra coisa está esquentando silenciosamente — RWA, ou seja, a tokenização de ativos do mundo real. Ativos de mercados tradicionais, como ouro, ações americanas e petróleo, começaram a aparecer em exchanges de criptomoedas na forma de contratos. Grandes exchanges estão listando gradualmente produtos como SPY (representando o ETF S&P 500), XAU (ouro) e CL (petróleo), somando-se ao BTC que já existia. Um ambiente de negociação multi-ativo cobrindo ações dos EUA, ouro, petróleo e criptomoedas está tomando forma na blockchain pela primeira vez.

Ao ver essa configuração, veio à mente uma ideia: nas finanças tradicionais, existe uma abordagem clássica chamada paridade de risco. Simplificando — não coloque todos os ovos na mesma cesta, e a quantidade em cada cesta é determinada pelo quão arriscada ela é. Essa lógica é usada há décadas no círculo financeiro tradicional. Neste mercado baixista, todos estão buscando maneiras de sobreviver sem depender de um único ativo. Agora que o mercado cripto finalmente tem contratos para esses ativos, decidi implementar essa lógica e testá-la.


Vamos esclarecer a paridade de risco antes de prosseguir

Antes de explicar como fazer, é preciso deixar claro o que é paridade de risco, caso contrário será difícil acompanhar a lógica a seguir.

Uma pessoa comum, ao alocar ativos, pode pensar: vou dividir o dinheiro em quatro partes iguais e colocar 25% em cada ativo. Parece equilibrado, mas o problema é que o BTC pode oscilar 10% em um dia, enquanto o ouro pode se mover apenas 0,5%. Com 25% de posição em ambos, o risco trazido pelo BTC é vinte vezes maior que o do ouro. Na superfície, parece que os quatro ativos estão igualmente divididos, mas na prática, o destino do portfólio é quase inteiramente determinado pelo BTC; os outros três são meros coadjuvantes.

A abordagem da paridade de risco é o oposto: não é dividir o capital igualmente, mas sim o risco igualmente. BTC tem alta volatilidade, então aloque menos; ouro é estável, então aloque mais — mas isso é apenas o primeiro passo. Mais crucial é o fato de que os ativos não são independentes; BTC e ações dos EUA podem cair juntos em certos cenários. Se dois ativos têm alta correlação, mesmo que suas volatilidades individuais sejam muito diferentes, equalizar seus riscos tem pouco significado. A verdadeira paridade de risco precisa considerar simultaneamente a volatilidade de cada ativo e sua correlação com os outros, usando a matriz de covariância para medir a contribuição marginal de cada ativo para o risco total do portfólio, de modo que, no final, cada ativo contribua aproximadamente com a mesma parcela de risco. A vantagem dessa lógica é que o portfólio inteiro não será derrubado por causa de um único ativo que sofra um colapso repentino.

img

Primeiro, selecione bem os ativos; só assim a diversificação faz sentido

Para fazer paridade de risco, a primeira coisa é escolher os ativos a serem incluídos. Se os ativos não forem escolhidos corretamente, qualquer cálculo posterior, por mais refinado que seja, será inútil.

O pool de ativos escolhido foi SPY, XAU, CL e BTC. A seleção desses quatro tem uma lógica — seus movimentos geralmente não são totalmente sincronizados. Quando a economia está boa, as ações sobem; quando o sentimento de aversão ao risco aumenta, o ouro sobe; quando as expectativas de inflação são altas, petróleo e ouro sobem; e o mercado cripto às vezes se move junto com as ações, outras vezes completamente fora de sincronia. Justamente porque a correlação entre eles não é alta, juntá-los faz sentido para diversificar o risco. Se os quatro ativos subissem e descessem juntos todos os dias, a diversificação seria uma ilusão, e nenhum método poderia salvá-lo.

Depois de escolher os ativos, a próxima questão é: quanto de cada ativo deve ser alocado? É isso que a paridade de risco realmente precisa calcular.

img

Como calcular quanto colocar em cada ativo

A lógica operacional da estratégia é dividida em duas etapas.

Primeira etapa: puxe os dados de K-line dos quatro ativos e alinhe-os por timestamp. A estratégia usa K-lines de 1 hora (PERIOD_H1) como entrada de dados. Esse passo parece simples, mas, na prática, os contratos de RWA às vezes têm dados faltantes. Se em um determinado momento não houver cotação para SPY, os dados desse momento são descartados por completo. Apenas os momentos em que os quatro ativos têm cotações simultâneas são mantidos para os cálculos subsequentes.

javascript
for (var k = 0; k < keys.length; k++) { var row = timeMap[keys[k]], ok = true; for (var i = 0; i < LABELS.length; i++) { if (row[LABELS[i]] === undefined) { ok = false; break; } } if (ok) timestamps.push(parseInt(keys[k])); }

Após o alinhamento dos dados, converta as séries de preços de fechamento em retornos logarítmicos, ou seja, ln(preço atual / preço anterior). Usa-se retorno logarítmico em vez da simples variação percentual porque ele possui aditividade temporal — a soma de múltiplos períodos é igual ao retorno logarítmico total, facilitando o processamento; além disso, sob a suposição comum de que os preços dos ativos seguem um movimento geométrico browniano, os retornos logarítmicos seguem uma distribuição normal, compatível com a estrutura de cálculo da matriz de covariância subsequente. Vale notar que, na prática, os retornos de ativos cripto frequentemente apresentam caudas pesadas, o que é um desvio da suposição a ser considerado; a matriz de covariância pode subestimar o risco real em condições extremas de mercado.

javascript
function calcLogReturns(prices) { var r = []; for (var i = 1; i < prices.length; i++) { var prev = prices[i - 1], cur = prices[i]; if (!prev || !cur || prev <= 0 || cur <= 0) { r.push(0); continue; } r.push(Math.log(cur / prev)); } return r; }

Segunda etapa: use essas séries de retornos para calcular a matriz de covariância. Calcular simplesmente a covariância histórica média é muito grosseiro; aqui, utiliza-se ponderação EWMA (média móvel exponencialmente ponderada) — dá maior peso aos dados recentes, permitindo que a matriz de covariância perceba mais rapidamente as mudanças nas condições de mercado.

javascript
for (var t = T - 1; t >= 0; t--) { var w = Math.pow(lambda, T - 1 - t); c += w * (retMat[i][t] - means[i]) * (retMat[j][t] - means[j]); ws += w; } cov[i][j] = c / ws; cov[j][i] = cov[i][j];

lambda é o fator de decaimento. A estratégia usa por padrão EWMA_LAMBDA = 0.94, valor baseado na configuração empírica da RiskMetrics para dados diários. Vale notar que o 0.94 da RiskMetrics foi projetado para dados diários; a estratégia usa dados de 1 hora, com frequência mais alta. Se deseja-se que a sensibilidade da matriz de covariância a mudanças recentes seja equivalente à do 0.94 diário, teoricamente seria necessário convertê-lo para um valor mais próximo de 1. No entanto, na prática, 0.94 ainda é um ponto de partida aceitável no nível horário, representando uma configuração com maior peso para dados recentes e decaimento mais rápido do histórico. Pode-se ajustar ainda mais com base nos resultados de backtesting. Quanto mais próximo de 1, mais persistentes são os efeitos dos dados históricos e mais lenta é a reação da matriz de covariância a mudanças recentes; quanto menor o lambda, mais sensível a estratégia se torna a mudanças nas condições de mercado, mas também mais suscetível a rebalanceamentos desnecessários devido a ruídos de curto prazo.

Após o cálculo, adiciona-se um termo de regularização na diagonal, com coeficiente definido como 0,1% da média dos elementos diagonais (eps = diagMean * 0.001). O coeficiente de 0,001 foi selecionado por testes, sendo numericamente suficiente para garantir que a matriz seja positiva definida, com impacto desprezível na estrutura de covariância. Além disso, é necessário mencionar uma simplificação: o cálculo rigoroso da covariância EWMA deveria usar médias ponderadas para os desvios, mas o código utiliza a média aritmética simples de toda a janela de observação. No caso dos retornos de ativos financeiros de curto prazo, onde a média dos retornos é próxima de zero, essa simplificação tem efeito desprezível; no entanto, em cenários onde a média se desvia significativamente de zero, podem ocorrer pequenos vieses.

Com a matriz de covariância, o próximo passo é a resolução real da paridade de risco — encontrar um conjunto de pesos que faça com que a contribuição de cada ativo para o risco do portfólio seja aproximadamente igual. Antes de iniciar a iteração, a estratégia já determinou a direção de cada ativo por meio do portfólio de volatilidade igual e da covariância, com os resultados armazenados no array signs[] (+1 para comprado, -1 para vendido). O processo iterativo usa esses sinais prefixados fixos, ajustando apenas a magnitude dos pesos, sem alterar a direção — isso é feito para estabilidade de engenharia, evitando que os pesos oscilem de direção devido a perturbações numéricas durante a iteração.

Esse problema não tem solução analítica, sendo aproximado por iteração. A cada rodada, calcula-se a contribuição de risco atual; reduz-se o peso dos ativos com contribuição muito alta e aumenta-se o daqueles com contribuição muito baixa, repetindo até a convergência.

javascript
for (var iter = 0; iter < 2000; iter++) { var trc = riskContribs(w, scaledCov); var pv = portVol(w, scaledCov); var target = pv / n; var obj = 0; for (var i = 0; i < n; i++) { for (var j = i + 1; j < n; j++) { var d = Math.abs(trc[i]) - Math.abs(trc[j]); obj += d * d; } } if (obj < 1e-12) break; var nw = [], ns = 0; for (var i = 0; i < n; i++) { var rc = Math.abs(trc[i]); var sign = signs[i]; // 使用预判断的固定符号 var a = target / rc; var v = sign * Math.max(Math.abs(w[i]) * Math.pow(a, 0.5), 1e-6); nw.push(v); ns += Math.abs(v); } // 绝对值归一化,使各资产权重绝对值之和为1 for (var i = 0; i < n; i++) w[i] = nw[i] / ns; }

O critério de convergência é que a soma dos quadrados das diferenças das contribuições de risco de todos os ativos seja menor que 1e-12. Nesse ponto, considera-se que as contribuições de risco de cada ativo estão suficientemente próximas e a iteração é interrompida. O número máximo de iterações é limitado a 2000 para evitar loops infinitos quando a matriz de covariância é mal condicionada. Na prática, a convergência ocorre dentro de algumas centenas de iterações. Se o limite for atingido sem convergência, significa que há problemas nos dados de entrada ou na matriz de covariância; nesse caso, a estratégia é rebaixada para uma posição long igualmente ponderada, garantindo que o sistema não fique ocioso.

A contribuição de risco de cada ativo é definida como seu peso multiplicado pelo risco marginal. O resultado pode ser negativo, indicando que o ativo está reduzindo a volatilidade geral do portfólio.

javascript
function riskContribs(w, cov) { var sv = matVecMul(cov, w); var pv = portVol(w, cov); var trc = []; for (var i = 0; i < w.length; i++) trc.push(w[i] * sv[i] / pv); return trc; }

Os pesos podem ser negativos, ou seja, vender a descoberto

A estratégia padrão de risk parity normalmente opera apenas com posições compradas, mas como o mercado de contratos permite vendas a descoberto, esta estratégia foi estendida para permitir pesos negativos.

A lógica de julgamento é a seguinte: primeiro calcula-se um portfólio de referência de volatilidade igual – ativos de alta volatilidade recebem pesos baixos, ativos de baixa volatilidade recebem pesos altos – e então verifica-se se a covariância de cada ativo com esse portfólio de referência é positiva ou negativa. Se a covariância for negativa, significa que o ativo tende a se mover na direção oposta ao portfólio como um todo; vendê-lo a descoberto ajuda a reduzir o risco geral do portfólio, e o peso é definido como negativo, correspondendo a uma posição vendida no mercado de contratos.

É importante notar que esta é uma aproximação de engenharia, não uma solução teórica rigorosa de risk parity com posições compradas e vendidas – a risk parity rigorosa com vendas a descoberto requer otimização com restrições baseada na matriz de covariância completa, com custo computacional mais alto. Esta aproximação fornece uma direção razoável na maioria das condições de mercado, mas quando vários ativos simultaneamente têm covariância negativa com o portfólio de referência, é necessário verificar especificamente se vender múltiplos ativos a descoberto ainda reduz o risco do portfólio – não pode ser generalizado.

javascript
var invVols = [], sumInvVol = 0; for (var i = 0; i < n; i++) { var vol = Math.sqrt(Math.max(scaledCov[i][i], 1e-16)); invVols.push(1 / vol); sumInvVol += 1 / vol; } var eqVolWeights = []; for (var i = 0; i < n; i++) { eqVolWeights.push(invVols[i] / sumInvVol); } var covWithPortfolio = 0; for (var j = 0; j < n; j++) { covWithPortfolio += eqVolWeights[j] * scaledCov[i][j]; } var dir = covWithPortfolio < 0 ? -1 : 1; Log('[方向判断]', LABELS[i], '与等波动率组合协方差:', _N(covWithPortfolio, 8), '→', dir < 0 ? '🔴 做空(short)' : '🟢 做多(long)');

Uma vez determinada a direção, ela é armazenada fixamente no array signs[] e não muda durante todo o processo iterativo de solução. A iteração apenas ajusta a magnitude dos pesos, não altera a direção. Depois que a direção é definida, resta tratar de outra questão: quanta alavancagem o portfólio como um todo deve adicionar.


Alavancagem não é quanto maior melhor, mas sim ajustada à volatilidade

A estratégia incorpora um mecanismo de ajuste de alavancagem cujo objetivo é controlar a volatilidade geral do portfólio próximo a um nível predefinido. Uma analogia: você dirige um carro com velocidade alvo de 60 km/h. Em uma autoestrada com boas condições, você pode pisar um pouco mais no acelerador; em ruas urbanas com tráfego complexo, você reduz. O mecanismo de alavancagem da estratégia é semelhante – quando a volatilidade geral do mercado está baixa, aumenta-se apropriadamente a alavancagem para que o nível de risco do portfólio atinja o alvo; quando a volatilidade do mercado está alta, reduz-se automaticamente a alavancagem, contraindo a exposição.

A estratégia usa candles de 1 hora, e um ano tem exatamente 8760 candles; portanto, o fator de anualização é diretamente sqrt(8760). Se outro período for usado, este coeficiente precisa ser ajustado sincronizadamente: candles de 15 minutos correspondem a sqrt(35040), candles de 4 horas a sqrt(2190), candles diários a sqrt(365).

javascript
function calcLeverage(w, cov) { var pv = portVol(w, cov) * Math.sqrt(8760); if (!isFinite(pv) || pv <= 0) return 1; return Math.min(TARGET_VOL / pv, MAX_LEVERAGE); }

A volatilidade anualizada do portfólio dividida pela volatilidade alvo fornece o múltiplo de alavancagem a ser aplicado, com um limite máximo para evitar que a alavancagem fique fora de controle em situações extremas. Não se trata de buscar o retorno máximo, mas sim de fazer um orçamento de risco – quanto risco usar para obter quanto retorno é algo decidido previamente, não se desloca conforme o mercado.

Uma vez calculada a alavancagem, o portfólio pode ser montado. Ao mesmo tempo, a estratégia também ajusta automaticamente o intervalo de polling do loop principal com base no nível atual de volatilidade: quanto maior a volatilidade, mais rápido o refresh; quando a volatilidade está baixa, o ritmo desacelera, reduzindo cálculos desnecessários e custos de transação.

javascript
function getAdaptiveSleep(w, cov) { var av = portVol(w, cov) * Math.sqrt(8760); if (av > 0.50) return FAST_INTERVAL; // 15分钟 else if (av > 0.30) return MID_INTERVAL; // 30分钟 else return SLOW_INTERVAL; // 60分钟 }

Quando rebalancear

O mercado se move todos os dias, e os pesos continuamente se desviam do projeto inicial. Se não forem gerenciados, com o tempo o risco efetivo do portfólio se afasta consideravelmente do esperado. A estratégia define duas condições para disparar o rebalanceamento: uma é temporal, recalculando os pesos forçadamente a cada número fixo de horas; a outra é quando o desvio ultrapassa o limite, ou seja, quando o peso real de algum ativo se desvia do peso alvo acima de um limiar, ou quando a direção de comprado/vendido se inverte, acionando imediatamente o rebalanceamento sem esperar o próximo cronograma.

Ao calcular o desvio relativo, o denominador é o valor absoluto do peso anterior. Quando o peso de um ativo é extremamente pequeno (próximo de zero), o desvio relativo é amplificado, o que pode causar rebalanceamentos frequentes. A estratégia se protege contra isso: quando lastWeights[i] é zero, a verificação de desvio é simplesmente ignorada, evitando disparos falsos devido à divisão por zero.

javascript
if (!lastWeights) { needRebal = true; rebalReason = '首次建仓'; } else if ((now - lastTime) > REBALANCE_HOURS * 3600000) { needRebal = true; rebalReason = '定时再平衡(' + REBALANCE_HOURS + 'h)'; } else { for (var i = 0; i < weights.length; i++) { if ((weights[i] >= 0) !== (lastWeights[i] >= 0)) { needRebal = true; rebalReason = LABELS[i] + ' 方向翻转(多↔空)'; break; } if (lastWeights[i] !== 0 && Math.abs(weights[i] - lastWeights[i]) / Math.abs(lastWeights[i]) > DRIFT_THRESHOLD) { needRebal = true; rebalReason = LABELS[i] + ' 权重漂移超阈值'; break; } } }

Após acionar o rebalanceamento, a estratégia calcula o valor nocional alvo de cada ativo, valores positivos representam posição comprada, valores negativos representam posição vendida. Em seguida, compara com as posições atuais para decidir se aumenta, reduz ou inverte a direção. Ao inverter a direção, primeiro fecha a posição oposta e depois abre a nova direção, evitando manter simultaneamente posições compradas e vendidas.

javascript
if (targetSide === 'long' && shortQty > 0) { exchange.CreateOrder(sym, "closesell", -1, shortQty); } if (targetSide === 'short' && longQty > 0) { exchange.CreateOrder(sym, "closebuy", -1, longQty); } if (diffQty > 0) { exchange.CreateOrder(sym, targetSide === 'long' ? "buy" : "sell", -1, diffQty); } else if (diffQty < 0) { exchange.CreateOrder(sym, targetSide === 'long' ? "closebuy" : "closesell", -1, Math.abs(diffQty)); }

Assim, não só evita negociações frequentes que geram muitas taxas, como também impede que o portfólio se desvie do seu objetivo original por longos períodos. Em condições normais, o mecanismo de rebalanceamento é suficiente para lidar com a maioria das mudanças do mercado. Mas o mercado às vezes não é normal, então é necessário um seguro extra.


E mais um disjuntor de emergência

Além do rebalanceamento normal, a estratégia possui um mecanismo de redução emergencial de posições. A cada iteração do loop principal, verifica todas as posições atuais, comparando com o preço registrado anteriormente, para medir o tamanho do movimento adverso em cada direção. Se uma posição comprada cair mais de 5% ou uma posição vendida subir mais de 5%, a estratégia reduz automaticamente a posição pela metade, controlando as perdas antes mesmo do próximo rebalanceamento.

javascript
if (pos.side === 'long') { drop = (last - cur) / last; } else if (pos.side === 'short') { drop = (cur - last) / last; } if (drop >= EMERGENCY_DROP) { Log('🚨 紧急风险触发! [' + label + '][' + pos.side + '] 不利变动:', _N(drop * 100, 2) + '%', '上次:', _N(last, 4), '→ 现价:', _N(cur, 4)); if (mode === 'live') emergencyReduceLive(sym, label, pos.side, EMERGENCY_REDUCE); else emergencyReducePaper(sym, label, cur, pos.side, EMERGENCY_REDUCE); }

No modo real, utiliza a interface de fechamento da exchange. No modo simulado, atualiza a margem e o caixa no estado local, libera a margem proporcional à posição reduzida, calcula o lucro/prejuízo atual e registra a transação.

Há um detalhe de design que precisa ser explicado: após acionar a redução emergencial, o preço de referência não é redefinido imediatamente. A próxima verificação ainda usará o preço anterior ao gatilho como referência. Isso significa que, em um movimento contínuo do ativo na direção desfavorável, o mecanismo será acionado repetidamente a cada ciclo, reduzindo gradualmente a posição até que ela se esgote ou até que o próximo rebalanceamento normal redefina o preço de referência. Essa decisão é intencional — em mercados extremos unidirecionais, reduzir continuamente controla melhor as perdas do que parar após uma única redução. O efeito colateral é que, se o preço cair brevemente abaixo do limite e depois se recuperar rapidamente, pode-se perder o rali devido a uma redução excessiva. Em mercados normais, esse mecanismo quase nunca é acionado, mas sua presença garante que, pelo menos, não se mantenha a posição até o fim em eventos de cisne negro.


Como é a execução

Depois que a estratégia é executada na plataforma, o painel exibe em tempo real se cada ativo está comprado ou vendido, seus respectivos pesos, a alavancagem atual, a estimativa de volatilidade anualizada do portfólio e a matriz de correlação entre os quatro ativos. O lucro/prejuízo flutuante das posições é atualizado a cada minuto, e o cálculo central da estratégia ajusta automaticamente a frequência de consulta com base na volatilidade do mercado.

Essa atualização de 1 minuto não é feita por multithreading, mas sim por um sub-loop aninhado dentro do loop principal durante o período de espera. A cada 1 minuto, o sub-loop é ativado para puxar os preços mais recentes, atualizar o lucro/prejuízo flutuante e a curva de patrimônio. Após acumular o intervalo de consulta da estratégia, sai do sub-loop e prossegue para o próximo ciclo de cálculo. Toda a estratégia é completamente single-thread, sem riscos de concorrência.

javascript
function sleepWithPnlRefresh(totalSleepMs, weights, leverage, covMatrix, corrMatrix) { var elapsed = 0; while (elapsed < totalSleepMs) { var step = Math.min(PNL_INTERVAL, totalSleepMs - elapsed); Sleep(step); elapsed += step; var prices = getTickers(); var equity = calcEquity(prices); var initCap = _G('pt_initCapital') || INIT_CAPITAL; _chart.add(0, [new Date().getTime(), equity]); LogProfit(equity - initCap, '&'); renderDashboard(weights, leverage, covMatrix, corrMatrix, prices, totalSleepMs, true); } }

Além disso, a estratégia suporta modo simulado, permitindo executar toda a lógica e ajustar parâmetros sem usar capital real. Após confirmar que o comportamento está de acordo com o esperado, decide-se se faz a migração para o modo real. Com essa configuração, foi executado um período de simulação — vamos ver os resultados reais.


Resultados da simulação

Durante o período de teste, a estratégia estava temporariamente no lucro geral. Direção das posições: BTC, XAU e SPY comprados; CL (petróleo) vendido. Nesse período, houve sinais de alívio nas tensões entre EUA e Irã, com o prêmio de risco geopolítico caindo e o petróleo apresentando uma queda significativa. A venda de petróleo foi a principal fonte de lucro desse ciclo. O comportamento do mercado nesse período foi favorável à estratégia, mas isso não significa que será assim no futuro. Na verdade, essa estratégia ainda tem várias questões não resolvidas — não seria honesto não mencioná-las.

img


Questões não resolvidas

Durante o desenvolvimento dessa estratégia, alguns problemas nunca foram completamente resolvidos.

Primeiro, a liquidez dos contratos RWA é muito inferior à do BTC. Ativos como SPY, XAU e CL ainda são muito novos em blockchain — o slippage e a profundidade do livro de ordens são desconhecidos. Na simulação isso não é perceptível, mas no modo real ocorrerá de fato.

Segundo, a estratégia depende de uma certa diversificação entre os ativos. No entanto, em momentos de pânico extremo do mercado, a correlação entre ativos de risco tende a aumentar drasticamente, reduzindo significativamente o efeito da diversificação — exatamente quando mais se precisa de proteção.

Terceiro, ativos tradicionais têm horários de negociação inativos, com preços quase estáticos, enquanto o BTC flutua 24 horas por dia. Isso faz com que a matriz de covariância subestime a verdadeira correlação entre os ativos — após o fechamento do mercado de ações dos EUA, o BTC continua se movendo, mas não há dados correspondentes do SPY para esse período. Quando o mercado tradicional reabre, a avaliação da estratégia sobre as correlações já pode estar defasada.

Quarto, os dados históricos são limitados, e a estabilidade da matriz de covariância em horizontes curtos é questionável. Parâmetros como o coeficiente de decaimento do EWMA, a volatilidade alvo e o limite de rebalanceamento são valores empíricos, não rigorosamente validados. A decisão de vender usa o sinal da covariância do portfólio de referência de volatilidade igual — uma aproximação de engenharia. Quando múltiplos ativos apresentam covariância negativa simultânea com o portfólio de referência, vender todos eles realmente reduz o risco do portfólio? Isso precisa ser verificado caso a caso, não pode ser aplicado diretamente. Os criptoativos possuem caudas pesadas, e a distribuição real de retornos se desvia da normal. Em cenários extremos, a matriz de covariância subestimará o risco — essa é uma suposição que deve ser aceita ao usar o framework atual.

Quinto, em ambiente de mercado real, ao alternar direções, a estratégia emite a ordem de fechamento e, após aguardar um período fixo, prossegue com a abertura subsequente, sem aguardar a confirmação da execução. Quando a resposta da exchange é lenta ou a latência da rede é alta, existe o risco de abrir uma nova posição antes que a posição antiga seja totalmente fechada. O simulador não envolve negociações reais, então esse problema não é perceptível. Antes de migrar para o mercado real, é necessário avaliar se o tempo de espera precisa ser ajustado com base na velocidade de resposta da exchange específica.

Esses problemas não podem ser detectados apenas rodando o simulador; é necessário uma modelagem mais detalhada e dedução teórica, verificando rigorosamente cada hipótese, para saber se essa lógica realmente se sustenta no mercado de criptomoedas.


Considerações Finais

A motivação para criar essa estratégia é simples: no mercado baixista de criptomoedas, os contratos RWA complementam exatamente o cenário de classes de ativos. A teoria de alocação de ativos acumulada por décadas nas finanças tradicionais, combinada com esse fator, vale a pena ser testada. O código é completo, a lógica é transparente e os parâmetros são ajustáveis. No entanto, este é apenas um ponto de partida; ainda falta muito para chegar a uma estratégia de alocação de ativos verdadeiramente comprovada em mercado real. Se você tiver ideias melhores, fique à vontade para contribuir para aperfeiçoá-la.

O conteúdo acima é apenas um registro do processo de exploração da estratégia e não constitui qualquer conselho de investimento. A negociação de contratos envolve riscos significativos. O desempenho em simulador não representa resultados reais. Antes de envolver capital real, certifique-se de compreender plenamente os riscos associados.

Código-fonte da estratégia: Estratégia de Risk Parity para Ativos RWA

Comment
All comments (0)
No data
No data
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)