Saltar al contenido
Lecciones de Finanzas

Deep Learning para Datos de Mercado

Atención y Transformers para mercados

La autoatención como 'quién mira a quién' — atención por producto escalar escalado, por qué un enlace directo de un salto a través del tiempo gana a un estado oculto que decae, atención multicabeza y codificación posicional, transformers sobre el libro de órdenes (el linaje DeepLOB) y el hambre de datos que los castiga en muestras pequeñas.

18 min Actualizado 19 jun 2026

A estas alturas ya conocéis dos formas de hacer que una red recuerde el pasado. La RNN/LSTM/GRU enhebra un único estado oculto a través del tiempo como un juego del teléfono — cada paso le susurra al siguiente, y los gradientes se desvanecen a lo largo de la cadena (el problema del gradiente que se desvanece de la lección 2). La Red Convolucional Temporal, en cambio, apila convoluciones dilatadas y causales para ensanchar un campo receptivo fijo (lección 3) — rápida y paralela, pero el horizonte es el que cableaste a fuego en el esquema de dilatación.

La atención es la tercera respuesta, y es casi insultantemente directa: no enhebres memoria ni ensanches una ventana — simplemente deja que cada paso temporal mire directamente a cada otro paso temporal y decida por sí mismo quién importa. Sin cadena por la que decaer. Sin ventana fija que se quede pequeña. El paso 200 puede leer el paso 1 en un solo salto. Ese es todo el truco, y el Transformer es lo que obtienes cuando construyes una arquitectura entera sin nada más que ese truco.

Vamos a ganárnoslo.

Autoatención: quién mira a quién

Before you read — take a guess

Antes de definir nada: en la autoatención, ¿qué calcula realmente cada posición de salida?

La analogía. Imaginad una reunión de la mesa de trading. Tú (la consulta) haces una pregunta: “¿qué es relevante para saber hacia dónde va el precio a continuación?”. Cada analista de la sala tiene una etiqueta con su nombre (una clave) que describe lo que sabe, y un informe (un valor) que entregará. Echas un vistazo a cada etiqueta, puntúas lo bien que encaja cada una con tu pregunta, conviertes esas puntuaciones en porcentajes de atención y sales con una mezcla de informes ponderada por relevancia. La autoatención es esa reunión, ejecutada para cada paso temporal a la vez, con cada paso haciendo de analista y de preguntón.

Definición precisa. Cada token de entrada (digamos, el vector de características en el instante tt) se proyecta linealmente en tres vectores: una consulta qtq_t, una clave ktk_t y un valor vtv_t, mediante matrices aprendidas WQ,WK,WVW_Q, W_K, W_V. Apílalos en matrices Q,K,VQ, K, V. La atención por producto escalar escalado es:

Atencioˊn(Q,K,V)=softmax ⁣(QKdk)V\text{Atención}(Q,K,V)=\text{softmax}\!\left(\frac{QK^\top}{\sqrt{d_k}}\right)V

La matriz QKQK^\top contiene todos los productos escalares consulta-clave (las puntuaciones de relevancia en bruto). Dividir por dk\sqrt{d_k} — donde dkd_k es la dimensión de las claves — reescala esas puntuaciones. El softmax convierte cada fila en una distribución de probabilidad que suma 1, y multiplicar por VV produce la media ponderada de los vectores de valor.

¿Por qué dk\sqrt{d_k}? Si qq y kk tienen entradas aproximadamente independientes de varianza unitaria, su producto escalar qk=i=1dkqikiq\cdot k=\sum_{i=1}^{d_k} q_i k_i tiene una varianza de aproximadamente dkd_k — así que crece con la dimensión. Puntuaciones grandes empujan el softmax a la saturación: un peso se va a ~1, el resto a ~0, y el gradiente a través del softmax casi se desvanece. Dividir por dk\sqrt{d_k} devuelve la varianza a aproximadamente 1, manteniendo el softmax en su régimen sensible y bien condicionado.

