Type/to search
2
Follow
484
Followers
Configuración dinámica de pesos multi-activos de RWA en el mercado cripto: Estrategia de paridad de riesgo
Discussions
Created 2026-04-08 16:37:16  Updated 2026-04-20 18:13:03
 0
 206

img

El mercado de criptomonedas no ha estado bien últimamente. El BTC ha caído desde sus máximos, las altcoins han sufrido aún más, y muchos están esperando o incluso saliendo. Pero durante este tiempo, otra cosa se ha estado calentando silenciosamente: RWA, es decir, la tokenización de activos del mundo real. Activos de mercados tradicionales como el oro, las acciones estadounidenses y el petróleo crudo han comenzado a aparecer en exchanges de criptomonedas en forma de contratos. Los principales exchanges han lanzado gradualmente productos como SPY (que representa el ETF del S&P 500), XAU (oro), CL (petróleo crudo) y, junto con el BTC que ya existía, por primera vez se ha formado en cadena un entorno de negociación multiactivo que cubre acciones estadounidenses, oro, petróleo crudo y criptomonedas.

Al ver esta configuración, me vino a la mente una idea: en las finanzas tradicionales, hay un concepto muy clásico llamado paridad de riesgo. En términos simples: no pongas todos los huevos en la misma canasta, y la cantidad en cada canasta se decide según lo riesgosa que sea esa canasta. Esta lógica se ha utilizado en el mundo financiero tradicional durante décadas. En este mercado bajista, todos buscan formas de sobrevivir sin depender de un solo activo. Ahora que el mercado cripto finalmente tiene contratos para estos activos, comencé a implementar esta lógica para probarla.


Primero, aclaremos la paridad de riesgo para seguir adelante

Antes de explicar cómo hacerlo específicamente, debemos entender bien el término "paridad de riesgo", de lo contrario será difícil seguir la lógica posterior.

Una persona común al asignar activos podría pensar: divido el dinero en cuatro partes iguales y pongo un 25% en cada activo. Suena equilibrado, pero el problema es que el BTC puede moverse un 10% en un día, mientras que el oro quizás solo se mueve un 0.5%. Con la misma posición del 25%, el riesgo que te aporta el BTC es veinte veces mayor que el del oro. En apariencia, los cuatro activos están divididos equitativamente, pero en realidad el destino de la cartera está casi completamente determinado por el BTC, y los otros tres son solo un complemento.

La paridad de riesgo hace lo contrario: no se divide el capital de manera equitativa, sino el riesgo. El BTC es volátil, así que se asigna menos; el oro es estable, así que se asigna más, pero esto es solo el primer paso. Lo más crítico es que los activos no son independientes: el BTC y las acciones estadounidenses pueden caer juntos en ciertos escenarios. Si dos activos se mueven altamente en la misma dirección, incluso si sus volatilidades individuales son muy diferentes, tiene poco sentido equilibrar sus riesgos. La verdadera paridad de riesgo necesita considerar tanto la volatilidad de cada activo como su correlación con otros activos, utilizando la matriz de covarianza para medir la contribución marginal de cada activo al riesgo total de la cartera, logrando que la contribución al riesgo de cada activo sea aproximadamente igual. La ventaja de esta lógica es que no hará que toda la cartera se derrumbe porque un activo explote repentinamente.

img


Primero, seleccionar bien los activos para que la diversificación tenga sentido

Para hacer paridad de riesgo, lo primero es elegir los activos que se incluirán. Si los activos no se eligen correctamente, los cálculos posteriores, por más precisos que sean, no servirán de nada.

El pool de activos seleccionados son SPY, XAU, CL y BTC. La elección de estos cuatro tiene lógica: sus movimientos generalmente no son completamente sincronizados. Cuando la economía es buena, las acciones suben; cuando el sentimiento de aversión al riesgo se intensifica, el oro sube; cuando las expectativas de inflación son altas, tanto el petróleo como el oro suben; y el mercado cripto a veces se mueve en la misma dirección que las acciones, y a veces se desacopla por completo. Precisamente porque la correlación entre ellos no es alta, tiene sentido agruparlos para diversificar el riesgo. Si los cuatro activos subieran y bajaran juntos todos los días, la diversificación sería una ilusión y ningún método podría salvarte.

Una vez seleccionados los activos, la siguiente pregunta es: ¿cuánto debería asignarse a cada activo? Esto es lo que realmente necesita calcular la paridad de riesgo.

img


Cómo calcular cuánto asignar a cada activo

La lógica de cálculo de la estrategia se divide en dos pasos.

