Saltar al contenido
Lecciones de Finanzas

Deep Learning para Datos de Mercado

Redes Convolucionales Temporales

Trata una serie de rendimientos como una señal 1-D: convoluciones causales que nunca espían el futuro, dilataciones que hacen crecer el campo receptivo de forma exponencial con pocos parámetros, bloques residuales y por qué las TCN suelen ganar a las RNN en secuencias financieras tabulares.

15 min Actualizado 19 jun 2026

En la última lección viste a una LSTM enhebrar heroicamente una celda de memoria a través de una larga cadena recurrente, peleando contra el gradiente que se desvanece en cada paso como un corredor de relevos que no para de soltar el testigo. Las puertas ayudaban. Siempre ayudan. Pero hay una alternativa más silenciosa y ligeramente engreída que esquiva todo el drama: deja de enhebrar memoria por una cadena frágil y, sin más, desliza un filtro sobre toda la ventana de golpe.

Esa es la Red Convolucional Temporal (TCN). Toma prestada la convolución de los modelos de imágenes, la apunta al tiempo en lugar de a los píxeles y lee tus rendimientos retardados directamente, en vez de resumirlos en un estado oculto que puede sobrevivir o no al viaje. Sin recurrencia, sin testigo, sin disculpas.

Aquí tienes el contraste del que nos alejamos: la recurrencia llevando memoria paso a paso por una cadena que las puertas pueden parchear, pero no abolir:

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

La recurrencia (arriba) pasa la información de mano en mano por una cadena; las puertas (abajo) protegen la señal, pero la cadena sigue siendo el cuello de botella. Una TCN elimina la cadena y lee la ventana directamente con filtros apilados.

El intercambio que estamos a punto de hacer: renunciar a la memoria ilimitada pero frágil de la RNN a cambio de un horizonte de memoria fijo, conocido y estable en gradiente. Para las finanzas, donde lo que más te importa son las últimas cientos de barras y desesperadamente quieres un comportamiento reproducible, ese intercambio suele ser una ganga.

Convoluciones causales

Empezamos con una comprobación de instinto antes de la maquinaria.

Before you read — take a guess

Una convolución 1-D en el instante t mezcla unas pocas entradas vecinas con pesos de filtro compartidos. ¿Qué debe cambiar para que la salida en t NUNCA pueda depender de entradas posteriores a t?

Analogía. Una convolución estándar es una pequeña plantilla deslizante —un filtro de ancho kk— que se posa sobre unos pocos pasos de tiempo consecutivos, multiplica cada entrada por un peso aprendido y suma. Una convolución causal es esa misma plantilla con una norma de la casa estricta: solo puede apoyarse sobre la barra presente y las barras a su izquierda (el pasado). Tiene físicamente prohibido inclinarse hacia el futuro. Piensa en un trader que solo puede leer la cinta hasta ahora: exactamente la disciplina que interiorizaste como nada de fuga por mirar al futuro allá en Aprendizaje Automático para Alfa.

Definición. Para una serie de entrada x1,x2,,xTx_1, x_2, \dots, x_T y un filtro con pesos w0,w1,,wk1w_0, w_1, \dots, w_{k-1}, una convolución causal 1-D produce

yt=i=0k1wixti.y_t = \sum_{i=0}^{k-1} w_i \, x_{t-i}.

Cada término tiene índice titt - i \le t. Nada del futuro entra. En la práctica esto se implementa rellenando la secuencia por la izquierda con k1k-1 ceros, para que la longitud de salida coincida con la de entrada y la alineación siga siendo causal.

Ejemplo resuelto. Toma un filtro causal de ancho k=3k=3 con pesos w0=0.5,  w1=0.3,  w2=0.2w_0 = 0.5,\; w_1 = 0.3,\; w_2 = 0.2 (un detector de momentum un poco suavizado). Aliméntalo con los tres últimos rendimientos diarios que terminan en tt:

índicerendimiento de entrada xxpeso wwproducto
tt+0.012+0.012w0=0.5w_0 = 0.5+0.0060+0.0060
t1t-10.004-0.004w1=0.3w_1 = 0.30.0012-0.0012
t2t-2+0.020+0.020w2=0.2w_2 = 0.2+0.0040+0.0040
yt=0.00600.0012+0.0040=0.0088.y_t = 0.0060 - 0.0012 + 0.0040 = 0.0088.

Una salida, tres multiplicaciones-sumas, cero espionaje. Esos mismos tres pesos se deslizan luego para calcular yt+1y_{t+1} a partir de xt+1,xt,xt1x_{t+1}, x_t, x_{t-1}: el compartir pesos a lo largo del tiempo es lo que hace la capa barata e invariante a la traslación.

Warning:

El error de un paso que se convierte en cuento de hadas del backtest

El error de TCN más común en finanzas es construir sin querer una convolución no causal (centrada) —la que usan por defecto las librerías de imágenes— que deja que yty_t espíe xt+1x_{t+1}. Tu modelo “predice” rendimientos con una precisión inquietante en el backtest, te apuntas el Sharpe mentalmente y luego el trading en vivo se queda plano. Confirma siempre que el relleno es solo por la izquierda y que la salida tt es una función pura de entradas t\le t. Una fuga de un solo paso es indistinguible de la genialidad hasta que el dinero real discrepa.

Completa la regla de alineación.

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

Una convolución es causal cuando la salida en el instante t depende solo de entradas en instantes , lo cual imponemos .

Cuándo usarla

Echa mano de las convoluciones causales siempre que el objetivo sea una predicción hecha en el instante tt usando información disponible hasta tt: básicamente toda tarea de predicción financiera honesta. La versión de una sola capa solo ve kk pasos hacia atrás, así que por sí sola es un extractor de características de memoria corta (una media móvil aprendible, más o menos). La usarías de forma autónoma para patrones muy locales; para memoria de verdad las apilas con dilatación, que viene a continuación.

Dilatación: un telescopio hacia el pasado

Before you read — take a guess

Apilas capas conv causales para ver más atrás. Con filtros ordinarios (dilatación 1) de ancho k, ¿cómo crece el campo receptivo al añadir capas?

Analogía. El apilamiento ordinario es subir una escalera de mano un peldaño por capa: lento. La convolución dilatada es un telescopio: cada capa salta más huecos entre las barras que muestrea, así que cada peldaño hacia arriba multiplica lo lejos que puedes ver en vez de simplemente sumarle. Sigues tocando solo kk entradas por filtro, pero están más separadas.

Definición. Una convolución causal dilatada con dilatación dd salta d1d-1 entradas entre tomas consecutivas:

yt=i=0k1wixtdi.y_t = \sum_{i=0}^{k-1} w_i \, x_{t - d\cdot i}.

En d=1d=1 es la convolución causal ordinaria. Apila LL capas con dilataciones 1,2,4,,2L11, 2, 4, \dots, 2^{L-1} (duplicando en cada capa) y el campo receptivo —cuántos pasos pasados pueden influir en la salida— es

R=1+(k1)(2L1).R = 1 + (k-1)\bigl(2^{L} - 1\bigr).

El alcance 2L2^L crece exponencialmente con el número de capas, mientras que el número de parámetros crece solo linealmente (cada capa añade los mismos k\sim k pesos por canal). Esa asimetría es todo el argumento de venta.

Ejemplo resuelto. Fija k=2k = 2 y L=8L = 8 capas con dilataciones 1,2,4,,1281, 2, 4, \dots, 128. Entonces

R=1+(21)(281)=1+1255=256.R = 1 + (2-1)\,(2^{8} - 1) = 1 + 1 \cdot 255 = 256.

Ocho capas alcanzan 256 pasos de tiempo hacia atrás —aproximadamente un año de barras diarias— usando una cantidad trivial de pesos. Aquí está el crecimiento desglosado capa a capa (ancho k=2k=2, así que cada capa añade 22^{\ell} al alcance):