Ejemplo resuelto — un softmax diminuto de 3 claves. Una consulta atiende a tres claves con dk=4d_k = 4, así que dk=2\sqrt{d_k}=2. Supongamos que los productos escalares en bruto son qk1=8q\cdot k_1 = 8, qk2=4q\cdot k_2 = 4, qk3=2q\cdot k_3 = 2.

Escala cada uno por dk=2\sqrt{d_k}=2: las puntuaciones escaladas son 4, 2, 14,\ 2,\ 1.

Exponencia: e4=54,60e^{4}=54{,}60, e2=7,389e^{2}=7{,}389, e1=2,718e^{1}=2{,}718. Suma =64,71=64{,}71.

Normaliza: w1=54,60/64,71=0,844w_1 = 54{,}60/64{,}71 = 0{,}844, w2=7,389/64,71=0,114w_2 = 7{,}389/64{,}71 = 0{,}114, w3=2,718/64,71=0,042w_3 = 2{,}718/64{,}71 = 0{,}042 (suma 1,000).

Ahora mezcla los vectores de valor. Digamos v1=[1,0]v_1=[1,0], v2=[0,1]v_2=[0,1], v3=[1,1]v_3=[1,1]. La salida es

0,844[1,0]+0,114[0,1]+0,042[1,1]=[0,886, 0,156].0{,}844\,[1,0] + 0{,}114\,[0,1] + 0{,}042\,[1,1] = [0{,}886,\ 0{,}156].

Fíjate en que la salida se apoya fuertemente en v1v_1 (la clave que mejor encaja) pero no es una elección dura — es una mezcla suave y diferenciable. Ahora compara qué pasa sin escalar: las puntuaciones sin escalar 8,4,28,4,2 dan e8=2981e^8=2981, e4=54,6e^4=54{,}6, e2=7,39e^2=7{,}39, pesos 0,980,0,018,0,0020{,}980, 0{,}018, 0{,}002 — el softmax casi se ha colapsado sobre la clave 1, tirando a la basura la mayor parte de la estructura de relevancia y aplanando el gradiente. Eso es exactamente la saturación que dk\sqrt{d_k} está ahí para prevenir.

Para mercados añadimos una máscara causal: una salida en el instante tt solo puede atender a claves en instantes t\le t (no puedes espiar el futuro). En la matriz de puntuaciones eso pone a cero el triángulo superior antes del softmax, así que las posiciones futuras reciben peso 0.

Self-attention: who looks at whom
10027732467246423642363236323632363123456789123456789Key — input step jQuery — output step i
Effective keys attended (avg)2.4

Una matriz de autoatención causal T×T. Cada fila es un paso de salida (consulta); las columnas son los pasos de entrada (clave) a los que atiende; el triángulo superior está enmascarado (sin espiar el futuro) y los pesos de cada fila suman 1 vía softmax. Alterna entre un patrón 'Reciente (momentum)' que se pega a la diagonal, un patrón 'Dirigido por eventos' que pega un pico en una barra pasada y un patrón 'Difuso' que reparte la atención; luego arrastra el deslizador de temperatura del softmax y observa cómo el número efectivo de claves atendidas se expande o se colapsa.

Warning:

Los pesos del softmax no son importancias de características

Un peso de atención alto significa “esta posición fue útil para mezclar los vectores de valor aquí”, no “esta entrada causa el objetivo”. Los mapas de atención son seductores — parecen una explicación — pero se calculan a partir de proyecciones aprendidas, no son únicos (puedes permutar cabezas y reescalar) y, como es bien sabido, no equivalen a una atribución causal. Trata un mapa de calor bonito como una pista de depuración, nunca como evidencia de que la barra 37 impulsa el siguiente retorno.

Cuándo usarla