Primer paso: obtener los datos de velas de los cuatro activos, alineándolos por marca de tiempo. La estrategia utiliza velas de 1 hora (PERIOD_H1) como entrada de datos. Este paso parece simple, pero en realidad, los productos de contratos RWA a veces carecen de datos. Si en un momento dado no hay cotización para SPY, los datos de ese momento se descartan por completo, conservando solo los puntos temporales donde los cuatro activos tienen cotizaciones simultáneamente para los cálculos posteriores.

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])); }

Una vez alineados los datos, se convierten las series de precios de cierre en rendimientos logarítmicos, es decir, ln(precio actual / precio anterior). Se utilizan rendimientos logarítmicos en lugar de cambios porcentuales simples porque tienen la propiedad de aditividad temporal: la acumulación de múltiples períodos es igual al rendimiento logarítmico total, lo que facilita su manejo; además, bajo el supuesto común de que el precio del activo sigue un movimiento geométrico browniano, los rendimientos logarítmicos siguen una distribución normal, compatible con el marco de cálculo de la matriz de covarianza posterior. Cabe señalar que los rendimientos reales de los activos cripto suelen tener colas pesadas, lo que es una desviación de supuesto que debe tenerse en cuenta; la matriz de covarianza puede subestimar el riesgo real en condiciones 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; }

Segundo paso: utilizar estas series de rendimientos para calcular la matriz de covarianza. Simplemente calcular la covarianza histórica promedio es demasiado tosco; aquí se utiliza una ponderación EWMA (media móvil exponencialmente ponderada), que asigna mayor peso a los datos recientes, permitiendo que la matriz de covarianza detecte más rápidamente los cambios en el estado del 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 es el coeficiente de atenuación. La estrategia utiliza por defecto EWMA_LAMBDA = 0.94, un valor que referencia la configuración empírica de RiskMetrics para datos diarios. Es importante señalar que el 0.94 de RiskMetrics está diseñado para datos diarios; la estrategia utiliza datos de 1 hora, que son de mayor frecuencia. Si se desea que la sensibilidad de la matriz de covarianza a los cambios recientes sea consistente con la del 0.94 diario, en teoría sería necesario convertirlo a un valor más cercano a 1. Sin embargo, en la práctica, 0.94 sigue siendo un punto de partida aceptable a nivel horario, ya que representa una configuración donde los datos recientes tienen mayor peso y los históricos decaen más rápido. Se puede ajustar según los resultados reales del backtesting. Cuanto más cercano a 1 sea lambda, más persistente será la influencia de los datos históricos y más lenta será la reacción de la matriz de covarianza a los cambios recientes; cuanto más pequeño sea lambda, más sensible será la estrategia a los cambios del estado del mercado, pero también más propensa a desencadenar reajustes innecesarios debido al ruido a corto plazo.

Después del cálculo, se agrega un término de regularización en la diagonal, con un coeficiente establecido en el 0.1% de la media diagonal (eps = diagMean * 0.001). El coeficiente de 0.001 veces se seleccionó tras pruebas y es suficiente numéricamente para garantizar que la matriz sea definida positiva, mientras que su impacto en la estructura de covarianza es insignificante. También es necesario señalar una simplificación: el enfoque estricto de la covarianza EWMA debería utilizar medias ponderadas para calcular las desviaciones, pero el código utiliza la media aritmética simple de toda la ventana retrospectiva. Dado que los rendimientos promedio de los activos financieros a corto plazo suelen estar cerca de cero, esta simplificación tiene un impacto insignificante en los resultados, pero en escenarios donde la media se desvía significativamente de cero, introduciría un pequeño sesgo.

Una vez que tenemos la matriz de covarianza, el siguiente paso es la resolución real de la paridad de riesgo: encontrar un conjunto de pesos que haga que la contribución al riesgo de cada activo sea aproximadamente igual. Antes de comenzar la iteración, la estrategia ya ha determinado la dirección de cada activo mediante la covarianza de la cartera de volatilidad igual, y los resultados se almacenan en el array signs[] (+1 indica largo, -1 indica corto). Durante todo el proceso de iteración, se utilizan estos signos fijos predefinidos, ajustando solo la magnitud de los pesos, sin cambiar la dirección. Esto se hace por estabilidad de ingeniería, para evitar que los pesos cambien de dirección repetidamente debido a perturbaciones numéricas durante la iteración.

Este problema no tiene solución analítica, por lo que se aproxima mediante iteración. En cada ronda, se calcula la contribución al riesgo actual, se reduce el peso del activo que contribuye demasiado y se aumenta el del que contribuye muy poco, ajustando repetidamente hasta converger.

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; }