capa \elldilatación d=2d=2^{\ell}alcance añadido (k1)d=d(k-1)d = dcampo receptivo acumulado RRparámetros (pesos/canal)
01122
12242
24482
388162
41616322
53232642
664641282
71281282562

Fíjate en que la columna del campo receptivo se duplica en cada fila mientras que la columna de parámetros se queda plana en 2. El alcance es exponencial; el coste, lineal. (Para volver a duplicar el alcance hasta 512, añades una capa más, no 256 más.)

Warning:

Agujeros en el telescopio: artefactos de cuadriculado

Duplicar dilataciones es eficiente, pero si eliges anchos y dilataciones con descuido, algunas posiciones de entrada dentro del campo receptivo nunca son muestreadas por ninguna toma: los filtros “ven a través” de los huecos y dejan agujeros en damero (el artefacto de gridding de la literatura de segmentación). Con k=2k=2 y dilataciones que se duplican vas bien —la cobertura es densa—, pero si ensanchas los pasos de dilatación más rápido de lo que el filtro puede salvarlos, tendrás un “alcance” de 256 pasos que en secreto ignora la mitad de las barras que contiene. Verifica la cobertura, no la des por supuesta.

Une cada concepto con su definición.

Cuándo usarla

La dilatación es la respuesta siempre que necesites memoria larga sin pagarla en parámetros ni en inestabilidad inducida por la profundidad. Elige el calendario de dilataciones de modo que el campo receptivo de la capa superior supere cómodamente la dependencia más larga que crees que existe en los datos (p. ej., si crees que los efectos persisten ~120 barras, construye R200R \ge 200 para tener margen). No te pases construyendo: un campo receptivo de 4096 sobre una serie con 90 barras de memoria solo añade capacidad para sobreajustar. Más sobre esto a continuación.

Bloques residuales y la TCN completa

Before you read — take a guess

Apilar muchas capas conv dilatadas puede degradar el entrenamiento: la precisión EMPEORA al añadir profundidad, incluso en datos de entrenamiento. ¿Qué truco arquitectónico arregla esto de forma más directa?

Analogía. Un bloque residual es una edición, no una reescritura. En vez de pedir a cada capa que reconstruya toda la señal desde cero, le pides que produzca una pequeña corrección y luego la sume a lo que entró: “aquí tienes la entrada, más mi granito de arena”. Si un bloque no tiene nada útil que aportar, puede aprender a sacar ~cero y dejar pasar la entrada tal cual, así que añadir profundidad no puede perjudicarte fácilmente.

Definición. Un bloque residual de TCN envuelve dos convoluciones causales dilatadas y produce

out=Activacioˊn(x+F(x)),\text{out} = \text{Activación}\bigl(x + \mathcal{F}(x)\bigr),

donde F\mathcal{F} es la pila de (conv causal dilatada → normalización de pesos → no linealidad → dropout), aplicada dos veces. El término x+x + es la conexión de salto. Cuando los recuentos de canales de entrada y salida difieren, una convolución 1×11\times1 remodela xx antes de sumar. Los ingredientes del bloque TCN estándar:

componentequé hacepor qué está ahí
Conv causal dilatadala mezcla temporal de verdadmemoria larga, sin fugas
Normalización de pesosreescala los pesos del filtroestabiliza/acelera el entrenamiento
ReLU (o similar)no linealidaddeja que la red modele patrones no lineales
Dropout espacialdescarta canales de características enterosregularización que respeta la estructura temporal
Suma residual / de saltovuelve a sumar la entrada a la salidaprofundidad entrenable, autopista de gradiente