Recurre a la autoatención cuando la relevancia sea dependiente del contenido e irregular — cuando qué barra pasada importa dependa de lo que ocurrió, no de un retardo fijo. Una sorpresa de resultados, una ruptura de régimen o el reposicionamiento sobre un nivel concreto son cosas a las que la atención puede dirigirse directamente. Si la dependencia es un decaimiento suave de retardo fijo (ayer importa más, luego anteayer, monótonamente), un filtro exponencial barato o un pequeño término AR pueden ajustarla con una fracción de los parámetros — no invoques un Transformer para reaprender una media móvil.

Completa la razón del escalado.

Elige la opción correcta para cada hueco y comprueba.

Dividimos las puntuaciones en bruto por √(d_k) para que el softmax no , lo que aplanaría el gradiente y descartaría la estructura de relevancia.

Por qué la atención gana a la recurrencia en largo alcance

Before you read — take a guess

Dos posiciones están separadas por 200 pasos. ¿Cuántos saltos computacionales recorre la señal entre ellas en la autoatención frente a una RNN básica?

La analogía. La RNN es un mensaje pasado de mano en mano por una fila de 200 personas — al final es “mono morado lavavajillas”, y cada relevo multiplica otro factor jacobiano, así que el gradiente o se desvanece o explota (exactamente el fallo de la lección 2). La atención es un grupo de chat: la posición 200 menciona con @ a la posición 1 directamente, y el mensaje llega intacto en un solo salto.

Enunciado preciso. Define la longitud máxima de camino como la mayor distancia, en pasos computacionales, que la información debe recorrer entre dos posiciones de entrada cualesquiera para que interactúen. Para una red recurrente, dos posiciones ii y jj solo interactúan a través de la cadena de estados ocultos entre ellas, así que la longitud del camino es O(ij)O(|i-j|), hasta O(T)O(T). Para la autoatención, cada posición atiende a todas las demás en una sola capa, así que la longitud del camino es O(1)O(1) — independiente de TT. Caminos cortos significan que los gradientes no tienen que sobrevivir a un largo producto de jacobianos, así que el aprendizaje de largo alcance no decae.

La factura llega como cómputo y memoria. La matriz de puntuaciones QKQK^\top es T×TT\times T, así que la autoatención cuesta O(T2d)O(T^2 \cdot d) en tiempo y O(T2)O(T^2) en memoria. Duplica la longitud de la secuencia y el coste de la atención se cuadruplica.

Ejemplo resuelto — contando el coste. Toma T=500T = 500 barras y anchura del modelo d=64d = 64.

  • Camino secuencial de la RNN entre la primera y la última barra: 500\approx 500 saltos; el número de operaciones para procesar la secuencia es O(Td2)=500×642=2.048.000O(T \cdot d^2) = 500 \times 64^2 = 2{.}048{.}000, pero es secuencial — el paso t+1t+1 espera al paso tt.
  • Camino de la autoatención entre dos barras cualesquiera: 11 salto; el coste dominante es O(T2d)=5002×64=16.000.000O(T^2 \cdot d) = 500^2 \times 64 = 16{.}000{.}000 — unas 8× la aritmética de la RNN aquí, pero totalmente paralelo entre posiciones (un gran matmul, sin esperas).

Así que la atención cambia más aritmética (paralelizable) por un camino de gradiente muchísimo más corto y sin cuello de botella secuencial. En hardware moderno el paralelismo suele ganar en tiempo de pared, justo hasta que TT se hace lo bastante grande como para que muerda el término de memoria T2T^2.

Unrolling a recurrent model — and watching the past fade
x1h1x2h2x3h3x4h4x5h5x6h6x7h7x8h8Input xₜHidden state hₜŷ
Step-1 info surviving at h_T3.5%

El contraste hecho visual: el desenrollado recurrente enhebra un estado oculto por la cadena, y la barra de retención de memoria decae cuanto más atrás le pides que recuerde — ese decaimiento ES el gradiente que se desvanece. La autoatención reemplazaría toda esta cadena por una única arista directa del paso i al paso j. Un salto, sin decaimiento.