El criterio de convergencia es que la suma de los cuadrados de las diferencias en las contribuciones de riesgo de todos los activos sea menor que 1e-12. En ese momento se considera que las contribuciones de riesgo de cada activo están lo suficientemente cerca y se detiene la iteración. El límite máximo de iteraciones se establece en 2000 para evitar bucles infinitos cuando la matriz de covarianza está mal condicionada. En la práctica, suele converger en unos cientos de iteraciones. Si alcanza el límite y aún no converge, significa que hay un problema con los datos de entrada o la matriz de covarianza; en ese caso, la estrategia se degrada a pesos iguales largos para garantizar que el sistema no se quede en vacío.

La contribución de riesgo de cada activo se define como su peso multiplicado por el riesgo marginal, y el resultado puede ser negativo, lo que indica que ese activo está reduciendo la volatilidad global del portafolio.

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; }

Los pesos pueden ser negativos, es decir, vender en corto

La estrategia estándar de paridad de riesgo normalmente solo toma posiciones largas, pero en el mercado de futuros se puede vender en corto, por lo que esta estrategia se extiende para permitir pesos negativos.

La lógica de decisión es la siguiente: primero se calcula un portafolio de referencia de volatilidad igualada — activos de alta volatilidad tienen menor peso, los de baja volatilidad mayor peso — y luego se observa si la covarianza de cada activo con este portafolio de referencia es positiva o negativa. Si la covarianza es negativa, indica que el activo tiende a moverse en dirección opuesta al portafolio en su conjunto; venderlo en corto ayuda a reducir el riesgo global del portafolio, por lo que el peso se establece como negativo, lo que corresponde a abrir una posición corta en el mercado de futuros.

Es necesario aclarar que esto es una aproximación ingenieril, no una solución teórica estándar de paridad de riesgo larga/corta. La paridad de riesgo estricta con largos y cortos requiere una optimización restringida basada en la matriz de covarianza completa, con un costo computacional más alto. Esta aproximación proporciona una dirección razonable en la mayoría de los estados del mercado, pero cuando múltiples activos tienen covarianza negativa simultáneamente con el portafolio de referencia, es necesario verificar específicamente si vender varios activos en corto aún reduce el riesgo del portafolio; no se puede generalizar.

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('[Dirección]', LABELS[i], 'Covarianza con el portafolio de volatilidad igualada:', _N(covWithPortfolio, 8), '→', dir < 0 ? '🔴 Corto (short)' : '🟢 Largo (long)');

Una vez determinada la dirección, se almacena fija en el arreglo signs[] y no cambia durante todo el proceso iterativo. La iteración solo ajusta la magnitud de los pesos, no cambia la dirección. Una vez fijada la dirección, queda un asunto más por manejar: cuánto apalancamiento debe aplicarse al portafolio total.


El apalancamiento no es cuanto más mejor, sino que sigue la volatilidad

La estrategia incorpora un mecanismo de ajuste de apalancamiento cuyo objetivo es controlar la volatilidad total del portafolio alrededor de un nivel preestablecido. Es como conducir un coche: la velocidad objetivo es 60 km/h. En autopista, el camino es bueno y se puede pisar un poco más el acelerador; en ciudad, el tráfico es complejo y se reduce. El mecanismo de apalancamiento de la estrategia es similar: cuando la volatilidad general del mercado es baja, se incrementa el apalancamiento adecuadamente para que el nivel de riesgo del portafolio alcance el objetivo; cuando la volatilidad del mercado es alta, se reduce automáticamente el apalancamiento, contrayendo la exposición.

La estrategia utiliza velas de 1 hora, y como un año tiene exactamente 8760 velas, el coeficiente de anualización se toma directamente como sqrt(8760). Si se usa otro período, este coeficiente debe ajustarse sincrónicamente: para velas de 15 minutos corresponde sqrt(35040), para velas de 4 horas sqrt(2190), y para velas diarias 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); }

La volatilidad anualizada del portafolio dividida por la volatilidad objetivo da el múltiplo de apalancamiento a aplicar, y se establece un límite superior para evitar que el apalancamiento se descontrole en situaciones extremas. Esto no busca maximizar el rendimiento, sino gestionar el presupuesto de riesgo: cuánto riesgo se está dispuesto a asumir a cambio de un retorno, algo decidido de antemano, no a la deriva del mercado.

Una vez calculado el apalancamiento, el portafolio puede establecerse. Al mismo tiempo, la estrategia ajusta automáticamente el intervalo de sondeo del bucle principal según la volatilidad actual: cuanto mayor es la volatilidad, más rápido se actualiza; cuando la volatilidad es baja, se ralentiza el ritmo para reducir cálculos innecesarios y fricciones comerciales.

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