Ejemplo resuelto. Supón que la pila de dos convoluciones de un bloque produce una corrección F(x)=0.03\mathcal{F}(x) = -0.03 en algún paso donde la característica de entrada es x=0.50x = 0.50. La salida residual antes de la activación es 0.50+(0.03)=0.470.50 + (-0.03) = 0.47: un suave empujón del 6%, no una reconstrucción desde cero. Ahora imagina que apilas 8 bloques así. Con apilamiento simple, una capa temprana desafortunada que aprende basura corrompe todo lo que va después; con residuales, ese bloque puede colapsar hacia F(x)0\mathcal{F}(x)\approx 0, sacar x\approx x, y el resto de la red queda intacto. Por eso puedes apilar TCN profundas (las 8 capas de nuestro ejemplo de dilatación, envueltas en bloques residuales) sin la degradación de precisión que aqueja a las pilas profundas ingenuas.

¿Por qué dropout espacial en concreto? El dropout ordinario pone a cero activaciones individuales aleatorias, lo cual en una serie temporal suave es como borrar ticks sueltos dispersos: la red simplemente interpola en torno a ellos y la regularización apenas muerde. El dropout espacial pone a cero canales enteros a lo largo de todos los pasos de tiempo, forzando a la red a no apoyarse en ninguna característica aprendida concreta. Es regularización que se toma en serio la correlación temporal.

Warning:

Campo receptivo ≠ memoria gratis; aún puedes sobreajustar ferozmente

Los bloques residuales te dejan apilar profundo, y la dilatación deja que el alcance explote, que es exactamente cómo te convences de montar un monstruo de 12 capas con un campo receptivo de 4096 pasos sobre una serie con quizá 2.000 observaciones efectivamente independientes. La capacidad se dispara; tu tamaño de muestra efectivo no (autocorrelación, lección 1). La curva dentro de muestra luce preciosa y la curva fuera de muestra diverge en silencio:

TCN más grande, menor ventaja fuera de muestra
In-sample (backtest)Out-of-sample (live)
Model complexity / strategies triedApparent performance
gap9%

Al añadir profundidad/ancho/campo receptivo, la pérdida dentro de muestra sigue cayendo pero la pérdida fuera de muestra se gira hacia arriba. El mínimo de la curva fuera de muestra —no el de la de dentro de muestra— fija el tamaño de modelo correcto. Regulariza con dureza (dropout, normalización de pesos, profundidad modesta).

Clasifica cada ingrediente de la TCN según su función principal.

Coloca cada elemento en su grupo.

  • Conexiones residuales de salto
  • Añadir más bloques residuales (más capas)
  • Dropout espacial sobre canales enteros
  • Duplicar la dilatación en cada capa
  • Normalización de pesos

Cuándo usarlos

Usa la TCN completa con bloques residuales —no convoluciones apiladas a secas— siempre que apiles más de un par de capas. Por debajo de ~3 capas podrías saltarte las conexiones de salto; por encima, los residuales son esencialmente obligatorios para evitar la degradación. Ajusta la intensidad de regularización (tasa de dropout, profundidad) contra la curva fuera de muestra, nunca contra la de dentro de muestra.

TCN frente a RNN

Before you read — take a guess

¿Qué propiedad es EXCLUSIVA de los modelos de secuencia convolucionales (TCN) y NO la comparte una RNN/LSTM clásica procesada paso a paso?

Analogía. Una RNN lee la cinta como una persona que lee una novela: una palabra cada vez, sosteniendo la trama en su (falible) memoria de trabajo. Una TCN la lee como un lector rápido con toda la página abierta a la vez, con los ojos saltando a posiciones fijas: no hay memoria de trabajo que perder, pero también un borde duro en la página: literalmente no puede ver más allá del margen (el campo receptivo).

Los compromisos clave.