PropiedadRNN / LSTMTCNTransformer
Longitud máxima de camino entre posicionesO(T)O(T)O(logT)O(\log T) (dilatada)O(1)O(1)
Paralelismo en el tiempoNinguno (secuencial)TotalTotal
Cómputo por capaO(Td2)O(T\,d^2)O(Tkd)O(T\,k\,d)O(T2d)O(T^2 d)
Horizonte de memoriaBlando, decae (las puertas ayudan)Fijado por el esquema de dilataciónSecuencia entera, direccionada por contenido
Modo de fallo principalGradiente que se desvanece/explotaSe queda pequeño frente al campo receptivo fijoCoste O(T2)O(T^2) + hambre de datos
Warning:

Longitud de camino O(1) no es cómputo O(1)

“Longitud de camino constante” suena a comida gratis — no lo es. El camino de gradiente corto se compra con cómputo y memoria cuadráticos en la longitud de la secuencia. En secuencias financieras largas (piensa en datos tick durante una sesión entera) el término de memoria T2T^2 es la restricción real, y es por lo que los montajes de producción recurren a ventaneo, troceado o variantes de atención eficiente. No confundas la ventaja de aprendizaje (caminos cortos) con una ventaja de coste (no la hay).

Cuándo usarla

Prefiere la atención sobre la recurrencia cuando la dependencia sea genuinamente de largo alcance y enrutada por contenido, y tus secuencias sean lo bastante cortas como para que T2T^2 sea asumible. Si TT es pequeño (un puñado de retardos) y la señal es local, una LSTM o una TCN son más baratas y más difíciles de sobreajustar. Si TT es enorme y la dependencia es mayormente local con raros saltos largos, el campo receptivo de profundidad logarítmica de una TCN suele ser el punto óptimo.

Une cada concepto con su definición.

Atención multicabeza y codificación posicional

Before you read — take a guess

La autoatención calcula una media ponderada sobre posiciones. ¿Qué implica eso si barajas el orden de las barras de entrada antes de añadir cualquier información de posición?

La analogía de las cabezas. Un analista solo puede sostener una tesis a la vez. Una mesa contrata a varios — un especialista en momentum, uno en eventos, uno en liquidez — y cada uno lee la misma cinta a través de una lente distinta; luego agrupas sus notas. La atención multicabeza ejecuta hh cálculos de atención en paralelo, cada uno con sus propias proyecciones WQ,WK,WVW_Q, W_K, W_V de menor dimensión, y concatena los resultados a través de una proyección de salida. Una cabeza puede aprender a seguir la deriva reciente, otra a pegar un pico en un evento pasado concreto, otra a vigilar un nivel.

Definición precisa. Con la dimensión del modelo dmodeld_{\text{model}} repartida entre hh cabezas, cada cabeza trabaja en dimensión dk=dmodel/hd_k = d_{\text{model}}/h:

cabezai=Atencioˊn(QWiQ,KWiK,VWiV),MultiCabeza=Concat(cabeza1,,cabezah)WO.\text{cabeza}_i = \text{Atención}(QW_i^Q, KW_i^K, VW_i^V), \qquad \text{MultiCabeza} = \text{Concat}(\text{cabeza}_1,\dots,\text{cabeza}_h)\,W^O.

Repartir el presupuesto mantiene el coste total aproximadamente igual que con una sola cabeza, mientras deja que las cabezas se especialicen.

Codificación posicional. Como la atención es invariante a permutaciones, añadimos un vector dependiente de la posición ptp_t al embedding de cada token xtx_t para que características idénticas en instantes distintos sean distinguibles. Las codificaciones sinusoidales usan

PE(t,2i)=sin ⁣(t100002i/d),PE(t,2i+1)=cos ⁣(t100002i/d),PE_{(t,2i)} = \sin\!\left(\frac{t}{10000^{2i/d}}\right), \qquad PE_{(t,2i+1)} = \cos\!\left(\frac{t}{10000^{2i/d}}\right),

dando a cada posición una huella multifrecuencia única; los embeddings posicionales aprendidos son, en su lugar, una tabla de búsqueda entrenada. En cualquier caso, el modelo ahora sabe cuándo se situó cada token.

