Vuoden 2010 alussa verkostojen noin 300 miljoonaa dollaria suoraa valokuituliitäntälinjaa Chicagon ja New Yorkin välillä. Tuolloin Chicago oli futuurikaupan tärkein keskus, kun taas New York käsitteli osakkeita. Säännölliset reitit tekivät käänteitä, jotka lisäsivät kymmeniä kilometrejä, mutta uusi kaapeli leikkasi viiveen ~17 millisekunnista ~13 millisekuntiin. Sijoittaminen Sijoittaminen Korkean taajuuden kaupankäynnin osalta nämä 3-4 ms olivat massiivinen etu.Jokainen, joka näki tiedot hieman aikaisemmin, voisi tehdä tilauksia ensin ja saada likviditeetin.Leasing-pääsy linjaan maksoi miljoonia dollareita vuodessa, mutta se maksoi - millisekunnit kirjaimellisesti muunnetaan rahaksi. Jos yritykset olisivat valmiita käyttämään satoja miljoonia vain 3–4 millisekunnin ajamiseen, kuvittele ML-mallin etu, joka ei reagoi (vaikka välittömästi), mutta ennustaa markkinoiden liikkeitä. Jos tällainen malli olisi koskaan olemassa, markkinat huomaisivat välittömästi. Joten miksi emme näe julkisia menestystarinoita ML: stä rahoituksessa? Voit tarkastella sitä kahdella tavalla. Yksi on, että tulokset ovat olemassa, mutta niitä ei jaeta. Joskus näet paperin, jossa on hyviä numeroita, mutta ne ovat harvinaisia ja yleensä kirsikkavalikoituja. Toinen on, että on todellisia esteitä. Liian paljon melua Ei riittävästi tietoja Aina muuttuvat markkinat Tämä yhdistelmä tekee taloudellisista tiedoista hyvin erilaisia kuin säätiedoista, joissa melu on pienempi, koska järjestelmä noudattaa fysiikan lakeja, tiedot ovat runsaasti satelliittien ja anturien ansiosta, jotka tuottavat teratavua havaintoja päivittäin, ja taustalla oleva fysiikka pysyy vakaana, joten jopa vanhat tiedot pysyvät hyödyllisinä. Jokaiselle näistä rahoitusongelmista on tunnettuja korjauksia. Käyn läpi ne alla. Ongelmana on, että ne toimivat vain erillään. Kukaan ei ole onnistunut laittamaan niitä kaikki yhteen kaupankäynnin koneeseen. Kuten sanotaan, voit valita vain kaksi. Reducing noise with filters and aggregation Melun vähentäminen suodattimilla ja aggregoinnilla Taloudellisten aikojen sarjassa on heikko signaali, joka on haudattu meluun. Hinnat vaihtelevat joka sekunti - uutiset, huhuja, suurten pelaajien liikkeitä. Jopa yksinkertaiset linkit, kuten "hyvät uutiset → hinta nousee" usein hajoavat. Melun pääasiallisia lähteitä on kaksi: 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) Pääosat IBM Heron ”Mikä on Applen osakekurssi sekunnin kuluttua?” When More Volume Means More Noise On kuitenkin olemassa myös päinvastainen vaikutus: joskus Volyymi voi itse asiassa lisätä melua tietoihin. Vertaile kahta kaaviota: ne osoittavat Binance: n keskimääräiset BTCUSDT-hinnat, jotka painotetaan eri kaupankäyntimäärien mukaan. Ensimmäisessä tapauksessa 50 miljoonan dollarin volyymipainotettu kaavio näyttää "vähemmän melulta" - tämä tapahtui nopean hinnan laskun aikana. Toisessa tapauksessa kuitenkin sama painotettu keskiarvo osoittaa paljon enemmän "satunnaisia" hyppyjä. Tämä tapahtui siksi, että rauhallisemman hintakauden aikana osallistujat siirsivät suuria tilauksiaan useammin syvemmälle tilauskirjaan, mikä puolestaan vaikutti painotettuun keskimääräiseen hintaan. Lisää Se voi tuntua yllättävältä: jos lasket vain kunkin näiden kolmen indikaattorin muutosten määrän 22. elokuuta - 22. syyskuuta välisenä aikana, saat itse asiassa tietojen kasvun, kun "keskiarvo" hinta. P1_1_market_hits.csv: 2 374 605 tietopistettä P2_500k_market_hits.csv: 51,309,973 tietopistettä P3_50m_market_hits.csv: 133,191,896 tietopistettä Lähtökohtana on tämä: keskiarvo voi joskus pahentaa asioita. Smarter Targets Beat Raw Prices Toinen tapa "vähentää melua" ja "auttaa ML: tä" on uudistaa ennustustavoite itse keskimäärällä melua ajan myötä. Vahvempi yksi on: Tämä ratkaisee kaksi ongelmaa kerralla: "Anna ennustaa tarkka hinta 10 sekuntia tästä eteenpäin." ”Etsikäämme volyymipainotettua keskimääräistä hintaa seuraavien 10 sekunnin aikana.” 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.\ Esimerkiksi: kaaviossa verrataan keskiarvoa 1 sekunnissa 10 sekunnissa. 10 sekunnin tavoite on paljon helpompi ennustaa, ainakin yksinkertaisen regressio - koska se sisältää paljon vähemmän satunnaista melua. Don’t Predict Price, Predict the Crowd Joskus on älykkäämpi ennustaa ei itse hinta, vaan väkijoukon reaktio. Tekniset mallit, kuten "pää ja hartiat", saattavat puuttua tieteellisestä tarkkuudesta - mutta jos riittävät kauppiaat uskovat niihin ja toimivat, hinta todella liikkuu. Toisin sanoen, jos "viittaat" ML-malliin, mitä tarkalleen etsimme tiedoista (esimerkiksi tapauksissa, joissa markkinatoimijat yrittävät suorittaa tietyn teknisen analyysin mallin), malli oppii paljon tehokkaammin. Bootstrapping and augmenting limited data Bootstrapping ja rajoitettujen tietojen lisääminen Jos otat näytteitä hinnoista kerran sekunnissa, päädyt jotain 60 kertaa × 60 kertaa × 8 kaupankäynti tuntia × 5 päivää viikossa × ~ 50 viikkoa (lukuun ottamatta lomia) ≈ 7 200 000 pistettä vuodessa - alle 10 miljoonaa. Tietenkin on HFT-tietoja, joissa jotain tapahtuu millisekunnin välein, mutta se tuo takaisin vain ensimmäisen ongelman: tonnia melua ja hyvin vähän todellista signaalia. Sen ytimessä koneoppiminen on tilastoja, ja tilastoilla on temppuja pienien näytteiden käsittelyyn. Bootstrapping Ajatus on yksinkertainen: oletetaan, että sinulla on 100 havaintoa, mutta haluat 1000. Otat toistuvasti satunnaisia alaryhmiä - esimerkiksi 50 kohteita - ja lasket tilastoja. Mahdollisten "100 valitse 50" -yhdistelmien määrä on valtava. Tämän seurauksena saat satoja uudelleennäytteitä ja luotettavampia arvioita kuin jos luottaisit vain alkuperäiseen 100. Saalis on, että ajanjakson tämä tuskin toimii - et voi vain leikata sekvenssiä kappaleiksi menettämättä kronologiaa. Siksi klassista bootstrappingia käytetään harvoin hintojen ennustamiseen. Mutta tehtävissä, kuten 100 kaupankäynnin analysoinnissa, sitä voidaan soveltaa: voit keskimäärin yli alkuperäisen sata, tai rakentaa useita satunnaisia alaryhmiä 50 ja keskimäärin nämä tulokset. Data augmentation Toinen strategia on keinotekoisesti laajentaa tietokokonaisuutta. Kuvissa tämä on yksinkertaista: kiertää, vääristää - ja saat uuden esimerkin. Myös tekstissä. Rahoitus on vaikeampaa, mutta jotkut temput toimivat edelleen. Yksinkertainen esimerkki: jos malli on koulutettu vain härkämarkkinoilla, se ehdottaa aina "osta." Heti kun markkinat kääntyvät alaspäin - tappiot alkavat. kasvu kääntyy laskuun, Käännä ostokset myyntiin, Hyvät uutiset muuttuvat huonoksi. Algoritmi oppii tällaisista skenaarioista ja alkaa myydä putoavilla markkinoilla. Synthetic trade generation is a that still has many open questions field kenttä kenttä Lähestymistapa on suhteellisen yksinkertainen: ota todellisia kauppoja, liitä ne jakeluun (tai jakelujen joukkoon) ja ota sitten näyte tästä jakelusta tuottamaan ylimääräisiä synteettisiä tietoja. Viimeaikainen tutkimus perustuu yhä enemmän generatiivisiin malleihin: diffuusiomalleihin, GAN-malleihin, variaatioautokoodereihin. Esimerkiksi paperi ”Synteettisten taloudellisten aikajanojen luominen diffuusiomalleilla” kuvaa menetelmää, jossa järjestysluetteloiden sarjat muunnetaan DDPM:n kautta luotuun wavelet-tilaan ja sitten käännetään takaisin aikajanoihin. Toinen esimerkki on TransFusion, joka yhdistää diffuusion ja muuntajan arkkitehtuurit tuottamaan pitkät, korkean luotettavuuden synteettiset aikajaksot. Päätehtävänä on sovittaa yhteen kaksi vaatimusta: toisaalta markkinoiden tyyliteltyjen tosiasioiden säilyttäminen (rasvat hännät, volatiliteetin klusterointi, autokorrelaatiot jne.) ja toisaalta yli synteettisten esineiden välttäminen. Time shifts Ongelmana on se, että on helppo vahingossa ”katsoa tulevaisuuteen” (katso eteenpäin). Se on klassinen suunnitteluvirhe: koulutussarja päättyy sisältämään tietoja, joita mallin pitäisi ennustaa. Kaavioissa se näyttää hyvältä – mutta todellisilla markkinoilla se rikkoo. Toinen tekniikka on aikamuutokset: samojen tietojen uudelleenkäyttö viivästyksellä. Tärkein ongelma tässä on riski tuoda esiin etukäteen suuntautuva ennakkoluulo – klassinen suunnitteluvirhe, jossa koulutussarja sisältää vahingossa samat tiedot, joita mallin on tarkoitus ennustaa. Hyödyllinen analogia on sää: jos nyt sataa, todennäköisyys on suuri, että sataa jatkuu. Mutta sateen ennustaminen, kun kaikki jo kantavat sateenvarjoja, lisää vähän arvoa. Kaupankäynti toimii samalla tavalla: kun on juuri tapahtunut suuri hintaliike, seuraava liike on myös todennäköisesti suuri. **Sopeutuminen muuttuviin markkinoihin kokoonpanoilla ja liukuilla ikkunoilla ** Kolmas ongelma – markkinat käyttäytyvät kuin villi länsi. Kaikki muuttuu nopeasti. Voisit sanoa: ”Käytetään vain viime kuukausien tuoreita tietoja.” Ensembles Yksi käytännöllinen lähestymistapa on ensembles. Voit kouluttaa useita malleja: 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.