Cuándo rebalancear

El mercado se mueve cada día y los pesos se desvían continuamente del diseño original. Si no se controla, con el tiempo el riesgo real que soporta el portafolio se alejará considerablemente del esperado. La estrategia establece dos condiciones para activar el rebalanceo: primero, de forma periódica, cada cierto número fijo de horas se fuerzan a recalcular los pesos; segundo, cuando la deriva es excesiva, es decir, si la desviación del peso real de un activo respecto al peso objetivo supera un umbral, o si la dirección larga/corta se invierte, se dispara inmediatamente el rebalanceo, sin esperar al siguiente período programado.

Al calcular la deriva relativa, el denominador es el valor absoluto del peso anterior. Cuando el peso de un activo se reduce al mínimo (cerca de cero), la deriva relativa se amplifica, lo que puede provocar rebalanceos frecuentes. La estrategia se protege contra esto: cuando lastWeights[i] es cero, se omite la verificación de deriva para evitar falsas activaciones por división entre cero.

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; } } }

Una vez que se activa el rebalanceo, la estrategia calcula el monto nominal objetivo de cada activo; los valores positivos representan posiciones largas y los negativos, posiciones cortas. Luego compara con la posición actual para decidir si aumentar, reducir o cambiar de dirección. Al cambiar de dirección, primero se cierra la posición en la dirección opuesta y luego se abre la nueva dirección, evitando mantener simultáneamente posiciones largas y cortas.

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

De esta manera, no se generan comisiones excesivas por operaciones frecuentes ni la cartera se desvía del diseño original durante períodos prolongados. En condiciones normales, el mecanismo de rebalanceo es suficiente para afrontar la mayoría de los cambios del mercado. Pero a veces el mercado no es normal, por lo que se necesita un seguro adicional.


Además, un cortafuegos de emergencia

Además del rebalanceo normal, la estrategia cuenta con un mecanismo de reducción de emergencia. En cada ciclo principal se revisan todas las posiciones actuales, comparándolas con el precio registrado anteriormente, para ver cuánto ha sido el movimiento adverso en cada dirección. Si una posición larga cae bruscamente o una posición corta sube bruscamente más del 5%, la estrategia reduce automáticamente la posición a la mitad, conteniendo primero las pérdidas sin esperar al siguiente rebalanceo.

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

En modo real, se llama a la interfaz de cierre del exchange; en modo de simulación, se actualiza el margen y el efectivo en el estado local, liberando el margen correspondiente en proporción a la posición, calculando las ganancias/pérdidas actuales y registrando la operación.

Aquí hay un detalle de diseño que debe explicarse: una vez activada la reducción de emergencia, el precio de referencia no se restablece de inmediato; en la siguiente comprobación sigue siendo el precio anterior a la activación. Esto significa que en un mercado que continúa moviéndose desfavorablemente, el mecanismo se activará repetidamente en cada ciclo, reduciendo progresivamente la posición hasta agotarla o hasta que el siguiente rebalanceo normal restablezca el precio de referencia. Este diseño es intencional: en movimientos extremos de una sola dirección, la reducción continua controla las pérdidas mejor que una reducción única; sin embargo, como efecto secundario, si el precio supera brevemente el umbral y luego rebota rápidamente, se podría perder el rebote por una reducción excesiva. En mercados normales, este mecanismo casi nunca se activa, pero al estar presente, al menos no se aguantará hasta el final en eventos de cisne negro.


¿Cómo se ve en ejecución?

Una vez que la estrategia se ejecuta en la plataforma, el tablero muestra en tiempo real si cada activo está en largo o corto, su peso respectivo, el apalancamiento actual, la volatilidad anualizada estimada del conjunto de la cartera y la matriz de correlación entre los cuatro activos. Las ganancias/pérdidas flotantes se actualizan cada minuto, y el núcleo de la estrategia cambia automáticamente la frecuencia de sondeo según la volatilidad del mercado.

Esta actualización cada minuto no se logra mediante subprocesos múltiples, sino que dentro del período de espera del bucle principal se anida un subbucle que se despierta cada minuto para obtener los últimos precios, actualizar las ganancias/pérdidas flotantes y la curva de patrimonio neto. Una vez que se acumula el intervalo de sondeo de la estrategia, se sale del subbucle y se pasa al siguiente cálculo de la estrategia. Toda la estrategia es de un solo hilo, sin riesgos de concurrencia.

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

Además, la estrategia admite un modo de simulación que permite ejecutar toda la lógica y ajustar parámetros sin usar fondos reales, confirmando que el comportamiento sea el esperado antes de considerar cambiar al modo real. Con esta configuración, se ejecutó la simulación durante un tiempo; veamos los resultados reales.