Mini-ejemplo resuelto — por qué el orden importa para los retornos. Considera dos secuencias de retornos diarios construidas a partir del mismo multiconjunto de movimientos {+5%,5%}\{+5\%, -5\%\}:

  • Secuencia A: +5%+5\% y luego 5%-5\%. Riqueza acumulada: 1,05×0,95=0,99751{,}05 \times 0{,}95 = 0{,}9975 (baja un 0,25%).
  • Secuencia B: 5%-5\% y luego +5%+5\%. Riqueza acumulada: 0,95×1,05=0,99750{,}95 \times 1{,}05 = 0{,}9975 (también baja un 0,25%).

La capitalización resulta conmutar aquí, así que la riqueza terminal es idéntica — pero el camino no lo es, y el riesgo vive en el camino. La secuencia A se hundió hasta 1,05 y luego cayó; la secuencia B se hundió hasta 0,95 primero. Una señal de momentum, un stop dinámico, una llamada de margen o una estimación de volatilidad leen estas dos como mundos distintos. Un modelo que no puede distinguir A de B (sin información posicional) literalmente no puede representar “la caída vino primero”. El orden no es decoración; es señal.

Clasifica cada afirmación bajo el mecanismo que describe.

Coloca cada elemento en su grupo.

  • Puede ser sinusoidal multifrecuencia o una tabla de búsqueda aprendida
  • Deja que una subcomputación siga el momentum mientras otra pega un pico en un evento pasado
  • Inyecta el 'cuándo' para que permutar las entradas ya no deje las salidas inalteradas
  • Divide d_model en h proyecciones de menor dimensión y luego concatena
Warning:

Las cabezas no vienen pre-etiquetadas como 'momentum' y 'eventos'

Es tentador narrar “la cabeza 3 es la cabeza de resultados”. En la práctica los roles de las cabezas son emergentes, enredados y a menudo redundantes — los estudios de poda eliminan rutinariamente un buen pellizco de cabezas con pérdida insignificante. No cablees a fuego una interpretación de una cabeza en tu relato de investigación, y no confíes en que una cabeza que a ojo viste como “la cabeza de eventos” vaya a jugar ese papel con datos fuera de muestra o tras un reentrenamiento.

Cuándo usarla

Usa varias cabezas siempre que sospeches que coexisten varios patrones relacionales distintos (tendencia, reversión a la media, respuesta a eventos) — es casi gratis dado un dmodeld_{\text{model}} fijo. Incluye siempre codificación posicional para series temporales; la única vez que la dejarías fuera es para entradas genuinamente de conjunto sin orden (p. ej., atender a través del corte transversal de activos en un solo instante, donde no hay un orden intrínseco que codificar).

Si la riqueza terminal es idéntica para ambos órdenes, ¿por qué necesita un modelo información posicional?

Respuesta. Porque casi todo lo que de verdad nos importa en finanzas es dependiente del camino, aunque el punto final no lo sea. El drawdown, los stops dinámicos, las llamadas de margen, la volatilidad realizada y cualquier señal de momentum o autocorrelación leen los dos órdenes como estados del mundo distintos. La autoatención sin codificación posicional ve ambas secuencias como el mismo conjunto de retornos y es estructuralmente incapaz de distinguir “el crash vino primero” de “el rally vino primero”. La codificación posicional restaura esa distinción.

Transformers sobre el libro de órdenes

Before you read — take a guess

La lección 1 argumentaba que el deep learning se gana el sueldo en subproblemas de alta relación señal-ruido. ¿Qué tarea encaja mejor con el apetito de un Transformer?

La analogía. Pronosticar el retorno del próximo año a partir de unas pocas observaciones anuales es como predecir la media de por vida de una moneda a partir de tres lanzamientos — casi todo ruido. Hacer nowcasting del siguiente tick del precio medio a partir del libro de órdenes en vivo se parece más a leer una sala de subastas abarrotada en tiempo real: las pujas y ofertas están ahí mismo, apiladas y cuantificadas, y el siguiente movimiento está mecánicamente relacionado con esa presión. Ese es el régimen de alta SNR y rico en datos para el que la lección 1 dijo que el DL estaba hecho.

