En 2014 un grupo de investigación tomó una foto de un panda, le añadió una capa de ruido tan tenue que el ojo humano no percibe cambio alguno, y un clasificador de imágenes de última generación que había etiquetado el original como “panda” con un 58% de confianza ahora etiquetaba la imagen manipulada como gibón con un 99% de confianza. El ruido no era aleatorio. Estaba fabricado — cada píxel empujado en la dirección exacta que llevaba al modelo hacia “gibón”.
Esa imagen lanzó todo un campo. La lección inquietante: un modelo puede tener un 97% de precisión y ser 100% rompible, porque una alta precisión sobre entradas naturales no dice nada sobre el comportamiento ante entradas que un adversario diseña. Y aquí viene la parte que debería quitarle el sueño a un quant — los mercados están llenos de adversarios capaces de diseñar tus entradas. A un modelo de trading no le das píxeles. Le das variables fabricadas: momentum, volatilidad realizada, spread bid–ask, desequilibrio del flujo de órdenes, RSI. Y cada una de esas variables puede ser movida por alguien dispuesto a operar contra ti.
Esta lección reformula todo el arsenal de ejemplos adversariales — FGSM, PGD, la geometría L-p, la explicación de la linealidad — para un modelo de trading cuyos “píxeles” son variables del libro de órdenes y cuyo “ruido imperceptible” son unos pocos puntos básicos de flujo colocado estratégicamente. Una vez que ves tu señal como una función que un oponente puede sondear, la robustez deja de ser una curiosidad de la investigación en visión y se convierte en lo mínimo exigible.
Qué es un ejemplo adversarial
Before you read — take a guess
Un clasificador tiene un 98% de precisión sobre datos de mercado reales. Un atacante añade una perturbación que ningún revisor humano marcaría como inusual y el modelo voltea su decisión. ¿Qué te dice ese 98% de precisión sobre este ataque?
Analogía. Un cajero de banco puede verificar mil firmas reales sin un solo fallo y aun así dejarse engañar por un falsificador que estudió exactamente cómo comprueba las firmas el cajero. El 99,9% de precisión del cajero sobre firmas honestas es irrelevante para el falsificador, que no muestrea de la distribución honesta — busca la única firma que se cuela. Un ejemplo adversarial es la firma falsificada, hallada por alguien que conoce los puntos débiles del modelo.
Definición. Sea un modelo que produce una decisión a partir de un vector de variables de entrada mediante una función de puntuación y una pérdida que mide cuánto se equivoca respecto a la etiqueta verdadera . Un ejemplo adversarial es una entrada perturbada donde la perturbación es pequeña bajo alguna norma elegida y aun así maximiza la pérdida (o voltea la salida). Formalmente, el atacante resuelve
La restricción es el presupuesto de perturbación: debe ser minúsculo bajo la norma , acotado por . “Minúsculo” es lo que lo hace adversarial en lugar de ser simplemente una entrada distinta — se supone que el cambio es imperceptible (en visión) o barato (en mercados).
Reformulación para mercados. Sustituye los píxeles por variables fabricadas. Un modelo de trading podría puntuar un vector de variables
Una señal de largo se dispara cuando la puntuación supera una frontera. Un ejemplo adversarial aquí es un empujón fabricado a esas variables — pongamos momentum 0,3 desviaciones típicas a la baja, desequilibrio con el signo cambiado, spread algo más ancho — diseñado para que el modelo que quería ponerse largo ahora se ponga corto. Lo crucial: no perturbas las variables directamente; perturbas el libro de órdenes lo justo para que las variables fabricadas calculadas a partir de él se muevan donde quieres. El ataque vive en el mercado; el daño aterriza en el vector de variables.
Ejemplo resuelto. Supón que un largo se dispara cuando la puntuación es al menos 0,60. El vector de variables honesto de hoy puntúa 0,62 — un largo cómodo. Un atacante calcula que desplazar cuatro variables con un presupuesto combinado de 0,05 (bajo la norma relevante) baja la puntuación a 0,55. Eso está por debajo de 0,60, así que el modelo ahora voltea a corto. La posición se invierte con una perturbación que un responsable de riesgos mirando las variables a ojo quizá ni note: cada variable se movió una pizca, ninguna parece anómala, y sin embargo el agregado apuntaba con precisión a la frontera.
Estar fuera de la distribución es justamente la clave
La razón por la que los backtests nunca te avisan de esto es que los backtests reproducen historia natural — entradas que el mercado produjo de verdad. Las entradas adversariales son, por construcción, las que la historia no produjo porque nadie te atacaba todavía. Un Sharpe fuera de muestra impecable mide el comportamiento sobre la distribución honesta y no dice nada sobre la adversarial. La robustez es un eje aparte que debes probar a propósito.
Cuándo usarlo
Echa mano de la lente de los ejemplos adversariales siempre que algún otro agente a la vez observe tu comportamiento y se beneficie de voltearlo — una contraparte que se opone a tu flujo, un HFT depredador que caza tus stops, un rival que aplica ingeniería inversa a tu señal. Si las entradas de tu modelo se calculan a partir de datos públicos de mercado que cualquiera puede mover operando, asume que las entradas son atacables y pregúntate cuán barato resulta voltear tu decisión.
Fija la definición.
Pick the right option for each blank, then check.
Un ejemplo adversarial es una perturbación que es y aun así está diseñada para .
La explicación de la linealidad — por qué los modelos en alta dimensión son frágiles
Before you read — take a guess
Un quant argumenta: 'Mi modelo es básicamente una puntuación lineal sobre las variables, así que es simple y por tanto está a salvo de estos exóticos ataques adversariales.' ¿Cómo deberías reaccionar?
Analogía. Imagina una votación donde 100 jueces tienen cada uno un voto minúsculo. Soborna a cada juez con un solo dólar — trivial, casi imperceptible por juez — y habrás gastado $100 de influencia en total. En una votación reñida, $100 de empujones coordinados voltean el resultado aunque ningún juez individual fue comprado por una suma significativa. La alta dimensionalidad es tener muchos jueces: montones de variables, cada una barata de empujar, que suman un empellón decisivo. Esa es la maldición del modelo lineal.
Definición. Para una puntuación lineal , perturbar la entrada en cambia la puntuación exactamente en
Bajo un presupuesto — es decir, cada variable puede moverse como mucho , o sea, el mayor cambio en una sola variable está acotado (esta es la restricción de “norma del máximo”) — el desplazamiento peor caso de la puntuación se logra empujando cada variable el completo en el signo de su peso:
Mira fijamente ese resultado. El daño peor caso escala con , la suma de los pesos absolutos — que crece con el número de variables . Duplica la dimensión y (para pesos típicos similares) aproximadamente duplicas el apalancamiento del atacante, con el mismo presupuesto por variable . La alta dimensionalidad, lo que hace poderosos a los modelos modernos, es también lo que los hace frágiles.
Ejemplo resuelto. Toma un modelo con variables, un peso absoluto medio de , y un presupuesto de (cada variable puede moverse una parte por cien de su rango escalado). El desplazamiento peor caso de la puntuación es
Un desplazamiento de la puntuación de 0,1 a partir de un empujón por variable de tan solo 0,01 — una amplificación de 10x, cortesía de la dimensión. Si la frontera de decisión se sitúa a menos de 0,1 de la puntuación actual (como suele ocurrir cerca de un umbral de señal), eso basta para voltear la operación. Ahora escala a variables con el mismo presupuesto por variable y el desplazamiento peor caso es — diez veces mayor, gratis.
| Variables | Presupuesto por variable | medio | Desplazamiento peor caso |
|---|---|---|---|
| 10 | 0,01 | 0,1 | 0,01 |
| 100 | 0,01 | 0,1 | 0,10 |
| 1.000 | 0,01 | 0,1 | 1,00 |
| 10.000 | 0,01 | 0,1 | 10,0 |
'Mi modelo es básicamente lineal, así que está a salvo' es exactamente lo contrario
Esta es la intuición más peligrosa de todo el tema. La no linealidad no es lo que hace vulnerables a los modelos — la linealidad local sí lo es. Un modelo casi lineal en alta dimensión le entrega al atacante un presupuesto limpio y aditivo: empuja muchas variables un poco, suma los empujones, cruza la frontera. Peor aún, como la dirección del gradiente es estable y aproximadamente compartida entre modelos similares, un ataque fabricado sobre un modelo casi lineal se transfiere a otros. La linealidad es por qué los ejemplos adversariales son baratos y portables.
Cuándo usarlo
Usa el argumento de la linealidad para triar tu exposición: cuantas más variables consuma tu modelo y más lineal sea su superficie de decisión cerca del umbral, mayor es el apalancamiento del atacante. También te apunta a una defensa parcial — reducir (modelos más dispersos, más regularizados, con menos variables) acota directamente el daño peor caso. Échale mano cada vez que te tiente añadir “solo unas variables más” a una señal que se sitúa cerca de una frontera.
Con un presupuesto por variable épsilon fijo, ¿pasar de 100 variables a 400 variables hace a un modelo casi lineal MÁS o MENOS vulnerable, y aproximadamente en qué medida?
Pista. El desplazamiento peor caso de la puntuación es épsilon por la suma de los pesos absolutos, que escala con el número de variables.
Más vulnerable — aproximadamente 4x. El desplazamiento peor caso de la puntuación es . Manteniendo fijo el peso absoluto típico, cuadruplicar el número de variables de 100 a 400 aproximadamente cuadruplica , así que el apalancamiento peor caso del atacante con el mismo presupuesto por variable crece unas cuatro veces. Añadir variables expande la expresividad y la superficie de ataque de un mismo golpe — la dimensionalidad es amiga del adversario.
FGSM — el método del signo del gradiente rápido
Before you read — take a guess
El método del signo del gradiente rápido (FGSM) construye un ataque en un único paso. ¿En qué dirección se empuja cada variable?
Analogía. Estás en el fondo de un valle (pérdida baja = decisión correcta) y quieres salir lo más rápido posible con un paso de longitud fija en cada dirección de la brújula. FGSM mira la pendiente bajo tus pies y, en cada dirección, da el paso completo permitido cuesta arriba. No le importa cuán empinada es cada dirección — solo qué dirección sube — porque el presupuesto premia mover cada coordenada la cantidad completa. Es la escapada codiciosa de un solo disparo fuera del valle.
Definición. El método del signo del gradiente rápido (FGSM) construye la perturbación en un único paso de gradiente:
Aquí es el gradiente de la pérdida respecto a la entrada (no a los pesos — estamos atacando la entrada, manteniendo el modelo fijo), y mapea cada componente a , , o . Multiplicar por gasta el presupuesto completo por variable en cada coordenada. Como usa el signo en lugar de la magnitud cruda, el resultado aterriza exactamente en la esquina de la bola — el punto lineal peor caso que derivamos arriba. Una pasada hacia adelante, una pasada hacia atrás, listo. Ese es el “rápido” de FGSM.
Ejemplo resuelto (juguete de 3 variables). Un modelo lineal puntúa con pesos y se pone largo cuando . Hoy , así que
El atacante quiere voltear a corto, es decir, empujar la puntuación hacia abajo. Para una puntuación lineal, el gradiente de la puntuación respecto a la entrada es simplemente el vector de pesos, . Para disminuir la puntuación al máximo bajo un presupuesto de , empuja cada variable en contra del signo de su peso:
La entrada perturbada es , y la nueva puntuación es
Todavía positiva — por poco. Sube el presupuesto a : , , y
Un empujón por variable de 0,2 — dentro del ruido del rango normal de una sola variable — arrastra la puntuación de a y voltea la posición. Fíjate en que la caída total es exactamente , coincidiendo con . La fórmula de la linealidad lo predijo al céntimo.
Sube épsilon: FGSM empuja cada variable épsilon por el signo de su peso — exactamente por la propia sensibilidad del modelo — y arrastra la puntuación al otro lado de la frontera, volteando LARGO a CORTO mientras las barras apenas se mueven. Cambia a ruido aleatorio del mismo tamaño L-infinito y la decisión suele sobrevivir. El peligro no es el tamaño del cambio; es que el atacante lo apunta por el gradiente.
'FGSM es un cambio minúsculo, así que es inofensivo'
Toda la trampa está en que pequeño no significa seguro. La perturbación es pequeña por variable y pequeña bajo la norma , y sin embargo, como está perfectamente alineada con la sensibilidad del modelo, produce un cambio decisivo en la decisión. Un control de riesgos que solo marca entradas “de aspecto inusual” dejará pasar el ataque sin más — cada variable sigue dentro de un rango plausible. La magnitud no es la alarma correcta; la alineación con el gradiente sí lo es.
Cuándo usarlo
FGSM es la primera sonda barata — un paso de gradiente — para cribar si un modelo es siquiera adversarialmente frágil. Si un único paso de FGSM voltea tu decisión con un minúsculo, tienes un problema serio y no necesitas un ataque más sofisticado para demostrarlo. Úsalo como prueba rápida de humo de red team y como el motor por paso dentro del ataque iterativo más fuerte de abajo.
Clasifica cada afirmación según describa FGSM con precisión o sea una idea errónea sobre él.
Place each item in the right group.
- Perturba cada variable con el presupuesto completo en el signo del gradiente
- Escala cada variable por la magnitud cruda del gradiente
- Usa un paso de gradiente (una pasada hacia adelante + una hacia atrás)
- Necesita muchas iteraciones para construir un único ejemplo
- Aterriza en una esquina de la bola L-infinito
- Como el cambio es pequeño por variable, no puede voltear la decisión
PGD — descenso de gradiente proyectado, el ataque de primer orden más fuerte
Before you read — take a guess
El descenso de gradiente proyectado (PGD) refuerza a FGSM. ¿Cuál es el papel del paso de 'proyección' en cada iteración?
Analogía. FGSM es un único salto gigante hacia una pérdida más alta y confía en que el terreno era recto. Pero la superficie de pérdida se curva — lo que parecía cuesta arriba al inicio puede desviarse. PGD es el montañero paciente: da un paso pequeño cuesta arriba, mira de nuevo, da otro paso pequeño, reapunta, repite — y cuando un paso se saldría de la región vallada (el presupuesto), retrocede hasta la valla. Muchos pequeños pasos reapuntados siguen las curvas del terreno mucho mejor que un único salto a ciegas, así que PGD alcanza de forma fiable una pérdida más alta (una clasificación errónea más segura) que FGSM con el mismo presupuesto.
Definición. El descenso de gradiente proyectado (PGD) es la generalización iterada y proyectada de FGSM. Partiendo de (a menudo con una pequeña patada aleatoria), repite para :
Aquí es un pequeño tamaño de paso (menor que ), cada paso es un movimiento de gradiente con signo al estilo FGSM, y proyecta el resultado de vuelta a la bola de radio alrededor de la entrada original — para la bola de norma del máximo esta proyección es simplemente recortar cada coordenada para que se quede dentro de de su valor original. Como recalcula el gradiente en cada nuevo punto, PGD se adapta a la curvatura que un único paso de FGSM ignora. Se considera de forma generalizada el ataque de primer orden más fuerte — el adversario de referencia que se espera que las defensas sobrevivan.
Ejemplo resuelto (intuición de la ganancia). Toma el modelo de 3 variables de arriba cerca de la frontera. Un único paso de FGSM con podría dejar la puntuación en, digamos, — fallando por poco al voltear. PGD con el mismo presupuesto total pero tamaño de paso a lo largo de 5 iteraciones reapunta tras cada pequeño movimiento: si el gradiente local cambia (porque una variable alcanzó su recorte y otra ahora importa más), PGD redirige el presupuesto restante hacia las variables que aún mueven la puntuación, y aterriza en, digamos, — un volteo exitoso que el salto de un disparo se perdió. Mismo presupuesto, gasto más inteligente, ataque más fuerte. (Para un modelo puramente lineal FGSM ya es óptimo; la ventaja de PGD aparece en cuanto la superficie de decisión se curva, lo que hace cualquier modelo no lineal o cualquier modelo con recorte/interacciones de variables.)
| Propiedad | FGSM | PGD |
|---|---|---|
| Pasos | 1 | muchos (p. ej. 10–100) |
| Regla por paso | presupuesto completo en el signo del gradiente | paso pequeño en el signo del gradiente |
| Imposición del presupuesto | un disparo, aterriza en una esquina de la bola | proyecta / recorta de vuelta a la bola en cada paso |
| ¿Sigue la curvatura? | no (un salto a ciegas) | sí (reapunta en cada paso) |
| Fuerza | línea base débil | ataque de primer orden más fuerte |
| Coste de cómputo | el más barato (1 gradiente) | mayor (un gradiente por paso) |
| Mejor uso | prueba rápida de humo de fragilidad | evaluación rigurosa de robustez |
Evalúa contra PGD, criba con FGSM
Un modelo puede parecer robusto frente a FGSM y aun así desmoronarse bajo PGD — sobrevivir a un único salto a ciegas dice poco sobre sobrevivir a un escalador paciente que reapunta. Así que la afirmación honesta de robustez siempre se enuncia contra un ataque fuerte: “robusto frente a PGD con presupuesto y pasos”. Usa FGSM para hallar agujeros obvios de forma barata; usa PGD (múltiples reinicios, muchos pasos) para certificar que no solo venciste al débil.
Cuándo usarlo
Usa PGD siempre que de verdad quieras medir la robustez en lugar de solo hacerle una prueba de humo — es el adversario de referencia para estresar la superficie de decisión de un modelo de trading y (en las próximas lecciones) el bucle interno del entrenamiento adversarial. Si una defensa solo reporta números de FGSM, trata la afirmación de robustez como no demostrada: el éxito frente a ataques débiles es la forma clásica de sobrevalorar la robustez.
Captura la iteración de PGD en palabras.
Pick the right option for each blank, then check.
PGD da repetidamente un , luego tras cada paso, lo que le permite .
Ejemplos adversariales en mercados — la amenaza realista
Before you read — take a guess
En el escenario de visión el atacante edita píxeles directamente. En un mercado en vivo, ¿cómo mueve realmente un adversario las variables de entrada de TU modelo?
Analogía. El atacante de visión tiene Photoshop y edita la imagen. El atacante de mercado tiene una cuenta de trading y edita el mercado — y tus variables se calculan a partir de ese mercado, así que editar el mercado edita tus variables de forma indirecta. Cotizar y cancelar un muro de órdenes (spoofing) inclina el desequilibrio del flujo de órdenes que lee tu modelo; una ráfaga de operaciones tipo wash (pintar la cinta) dobla el momentum de horizonte corto que lee. Nunca tocan tu código. Mueven el mundo que tu código mide.
Definición — el presupuesto se vuelve dólares. En visión, es un tope de intensidad de píxel y la restricción mantiene la imagen con aspecto sin cambios. En mercados la perturbación es un cambio en tus variables inducido al operar, y el presupuesto ya no es “imperceptible” — es cuánto capital e impacto de mercado está dispuesto a gastar el atacante para doblegar esas variables. La optimización se convierte en:
La bola se sustituye por una bola de coste moldeada por el impacto de mercado y las realidades de ejecución — mover el spread es barato, mover un desequilibrio profundo y líquido es caro — pero la geometría es la misma: un empujón pequeño y bien apuntado por tu gradiente voltea tu decisión.
Ejemplo resuelto. Una mesa depredadora sabe (o adivina) que operas una señal de momentum que se pone larga cuando el momentum del retorno a 1 minuto supera un umbral. Tu stop se sitúa justo por debajo. Estiman que presionar $2 millones de flujo vendedor agresivo durante 90 segundos empujará el momentum de horizonte corto hacia abajo lo suficiente para (a) voltear tu modelo de largo a plano y (b) saltar tu stop. Si saltar tu stop les permite recomprarte $3 millones de inventario a mejor precio — una ganancia de $2,5M contra un coste de $2M — el ataque tiene valor esperado positivo para ellos. Tu — el movimiento fabricado en tu variable de momentum — fue comprado por $2M, y cruzó tu frontera. Eso es un ejemplo adversarial con una cuenta de P&L adjunta.
Transferibilidad — la amenaza de caja negra. Los atacantes normalmente no tienen tu modelo exacto. No lo necesitan. Como los modelos casi lineales comparten direcciones de gradiente (la explicación de la linealidad otra vez), un ejemplo adversarial fabricado sobre un modelo sustituto — una señal de momentum/desequilibrio plausible que el atacante construye él mismo — a menudo se transfiere y voltea tu modelo también. Así que un competidor puede hacerte red team sin ver jamás tus pesos: ataca su propia conjetura razonable de tu señal, y el mismo flujo tiende a voltear lo real.
Tu stop-loss es un objetivo adversarial
La reformulación más incómoda: un stop-loss es una frontera de decisión conocida y explotable. Cualquiera que pueda inferir aproximadamente dónde se agrupan tus stops tiene un objetivo, y el coste de empujar el precio hasta ese grupo es su . La “caza de stops” no es folclore — es un ataque adversarial sobre un modelo (tu regla de riesgo) cuya frontera el atacante sometió a ingeniería inversa. La defensa es hacer la frontera incierta y no rentable de alcanzar, no fingir que nadie está mirando.
Cuándo usarlo
Piensa en dólares-como- siempre que evalúes la exposición de una señal en vivo: estima cuánto capital le costaría a un adversario mover cada variable de entrada al otro lado de tu frontera, y pregúntate si la recompensa de voltear tu señal (disparar tu stop, oponerse a tu flujo, adelantarse a tus ejecuciones) supera ese coste. Si voltearte es barato en relación con lo que les reporta, eres un objetivo — no porque tu backtest sea malo, sino porque tu frontera es predecible y rentable de empujar. Robustece las señales cuyas fronteras se sitúan de forma barata al alcance de un adversario.
Pick a term, then click its definition.
Repaso
Entraste pensando que un modelo con un 98% de precisión era un modelo seguro y saliste sabiendo que la precisión y la robustez son ejes casi independientes. El arco: un ejemplo adversarial es un cambio de entrada pequeño-bajo-una-norma que maximiza la pérdida; la explicación de la linealidad dice que los modelos casi lineales en alta dimensión son frágiles porque un minúsculo presupuesto por variable suma un gran desplazamiento de la puntuación (, que crece con la dimensión); FGSM construye tal ejemplo en un paso de gradiente con signo; PGD itera y proyecta para hallar uno más fuerte y es el adversario de referencia; y en mercados todo el aparato reaparece con medido en dólares — un oponente que opera para doblegar tus variables, cuyos ataques se transfieren desde un sustituto, y cuya frontera favorita es tu stop-loss.
Big picture
Ejemplos adversariales en modelos de trading
- Ejemplos adversariales
- Qué es
- Pequeño bajo una norma L-p (presupuesto épsilon)
- Maximiza la pérdida / voltea la salida
- Fuera de distribución: los backtests callan
- Mercados: perturba el libro de órdenes, mueve las variables
- Explicación de la linealidad
- Desplazamiento de la puntuación = w · delta
- Peor caso = épsilon × suma de |w_i|
- Crece con el número de variables d
- Por qué los ataques se transfieren
- FGSM
- Un paso de gradiente con signo
- Presupuesto completo por variable
- Aterriza en una esquina de la bola L-infinito
- Prueba rápida de humo de fragilidad
- PGD
- Itera pequeños pasos + proyecta a la bola
- Reapunta con la curvatura
- Ataque de primer orden más fuerte
- La referencia contra la que evaluar
- En mercados
- Épsilon se vuelve un presupuesto de dólares / impacto
- Falsear el desequilibrio, pintar la cinta
- Transferibilidad → ataques de caja negra
- Caza de stops = ataque sobre tu frontera
- Qué es
Repaso mixto: ¿sobrevive tu modelo a una pelea?
Una puntuación de trading lineal usa 100 variables con peso absoluto medio 0,1. Un atacante tiene un presupuesto L-infinito de 0,01 por variable. ¿Cuál es el desplazamiento peor caso de la puntuación, y por qué importa?
Check your answer to continue.