dimensiónTCN (convolucional)RNN / LSTM / GRU (recurrente)
Cómputo de entrenamientoParalelo: toda la secuencia de golpe, amigable con la GPU, rápidoSecuencial: el paso tt espera a t1t-1; lento
Comportamiento del gradienteEstable: caminos cortos vía residuales/dilatación; sin decaimiento a través del tiempoPropenso a desvanecerse/explotar a través del tiempo (las puertas mitigan, no curan)
Horizonte de memoriaFijo y conocido: exactamente RR pasos; corte duroIlimitado en principio pero frágil e incierto en la práctica
Memoria más allá del horizonteNo puede ver más allá de RR, puntoPuede en teoría retener un contexto arbitrariamente largo
Latencia de inferenciaAlgo más pesada por paso (vuelve a convolucionar la ventana)Ligera: arrastra un pequeño vector de estado hacia delante
Eficiencia de parámetros para memoria largaExcelente (dilatación: profundidad logarítmica)El estado debe codificarlo todo en un solo vector

Ejemplo resuelto — la aceleración es concreta. Supón que una secuencia tiene T=500T = 500 pasos y que la aritmética de cada capa cuesta una unidad de “trabajo” por paso. Una RNN debe ejecutar sus 500 pasos en orden: tiempo de reloj 500\approx 500 unidades secuenciales, porque el paso 437 no puede arrancar antes de que termine el 436. Una capa de TCN aplica el mismo filtro a las 500 posiciones simultáneamente: con suficientes carriles en paralelo, tiempo de reloj 1\approx 1 unidad para esa capa, y una TCN de 8 capas termina en 8\approx 8 unidades secuenciales en total en vez de 500500. Los mismos FLOP en agregado, pero la cadena de dependencias es la profundidad (8), no la longitud de la secuencia (500). En una GPU esa es la diferencia entre minutos y horas.

El remate empírico: en muchas tareas de secuencia de referencia —y notablemente en las series financieras tabulares y de horizonte medio que le importan a este curso— las TCN con frecuencia igualan o superan a las LSTM, entrenando más rápido y de forma más estable. El sesgo inductivo recurrente no es magia; para buena parte de los datos de mercado, “lee las últimas RR barras con gradientes estables” gana.

Warning:

El horizonte fijo es una ventaja Y una trampa

El campo receptivo de una TCN es un muro duro: una dependencia en el retardo R+1R+1 es invisible, y punto: ningún entrenamiento la revela. Con una LSTM al menos tendrías una posibilidad (por escasa que sea) de capturarla a través del estado recurrente. Así que si tu señal vive de verdad en una estructura de muy largo alcance (memoria de régimen que abarca años de barras intradía), o dimensionas RR para cubrirla explícitamente o no des por hecho que una TCN modesta pueda verla. El horizonte conocido te protege del autoengaño solo si lo fijas con honestidad.

Selecciona TODAS las afirmaciones verdaderas sobre las TCN en relación con los modelos recurrentes.

Cuándo usarla

Toma una TCN por defecto cuando quieras velocidad, reproducibilidad y un horizonte de memoria que puedas enunciar en una frase: la mayoría de la predicción intradía y diaria encaja aquí. Inclínate por una RNN solo cuando tengas razones de peso para creer que la memoria útil es a la vez muy larga y lo bastante irregular como para que un campo receptivo dimensionado con honestidad fuera impracticablemente profundo.

Cuándo usar una TCN

Completa la pauta de despliegue.

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

Una TCN es una buena opción por defecto para , pero aun así deberías porque las muestras financieras están muy autocorrelacionadas.

Analogía. Elegir una TCN es como elegir un objetivo de focal fija: nítido como un cuchillo y rápido dentro de su campo de visión, inútil para lo que queda fuera del encuadre. Lo compras cuando sabes aproximadamente cómo de amplio necesitas el plano.