El libro de órdenes (LOB) como entrada. En cada instante el libro lista los mejores NN niveles de precio en cada lado con sus tamaños en reposo. Una entrada estándar al estilo DeepLOB son los N=10N=10 niveles superiores: para cada nivel, precio de compra, tamaño de compra, precio de venta, tamaño de venta — 10×4=4010 \times 4 = 40 características por instantánea — apiladas sobre una ventana de, digamos, las últimas 100 instantáneas. Esto es un tensor estructurado, normalizado y de alta frecuencia, no un puñado de barras diarias ruidosas.

Las etiquetas. Define el precio medio mt=(ptask+ptbid)/2m_t = (p^{\text{ask}}_t + p^{\text{bid}}_t)/2. Para denoisar el temblor a nivel de tick, compara medias suavizadas antes y después: sea mm_- el promedio del precio medio sobre los kk ticks anteriores y m+m_+ el promedio sobre los kk siguientes. La etiqueta es el signo del cambio suavizado frente a un umbral α\alpha:

t={sube(m+m)/m>+αplanom+m/mαbaja(m+m)/m<α\ell_t = \begin{cases} \text{sube} & (m_+ - m_-)/m_- > +\alpha \\ \text{plano} & |m_+ - m_-|/m_- \le \alpha \\ \text{baja} & (m_+ - m_-)/m_- < -\alpha \end{cases}

Una clasificación de tres clases sube/plano/baja sobre un horizonte de unos pocos ticks.

Ejemplo resuelto — etiquetar un evento. Mejor compra =100,00= 100,00, mejor venta =100,02= 100,02, así que mt=100,01m_t = 100{,}01. Sobre los k=5k=5 ticks anteriores el precio medio promedió m=100,00m_- = 100{,}00; sobre los 5 siguientes promedia m+=100,05m_+ = 100{,}05. El retorno suavizado es (100,05100,00)/100,00=0,0005=5(100{,}05 - 100{,}00)/100{,}00 = 0{,}0005 = 5 puntos básicos. Con un umbral α=2\alpha = 2 pb, 5>25 > 2, así que esta instantánea se etiqueta como sube. Si hubiera sido m+=100,01m_+ = 100{,}01 (un movimiento de 11 pb), 1<21 < 2, sería plano — el umbral absorbe el micro-ruido para que el modelo no se entrene a perseguir redondeos.

El linaje DeepLOB. La receta influyente (Zhang, Zohren y Roberts, 2019) es una pila: convoluciones sobre los niveles de precio/volumen primero comprimen la instantánea de 40 características en características microestructurales locales (tratando niveles adyacentes como píxeles adyacentes), un módulo inception captura patrones multiescala y luego un modelo temporal — originalmente una LSTM, en variantes posteriores un bloque de atención/Transformer — integra sobre la ventana temporal antes de un softmax sobre sube/plano/baja. El papel de la atención: dirigir la predicción a los momentos del libro reciente que de verdad importaron (un gran barrido, un desequilibrio repentino) en lugar de difuminarse por toda la ventana.

Nowcasting del LOBPronóstico de retornos diarios
Relación señal-ruidoAlta (siguiente tick ≈ presión actual)Brutalmente baja
Número de muestrasMillones de instantáneas/díaCientos de observaciones/año
HorizonteUnos pocos ticks / milisegundosDías a años
EtiquetaMecánica, movimiento medio suavizadoDominada por ruido impronosticable
Veredicto del DL (lección 1)Juega a favor de las fortalezas del DLJuega a favor de las debilidades del DL
Warning:

El éxito en el LOB no se generaliza hacia arriba a los retornos diarios

Los resultados al estilo DeepLOB son reales — pero viven en un régimen concreto: horizonte ultracorto, números de muestras enormes, alta SNR. La gente rutinariamente (y erróneamente) los cita como prueba de que “los Transformers ganan a los modelos clásicos en finanzas”, luego atornilla la misma arquitectura a retornos diarios o semanales y se da de bruces. Hacer nowcasting de microestructura y pronosticar retornos macro son deportes distintos. Peor aún, los resultados intradía del LOB que ignoran la latencia, la posición en cola y los costes de transacción pueden ser inoperables incluso cuando la precisión de clasificación es genuina.

Cuándo usarlo

Despliega un Transformer-sobre-LOB cuando tengas datos genuinos de libro de alta frecuencia, un horizonte corto y millones de instantáneas etiquetadas — y cuando tu backtest modele honestamente la latencia, las comisiones y el realismo de ejecución. No transplantes la arquitectura al pronóstico de retornos de baja frecuencia esperando que la magia siga; ahí los datos son demasiado escasos y demasiado ruidosos para la capacidad del modelo, que es exactamente el problema de la siguiente sección.

Completa el régimen donde los Transformers de LOB se ganan el sueldo.

Elige la opción correcta para cada hueco y comprueba.

La tarea DeepLOB funciona porque el nowcasting del precio medio es un problema , lo opuesto a pronosticar retornos diarios a partir de unos cientos de observaciones anuales.

El problema del hambre de datos

Before you read — take a guess

Entre RNNs, TCNs y Transformers, ¿por qué tiende el Transformer a sobreajustar más rápido en conjuntos pequeños de retornos?

La analogía. Una convolución llega con una opinión (“las cosas cercanas se relacionan”), y la recurrencia llega con otra (“el tiempo es una cadena”) — estos sesgos inductivos son barandillas que restringen lo que el modelo puede ajustar. Un Transformer llega casi sin opinión: cualquier posición puede relacionarse con cualquier posición, aprendido libremente. La máxima flexibilidad es un superpoder cuando los datos abundan y una maldición cuando escasean. Con unos cientos de retornos anuales ruidosos, un modelo sin sesgo y cargado de parámetros es una esponja que absorbe ruido y lo llama señal.

Enunciado preciso. El error de generalización se descompone, a grandes rasgos, en sesgo más varianza. Un sesgo inductivo fuerte reduce la varianza a costa de algo de sesgo; el sesgo débil del Transformer y su gran número de parámetros PP maximizan la varianza, y la varianza se rige por la razón entre PP y el número efectivo de muestras independientes NN. Las series de retornos financieros tienen un NN efectivo diminuto (solapadas, autocorrelacionadas, con cambios de régimen), así que P/NP/N es enorme y el modelo sobreajusta antes de generalizar.

Ejemplo resuelto — la razón parámetros-muestras. Supón que un bloque Transformer modesto tiene P200.000P \approx 200{.}000 parámetros y entrenas con 20 años de retornos diarios de renta variable: 20×2525.04020 \times 252 \approx 5{.}040 observaciones — y como los retornos están serialmente correlacionados y los regímenes se solapan, el número efectivo de muestras independientes podría estar más cerca de unos pocos cientos. Toma Nef250N_{\text{ef}} \approx 250. Entonces P/Nef200.000/250=800P/N_{\text{ef}} \approx 200{.}000/250 = 800 parámetros por muestra efectiva. Un montaje supervisado sano quiere esa razón muy por debajo de 1. A 800 contra 1 el modelo puede ajustar el conjunto de entrenamiento a la perfección y aprender esencialmente nada que sobreviva fuera de muestra.

Remedios.

RemedioQué haceCoste / advertencia
Regularización fuerte (dropout, decaimiento de pesos, parada temprana)Reduce la capacidad efectivaAjustar cada parámetro es en sí mismo una prueba (ver abajo)
Preentrenamiento / transferenciaAprende estructura de un corpus grande relacionado, afina sobre el objetivo pequeñoLos datos de preentrenamiento deben ser relevantes; el desajuste de régimen perjudica
Modelo más simpleMenor PP, sesgo más fuerte (LSTM, TCN o simplemente un modelo lineal)Puede infraajustar estructura genuina de largo alcance
Agrupa el corte transversalEntrena un modelo a través de muchos activos para elevar el NN efectivoAsume dinámicas compartidas; filtra si no está alineado en el tiempo
Warning:

Cada arquitectura que pruebas infla tu recuento de pruebas

Aquí está la trampa que hunde carreras: pruebas un modelo de 4 cabezas, luego 8 cabezas, luego añades una capa, luego cambias codificaciones sinusoidales por aprendidas, luego ajustas el dropout — y silenciosamente ejecutas docenas de configuraciones contra los mismos datos. Cada una es una prueba, y cuantas más pruebas ejecutas, más alto será el mejor Sharpe que encuentres por pura suerte. Este es exactamente el problema de las pruebas múltiples de Machine Learning para Alfa: debes deflactar tu Sharpe por el número de pruebas. El enorme espacio de diseño de un Transformer lo convierte en un campo de minas de pruebas múltiples — la propia búsqueda de arquitectura fabrica falsos descubrimientos. Preregistra tu diseño y cuenta cada variante.

Cuándo usarlo

Usa un Transformer para predicción de retornos solo cuando puedas elevar honestamente el número efectivo de muestras — agrupando un corte transversal amplio, apoyándote en preentrenamiento relevante o trabajando en un régimen de alta frecuencia con millones de instantáneas. De lo contrario, el modelo de menor sesgo y más fuerte (o incluso un modelo lineal regularizado) suele ganar fuera de muestra, y has gastado muchas menos pruebas para llegar ahí. La conclusión sobria — que la lección 6 martilleará — es que la arquitectura rara vez rescata un problema de baja SNR y hambriento de datos; ajustar la capacidad del modelo al contenido genuino de información es todo el juego.

Cada palanca de abajo o eleva el tamaño efectivo de muestra o reduce la capacidad efectiva. Clasifícalas.

Coloca cada elemento en su grupo.

  • Aplicar dropout, decaimiento de pesos y parada temprana
  • Cambiar el Transformer por una LSTM o TCN más pequeña
  • Preentrenar en un corpus grande relacionado y luego afinar
  • Agrupar el entrenamiento a través de un corte transversal amplio de activos

Repaso

Big picture

Atención y Transformers para mercados

  • Atención y Transformers
    • Autoatención
      • Mezcla consulta / clave / valor
      • softmax(QKᵀ/√dₖ)V
      • √dₖ previene la saturación del softmax
      • Máscara causal: sin espiar el futuro
    • Por qué gana a la recurrencia
      • Longitud de camino O(1) vs O(T)
      • Sin gradiente que se desvanece (lección 2)
      • Coste: O(T²) cómputo y memoria
    • Multicabeza + posición
      • Cabezas = vistas relacionales paralelas
      • Invariante a permutaciones → necesita codificación posicional
      • Sinusoidal o aprendida
    • Transformers de LOB
      • Precio y tamaño compra/venta de los N superiores
      • Etiqueta: precio medio suavizado sube/plano/baja
      • DeepLOB: conv → inception → temporal
      • Nowcasting de alta SNR (lección 1)
    • Hambre de datos
      • Más parámetros, menos sesgo inductivo
      • P/N enorme en retornos → sobreajuste
      • Cada variante infla el recuento de pruebas
      • Preentrenar / agrupar / regularizar / simplificar
La autoatención es un enlace directo de un salto a través del tiempo — potente donde la dependencia es de largo alcance y enrutada por contenido, peligrosa donde los datos escasean.

Atención y Transformers — ponte a prueba

Pregunta 1 de 50 correct

Una consulta atiende a dos claves con d_k = 4. Los productos escalares en bruto son 6 y 2. Tras escalar por √dₖ, ¿cuáles son las puntuaciones escaladas que se alimentan al softmax?

Comprueba tu respuesta para continuar.

Marcar lección como completada