A principios de los años sesenta, las redes aproximadamente 300 millones de dólares en una línea directa de fibra óptica entre Chicago y Nueva York. En ese momento, Chicago era el principal centro de negociación de futuros, mientras que Nueva York manejaba acciones. Invertir Invertir Para el comercio de alta frecuencia, esos 3-4 ms eran una gran ventaja.Quién vio los datos un poco antes podía colocar órdenes primero y agarrar la liquidez.El acceso al alquiler de la línea costó millones de dólares al año, pero se pagó - milisegundos literalmente convertidos en dinero. Si las empresas estuvieran dispuestas a gastar cientos de millones sólo para rasparse 3–4 milisegundos, imaginen la ventaja de un modelo ML que no reacciona (incluso si instantáneamente), sino que realmente predice los movimientos del mercado. Si tal modelo alguna vez existiera, el mercado se daría cuenta inmediatamente. Entonces, ¿por qué no vemos historias de éxito público de ML en finanzas? Puedes mirarlo de dos maneras. Uno es que los resultados existen pero no se comparten. De vez en cuando, verás un papel con buenos números, pero son raros y generalmente de cereza. El otro es que hay obstáculos reales. Los datos financieros son simplemente más difíciles de trabajar que los datos en otros dominios, principalmente por tres razones: Demasiado ruido No hay datos suficientes Mercados en constante cambio Esa combinación hace que los datos financieros sean muy diferentes de los datos meteorológicos, donde el ruido es menor porque el sistema sigue las leyes de la física, los datos son abundantes gracias a satélites y sensores que producen terabytes de observaciones todos los días, y la física subyacente permanece estable, por lo que incluso los datos antiguos siguen siendo útiles. Para cada uno de estos problemas en Finanzas, hay soluciones conocidas.Voy a pasar por ellos a continuación.El problema es que solo funcionan aislados.Nadie ha logrado ponerlos todos juntos en una única máquina de comercio. Como dicen, sólo puedes elegir dos. Reducing noise with filters and aggregation Reducción del ruido con filtros y agregación Las series de tiempo financiero vienen con una señal débil enterrada en el ruido. Los precios oscilan cada segundo - noticias, rumores, movimientos de los grandes jugadores. Incluso enlaces simples como “buenas noticias → el precio sube” a menudo se rompen. Hay dos fuentes principales de ruido: The first source of noise is a The core issue is not the magnitude of the noise itself, but the weakness of the signal: meaningful price movements are usually fractions of a percent, while random swings can easily reach several percent. As a result, the share of informative changes within the overall data stream is extremely small. weak signal-to-noise ratio. According to the Efficient Market Hypothesis, prices already reflect all available information from news — which is exactly what we typically aim to predict. However, markets also include whose actions generate additional noise. uninformed participants Noise filtering Noise filtering via FFT remains a staple tool. The approach decomposes a time series into frequency components: low frequencies capture the underlying trend, while high frequencies represent noise. By discarding the high-frequency parts and reconstructing only the low-frequency component, we obtain a smoothed signal that’s much easier to model. (The high-frequency remainder can still serve for volatility estimation if needed.) was able to augment classical computing workflows to better unravel hidden pricing signals in noisy market data than standard, classical-only approaches in use by HSBC, resulting in strong improvements in the bond trading process. IBM Heron Heuristics and reframing the problem Noise from market participants is handled differently. One useful trick is to reframe the question itself. Instead of asking you can ask: “What will Apple’s stock price be one second from now?” “What will it cost to buy 1 share?” “What will it cost to buy 100k shares?” In the second case we predict the average price for a large volume, and that is much more stable and better reflects market movement. def avg_price(order_book, volume): taken, cost = 0, 0 for price, avail in order_book: take = min(avail, volume - taken) cost += take * price taken += take if taken >= volume: break return cost / taken Example: the averaged price for 100k shares y = avg_price(order_book, 100_000) IBM Heron “¿Cuál será el precio de las acciones de Apple de un segundo a partir de ahora?” When More Volume Means More Noise Sin embargo, también hay un efecto inverso: a veces contabilizar Comparar los dos gráficos: muestran los precios promedio de BTCUSDT en Binance, ponderados por diferentes volúmenes de comercio. En el primer caso, el gráfico ponderado por volumen de 50 millones de dólares parece "menos ruidoso" - esto ocurrió durante una caída rápida del precio. En el segundo caso, sin embargo, la misma media ponderada muestra saltos mucho más "randomizados". Esto ocurrió porque, durante un período de precio más tranquilo, los participantes movían más a menudo sus grandes órdenes más profundamente en el libro de órdenes, lo que a su vez afectó al precio medio ponderado. más Puede parecer sorprendente: si simplemente contamos el número de cambios para cada uno de estos tres indicadores durante el período del 22 de agosto al 22 de septiembre, realmente obtendremos un aumento en los datos cuando “medimos” el precio. P1_1_market_hits.csv: 2.374.605 puntos de datos P2_500k_market_hits.csv: 51,309,973 puntos de datos P3_50m_market_hits.csv: 133.191.896 puntos de datos El resultado es este: la mediación a veces puede empeorar las cosas. Smarter Targets Beat Raw Prices Otra forma de “reducir el ruido” y “ayudar ML” es reformular el objetivo de predicción por medio del ruido a lo largo del tiempo. Una más robusta es: Esto soluciona dos problemas a la vez: “Vamos a predecir el precio exacto 10 segundos a partir de ahora”. “predecimos el precio medio ponderado por volumen durante los próximos 10 segundos”. If a price jump occurs within those 10 seconds, the exact moment doesn’t matter as much — averaging smooths it out. The algorithm therefore has fewer ways to fail. Secondly (and here we get a bit more mathematical), averaging the target also reduces the average penalty the model receives during training for “wrong predictions.” In the simplest case of a regression model, the loss is proportional to (y^* - y)^2, where y^* is the “true answer” and y is the model output. The larger the error, the quadratically higher the penalty. Now, suppose that over the next 10 seconds the price trend is generally upward, but at some random moment there is a brief downward spike. The model would have to predict that spike, otherwise it gets penalized. But in reality, we don’t care much about that random blip — what we want the model to capture is the overall upward movement.\ El objetivo de 10 segundos es mucho más fácil de predecir, al menos para una regresión simple, porque contiene mucho menos ruido aleatorio. Don’t Predict Price, Predict the Crowd A veces es más inteligente predecir no el precio en sí, sino la reacción de la multitud. patrones técnicos como "cabeza y hombros" pueden carecer de rigor científico - sin embargo, si suficientes comerciantes los creen y actúan, el precio realmente se mueve. En nuestros algoritmos, generalmente separamos este enfoque del general.En otras palabras, si “sintias” al modelo ML lo que exactamente buscamos en los datos (por ejemplo, casos en los que los participantes del mercado están tratando de completar un patrón de análisis técnico), el modelo aprende mucho más eficazmente. Bootstrapping and augmenting limited data Bootstrapping y ampliación de datos limitados Si muestras precios una vez por segundo, terminas con algo como 60 veces × 60 veces × 8 horas de negociación × 5 días a la semana × ~ 50 semanas (excluyendo los días festivos) ≈ 7 200 000 puntos por año - menos de 10 millones. Por supuesto, hay datos de HFT donde algo sucede cada milisegundo, pero eso sólo trae de vuelta el primer problema: toneladas de ruido y muy poca señal real. En su núcleo, el aprendizaje automático es estadística, y la estadística tiene trucos para trabajar con muestras pequeñas. Bootstrapping La idea es simple: digamos que tienes 100 observaciones, pero te gustaría tener 1.000. Tomas repetidamente subconjuntos aleatorios —por ejemplo, 50 elementos cada uno— y computas estadísticas. El número de combinaciones posibles de “100 elige 50” es enorme. Como resultado, obtienes cientos de conjuntos de datos reemplazados y estimaciones más fiables que si solo confiaras en el original 100. La captura es que para la serie de tiempo esto apenas funciona - no se puede simplemente cortar una secuencia en piezas sin perder la cronología. Es por eso que el bootstrapping clásico rara vez se utiliza para la predicción de precios. pero en tareas como analizar 100 ofertas comerciales, se puede aplicar: se puede medir sobre el cien original, o construir varios subconjuntos aleatorios de 50 y medir esos resultados. Data augmentation La segunda estrategia es ampliar artificialmente el conjunto de datos. En imágenes, esto es sencillo: rotar, distorsionar - y se obtiene un nuevo ejemplo. En texto, también. Con la financiación es más difícil, pero algunos trucos todavía funcionan. Un ejemplo simple: si un modelo es entrenado sólo en un mercado de toros, siempre sugirirá "comprar". Tan pronto como el mercado gira hacia abajo - comienzan las pérdidas. Para mitigar esto, puede invertir los datos: transformar el crecimiento en declive, transformar las compras en ventas, Transformar buenas noticias en malas. El algoritmo aprende de tales escenarios y comienza a vender en un mercado en caída. Synthetic trade generation is a that still has many open questions field Campo Campo El enfoque es relativamente sencillo: tomar negocios reales, ajustalos a una distribución (o conjunto de distribuciones), y luego tomar muestras de esa distribución para producir datos sintéticos adicionales.Pero el reto clave sigue siendo la cola de distribución (cabeza grasa) - eventos raros pero grandes.Su probabilidad es baja, pero los mercados incluyen tales eventos. Las investigaciones recientes se basan cada vez más en modelos generativos: modelos de difusión, GAN, autoencodificadores variativos.Por ejemplo, el artículo “Generation of synthetic financial time series by diffusion models” describe un método en el que las series de libros de orden se transforman en espacio de wavelet, generado a través de DDPM, y luego invertidos de vuelta a series de tiempo. Otro ejemplo es TransFusion, que combina arquitecturas de difusión y transformador para generar largas series de tiempo sintéticas de alta fidelidad. La tarea principal es conciliar dos demandas: por un lado, preservar los hechos estilizados del mercado (cabezas grasas, agrupamiento de volatilidad, autocorrelaciones, etc.), y por otro, evitar artefactos sobresintéticos. Time shifts También hay una técnica de cambio de tiempo: usando los mismos datos, pero con un retraso.El problema es que es fácil “pequeñar en el futuro” (prejuicio de mirar hacia delante).Este es un error de ingeniería clásico: el conjunto de entrenamiento termina conteniendo datos que el modelo debería predecir.En los gráficos, se ve muy bien, pero en los mercados reales, se rompe. Otro método es el cambio de tiempo: reutilizar los mismos datos con un retraso.El principal problema aquí es el riesgo de introducir un prejuicio de mirar hacia delante - un error de ingeniería clásico donde el conjunto de entrenamiento contiene accidentalmente los mismos datos que el modelo debe predecir.En los gráficos esto a menudo parece convincente, pero en los mercados en vivo se derrumba rápidamente. Una analogía útil es el tiempo: si está lloviendo ahora, la probabilidad es alta de que siga lloviendo.Pero predecir la lluvia cuando todo el mundo ya está llevando paraguas añade poco valor.El comercio funciona de una manera similar: cuando acaba de haber un gran movimiento de precios, el próximo movimiento también es probable que sea grande.Lo que no correlaciona, sin embargo, es la dirección - solo las amplitudes muestran persistencia. ** Adaptación a los mercados cambiantes con conjuntos y ventanas deslizantes **El tercer problema – los mercados se comportan como el Oeste Salvaje. Todo cambia rápidamente.Podrías decir: “Solo entrenemos en datos frescos de los últimos meses”. Ensembles Un enfoque práctico es ensembles. Se entrenan varios modelos: one on the most recent days or weeks, another on the entire history, a third on some mid-range horizon. and a fourth that focuses on special cases — for example, detecting noise patterns or technical-analysis formations, as discussed earlier. Then you aggregate their predictions (e.g., by averaging, or taking the min/max). This is a standard trick for dealing with heteroscedastic data — where the distribution is non-stationary and constantly shifting. Markets are exactly that kind of case. pred1 = model_recent.predict(x) pred2 = model_history.predict(x) pred3 = model_midterm.predict(x) final = np.mean([pred1, pred2, pred3]/ # final = np.max([pred1, pred2, pred3]) The idea is that the market may change tomorrow, but some of the old information is still useful. Averaging helps smooth out these distortions. Sliding windows Another technique is training on sliding windows. Take the last 7 days, predict the next one. Then shift the window: add new data, drop the old. The model keeps updating, allowing it to adapt to new market regimes. window = 7 for t in range(window, len(data)): model.fit(data[t-window:t]) pred = model.predict(data[t]) So why is there no universal ML for trading? So, each of the three problems can be solved on its own, but together they don’t add up to a universal solution. One reason is the lack of quality feedback for training models. In finance, you don’t have the usual ML metrics like accuracy or F1-score. The only metric is money made. Imagine two hedge funds. One shows average returns, the other twice as high. If someone consistently outperforms the rest, everyone immediately assumes it’s a scam. Why? First, because nothing like that shows up in the market — other participants don’t feel like someone is “skimming” them on every trade. Second, there’s the survivor bias. Classic example: take a thousand people, half go long on oil, half go short. The next day, half of them are right. From the remaining 500, split again, and repeat for several rounds. After ten days, you’ll have one “genius” who made the right call ten times in a row. But in reality, he was just lucky — the illusion comes from starting with a thousand players. This is the core problem of verification. There isn’t much data to train on, and there’s even less to validate results. Even if we could see trades from a fund that outperforms the market twofold, over a relatively short horizon we still wouldn’t be able to tell luck from real skill. A good example is the many “one-day wonders” — funds or companies that show great returns when the overall market is going up (say, during an S&P 500 rally). But as soon as conditions turn south, their performance collapses. Over the long run, there are indeed legendary cases like the Medallion Fund. They consistently beat the market, delivering returns above so-called risk-free bonds. But the edge isn’t by orders of magnitude — it’s a few percentage points. To do better than them means being ahead by fractions of a percent, sustained over a very long horizon. The reality is that few funds survive long enough to prove such stability. Over six months, almost anyone can “look like a genius” if they get lucky — that’s the classic survivor bias. And not surprisingly, it’s exactly this illusion that a lot of flashy marketing campaigns for “successful” funds are built on. The philosophical takeaway is a harsh one: an algorithm can’t be called successful until it’s been tested by time. Even if it’s profitable on average, in real life it can get wiped out in a single day with a million-dollar drawdown — simply because you don’t have an extra million lying around to survive that day.