Resultados de la simulación

Durante el período de prueba, la estrategia se encuentra temporalmente en ganancias. Dirección de las posiciones: BTC, XAU y SPY en largo; CL (petróleo crudo) en corto. Justo durante este tiempo, se dieron señales de distensión en la situación entre EE.UU. e Irán, la prima de riesgo geopolítico disminuyó y el precio del petróleo crudo cayó de forma notable, siendo la posición corta en crudo la principal fuente de ganancias. La tendencia del mercado durante este período fue favorable para la estrategia, pero no significa que siempre será así en el futuro. De hecho, la estrategia aún tiene varios puntos no resueltos; no sería honesto no aclararlos.

img


Aspectos no resueltos

Durante el desarrollo de esta estrategia, varios problemas no se han resuelto por completo.

Primero, la liquidez de los contratos RWA es mucho menor que la de BTC. Los activos como SPY, XAU y CL aún son muy nuevos en la cadena; el deslizamiento y la profundidad del libro de órdenes son desconocidos, un problema que no se percibe en la simulación pero que se manifestará en la operativa real.

Segundo, la estrategia depende de que los activos mantengan cierta diversificación. Sin embargo, en momentos de pánico extremo en el mercado, la correlación entre los activos de riesgo tiende a aumentar drásticamente, reduciendo significativamente el efecto de diversificación justo cuando más se necesita protección.

Tercero, los activos tradicionales tienen períodos sin negociación, durante los cuales los precios apenas se mueven, mientras que BTC fluctúa las 24 horas. Esto provoca que la matriz de covarianza subestime la correlación real entre los activos: después del cierre de los mercados estadounidenses, BTC sigue moviéndose sin datos correspondientes de SPY; cuando los mercados tradicionales abren, el juicio de la estrategia sobre la correlación ya puede estar desactualizado.

Cuarto, los datos históricos son limitados, por lo que la estabilidad de la matriz de covarianza en horizontes cortos es dudosa. Parámetros como el coeficiente de decaimiento EWMA, la volatilidad objetivo y el umbral de rebalanceo son valores empíricos, no validados rigurosamente. Para la decisión de ir corto, se utiliza el signo de covarianza con una cartera de referencia de igual volatilidad; esto es una aproximación de ingeniería. Cuando varios activos tienen covarianza negativa simultáneamente con la cartera de referencia, si ir corto en todos ellos realmente reduce el riesgo de la cartera debe verificarse caso por caso, no puede aplicarse directamente. Los activos cripto tienen características de cola pesada; la distribución real de rendimientos se desvía de la normal. En condiciones extremas, la matriz de covarianza subestimará el riesgo, un sesgo de supuesto que debe aceptarse al usar este marco.

Quinto, en el entorno de trading real, al cambiar de dirección, tras emitir la orden de cierre, la estrategia espera un tiempo fijo antes de continuar con la siguiente apertura, sin esperar la confirmación de la ejecución. Cuando la respuesta del exchange es lenta o la latencia de red es alta, existe el riesgo de abrir una nueva posición antes de que la anterior se haya cerrado completamente. Como el trading simulado no implica ejecución real, este problema no se percibe. Antes de pasar a trading real, es necesario evaluar si se debe ajustar el tiempo de espera según la velocidad de respuesta del exchange específico.

Estos problemas no se detectan simplemente ejecutando el simulacro; se necesita un modelado más detallado y una deducción teórica, verificando cuidadosamente cada supuesto, para saber si esta lógica realmente se sostiene en el mercado cripto.


Final

La motivación detrás de esta estrategia es simple: en el mercado bajista de criptomonedas, los contratos RWA justo completan el panorama de las clases de activos. Las finanzas tradicionales tienen décadas de teoría de asignación de activos acumulada. Juntar ambas cosas vale la pena intentarlo. El código está completo, la lógica es transparente y los parámetros se pueden ajustar. Pero, al fin y al cabo, esto es solo un punto de partida; aún falta mucho para una estrategia de asignación de activos que realmente pueda resistir la prueba del trading real. Si tienes mejores ideas, eres bienvenido a colaborar para mejorarla.

El contenido anterior solo documenta el proceso de exploración de la estrategia y no constituye ningún consejo de inversión. El trading de contratos conlleva riesgos significativos; el rendimiento en simulacro no representa los resultados reales. Antes de involucrar fondos reales, asegúrate de comprender completamente los riesgos asociados.

Código fuente de la estrategia: Estrategia de paridad de riesgo de activos RWA

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