Echa mano de una TCN cuando:

  • La secuencia es de longitud media y el horizonte de dependencia es finito y estimable: fija RR para que supere cómodamente (recuerda R=1+(k1)(2L1)R = 1 + (k-1)(2^L - 1)).
  • Trabajas con datos intradía / de microestructura donde la velocidad de entrenamiento en paralelo y un horizonte de memoria conocido importan de verdad para iterar y controlar el riesgo.
  • Quieres un entrenamiento reproducible y estable en gradiente y estás harto de LSTM que entrenan distinto cada martes.
  • Pero regulariza con dureza. El NN efectivo es pequeño porque los rendimientos están autocorrelacionados (lección 1, “Por qué el Deep Learning Sufre en Finanzas”); apóyate en dropout espacial, normalización de pesos, profundidad modesta y validación walk-forward.

No eches mano de una TCN cuando:

  • La memoria genuinamente necesaria supera cualquier campo receptivo razonable: el horizonte duro amputará la señal en silencio.
  • El conjunto de datos es diminuto (unos cientos de filas, un puñado de características). Un árbol con potenciación de gradiente o un modelo lineal regularizado normalmente ganarán a cualquier red profunda aquí: menos supuestos, menos varianza, sin GPU.
  • Las relaciones son esencialmente transversales / no temporales, en cuyo caso la maquinaria de convolución-sobre-el-tiempo no te aporta nada.
Tienes ~3 años de barras de 1 minuto y sospechas que el momentum intradía decae en unos 90 minutos. Esboza una TCN que lo cubra, y di qué protege contra el sobreajuste.

Respuesta. Un horizonte de 90 minutos son 90 barras de un minuto. Con k=2k = 2 y dilataciones que se duplican, L=7L = 7 capas dan R=1+(21)(271)=128R = 1 + (2-1)(2^7 - 1) = 128 pasos: cómodamente por encima de 90 con margen. Envuelve las convoluciones dilatadas en bloques residuales (para que 7 capas entrenen sin degradación), añade dropout espacial y normalización de pesos, y valida walk-forward. El alcance se fija deliberadamente justo por encima de la dependencia que se cree (no 4096), y la regularización más una validación fuera de muestra honesta protegen frente al NN efectivo encogido por la autocorrelación. Eso es una TCN dimensionada con intención en lugar de con ego.

Resumen de compromisos

Todo el argumento en un suspiro: una TCN cambia la memoria ilimitada pero frágil de la RNN por una fija pero estable y rápida. Cuando tu problema cabe dentro de un campo receptivo que puedas nombrar, ese es un gran intercambio. Cuando no, el muro es real y silencioso: así que nombra el horizonte con honestidad, regulariza como si la muestra efectiva fuera pequeña (lo es) y valida fuera de muestra.

Repaso

Big picture

Redes Convolucionales Temporales

  • TCN
    • Convolución causal
      • La salida t usa entradas ≤ t (sin fugas)
      • El relleno por la izquierda lo impone
      • Compartir pesos a lo largo del tiempo
    • Dilatación
      • Salta d-1 entradas entre tomas
      • Alcance R = 1+(k-1)(2^L-1)
      • Alcance exponencial, parámetros lineales
    • Bloques residuales
      • out = x + F(x)
      • Normalización de pesos + dropout espacial
      • Pilas profundas sin degradación
    • frente a RNN
      • Entrenamiento paralelo, gradientes estables
      • Horizonte fijo frente a memoria ilimitada frágil
      • A menudo iguala/supera a la LSTM en finanzas tabulares
    • Cuándo usarla
      • Longitud media, horizonte finito, intradía
      • Regulariza con dureza (N efectivo pequeño)
      • Evítala si memoria > R o datos diminutos
Las convoluciones causales leen solo el pasado; la dilatación compra alcance exponencial por un coste lineal; los bloques residuales hacen entrenable la profundidad; el resultado es una alternativa rápida, estable y de horizonte fijo a las RNN.

Comprobación de TCN

Pregunta 1 de 50 correct

Un filtro causal de ancho 2 con pesos w0=0.6, w1=0.4 ve los rendimientos x_t=+0.010 y x_{t-1}=-0.005. ¿Cuál es la salida y_t?

Comprueba tu respuesta para continuar.

Marcar lección como completada