Koneoppiminen ja algoritmit treidauksen tukena

  1. Slippage 0,1 %, myös komissiot otettu huomioon
  2. Kauppaa käydään Nasdaq100 osakkeilla
  3. Sharpe 1,30

Epärealistinen osuus backtestissä on se, että salkun ja positiokoon kasvaessa ostettaisiin aika isoja määriä samaa osaketta, ja epäilen että slippagea pitäisi varmaan kasvattaa.

Minulla on mahdollisuus ajaa myös tuo Monte Carlo mutta en ole vielä niin hyvin perillä sen tarkoituksesta että osaisin arvioida millä asetuksilla se pitäisi ajaa, tai osaa tulkita tuloksia. Täytyy tutustua mm. tähän lisää.

Ja tärkeänä tietona tietenkin myös se että kaupat on tehty 100% käteisellä ja marginaalia ei ole testin kaupoissa käytetty.

Riippuu paljolti siitä miten hyvin backtestit on toteutettu. Nopeasti ei kovin hyvää varmuutta ole saatavissa algoritmin hyvyydestä. Ehkä laskisin ensin 10 vuoden tuloksista vaikka kuukausittaiset ylituotot ja näiden keskihajonnan.

Sitten vaan varsinainen testijakso treidauksen osalta käyntiin. Jos backtestitn ylituotto on vaikka 2,0% kuukaudessa ja keskihajonta on 3,0% niin 68% kuukausista pitäisi osua välille (-1,0%, +5%). Tuosta on ihan hyvä lähteä liikkeelle ja antaa osviittaa suoriutumisesta.

image

5 tykkäystä

Vähän lisätestailua kielimallilla, jossa muutoksia aikaisempaan nähden ainakin:

  • Syötettävää dataa muutettu monipuolisemmaksi
  • Opetuksessa ennustetun luokan etäisyyden perusteella määritellään sitä vastaava painoarvo
  • Generoinnissa suurimmalle osalle luokista muutetaan todennäköisyydeksi 0%. Lopuista arvotaan todennäköisyyksien perusteella 5 joiden painotettu keskiarvo ennuste on.

Muita tietoja:

  • Parametrit 5,8 miljoonaa
  • Opetusdatana Nasdaq 100, SP500, FTSE 100, Nikkei 225 osakkeiden hintatiedot (ensimmäiset 90%)
  • Tarkastelussa ennustetaan Nasdaq 100 osakkeiden tuottoja
  • Tässä toistaiseksi viimeisen 10 vuoden tuotot, joten menevät osittain päällekkäin

Alla ensimmäisenä hyvin alkuvaiheen ennusteet, jonka kuvioissa (Ennuste, Suunta oikein ja Ennustevirhe) on

  • Muutaman tuhannen havainnon keskiarvo
  • Negatiivisin ennuste vasemmalla ja positiivisin oikealla
  • Ennusteen arvot suunnilleen välillä -30 - + 10
  • Ennustevirhe pienimmissä ennusteissa suunnilleen 20% ja suurimmissa ennusteissa 10%
  • Ennustevirhe on pienimmillään ennustettaessa 0% tuottoa seuraavalle päivälle
  • Negatiivisista ennusteista suunta ennustetaan oikein suunnilleen 47,5 %
  • Positiivisista ennusteista suunta ennustetaan oikein suunnilleen 53 %


Tuottokuvio on vähän tuollainen hömppä yksinkertaistus, jonka avulla on vain tarkoitus havainnollistaa tuottoa. Tässä kaikki havainnot on laitettu peräkkäin suunnilleen aikajärjestyksessä ja sijoitetaan, kun ennuste on yli 0%.

Alla mallia on opetettu vähän enemmän, jonka jälkeen ennusteiden ja ennustevirheen vaihteluväli pienenee merkittävästi. Positiivisia ennusteita on enemmän ja ennusteiden suuntaa ennustetaan vähän tarkemmin.

Ensimmäinen kuvio on lauantailta ja alla oleva tiistailta. Kehityksen suunta on aika samanlainen kuin edellisessä. Vaikuttaa kuitenkin, että jatkossa kehitys hidastuisi.

Vau! Mahtavaa duunia :slight_smile:

Kysymyksiä:

  • Oliko ennustettavat Nasset siis out-of-sample? Kysyn koska LLM:llä on suhteellisen hyvä tendenssi “muistaa” systemaattisuudet opetusdatasta.
  • Mikä on Y-akselin yksikkö noissa kaavioissa (ennuste, suuntaoikein, ennustevirhe, tuotto)
  • Entä mitä nuo X-akselin luvut ovat
  • Ennustettiinko yksittäisiä arvoja vai pidempiä sekvenssejä?
  • Oliko siis mallin parametreja vai opetus tokeneita 5.8 miljoonaa? Muistaakseni edellisessä GPT2-mallissa parameterjä oli n. 10M ja siksi kysyn :slight_smile:.
  • Muutitko mallia käsittelemään suoraan numeraaleja vai mentiinkö edelleen Karpahtyn mallin character-tason tokenisoinnilla?

Jos siis tulkitsen tätä oikein ja kyseessä on out-of-sample ennustamista, niin tuo lyhyen aikavälin 0% ennustevirhe on vähintään lupaava indikaattori :open_mouth:

Vastauksia

  • Ei ollut täysin out-of-sample, mutta osittain kuitenkin. Tulokset on kuitenkin ihan vastaavia kuin testaamani DAX yhtiöiden ennusteet, joita ei ollut käytetty opetuksessa lainkaan.
  • Y-akselin yksikkö Ennuste, Ennustevirhe ja Suunta oikein kaavioissa on %. Ennustevirhe viimeisessä alimmillaan n. 1,4 prosenttiyksikköä
  • X-akselilla on kaikki havainnot sortattuna ennusteen perusteella pienimmästä suurimpaan. Yhteensä suunnilleen 100 osaketta * 10 vuotta * 251 päivää/vuosi = 251 000. Käytännössä kuitenkin jonkun verran vähemmän.
  • Poikkeuksena Tuotossa on suunnilleen aikajärjestys ja alkusalkuksi asetettu 1$, joka kasvaisi tuonne 10^28$.
  • Ennustetaan toistaiseksi ainoastaan yksittäistä päivää.
  • Mallin paremetreja on nyt toi 5,8 miljoonaa. Tässä välissä testailin 3,3 miljoonan parametrin mallia, mutta päätin kuitenkin vähän nostaa määrää. Opetuksessa käytettävien tokenien määrää en ole laskenut, mutta kasvatan sitä nyt koko ajan.
  • Edelleen mennään character-tason tokenisoinnilla, joita on yhteensä 582. Testinä näistä puolet on yhden päivän tuotoille ja toinen puolisko 1-200 päivän tuotoille

Ihan kiinnostavilta nää tulokset näyttää, mutta vaativat kyllä kaveriksi hyvän strategian ja halvat kaupankäyntikustannukset.

2 tykkäystä

Alla muutaman osakkeen pidemmän aikavälin ennusteita. Kuvioissa 150. päivän kohdalla tehdään ennuste seuraavalle 50 päivälle.

Noi on tuossa vähän sarjakuva tyyliin. Seuraavan ruudun ennuste tehdään aina mihin edellisen ruudun ennustejakso loppuu (AMZN 0 → AMZN 1 … → AMZN 5). Viimeisen ruudun ennustejakso päättyy nykyhetkeen.

Ihan mielenkiintoisen näköisiä käppyröitä. Välillä osuu hyvinkin ja välillä sitten taas menee ihan vastakkaiseen suuntaan.

1 tykkäys

Tuore uutinen XTX:n suunnitelmista XTX:n Kajaanin datakeskus on valtava: lattiaa tulee 15 000 neliömetriä ja hinta on 100 miljoonaa euroa | Kotimaa | Yle.

Melkoiset systeemit rakennetaan pienten marginaalien hyödyntämiseksi.
" XTX Markets
– Ostaa ja myy osakkeita, valuuttoja, velkakirjoja, raaka-aineita ja optioita yli 80 markkinapaikalla.
– Etsii markkinoiden tehottomuudesta johtuvia hyvin pieniä ja vain sekunnin osia kestäviä hintaeroja.
– Sama tuote voi olla eri puolilla maailmaa eri hintainen, ja XTX:n monimutkaiset algoritmit tunnistavat tällaiset tilanteet.
– Yhtiöllä ei ole yhtään ihmismeklaria, vaan kaikki kaupat tekee kone.
– Päivittäinen kaupankäyntisumma on lähes 300 miljardia Yhdysvaltain dollaria.
– Liikevoitto oli vuonna 2022 1,1 miljardia puntaa ja vuonna 2023 835 miljoonaa puntaa. "

5 tykkäystä

Oletko testannut ja saanut hyviä tuloksia GRU layereitä käyttävillä malleilla? Olen käyttänyt muutamissa aikasarjoihin liittyvissä projekteissa ja todennut aika hyväksi.

Eipä ole tullut testailtua aikaisemmin. Niillä näyttäisi tulevan ihan hyviä tuloksia muutaman paperin perusteella, joten vaikuttaa ihan tutustumisen arvoisilta.

RNN:t tai niiden variantit kuten GRU:t ja LTSM:t ovat varmasti ihan passeli ratkaisu, jos esim. opetusdata ja laskentakapasiteetti asettavat rajoituksia. RNN:t olivat kuitenkin sekvenssidatan opetuksen sota-malleja sen reilu kymmenen vuotta ennen transformereita. Siksi löytynee myös muita uudempia malleja paremmin tutkimusta.

Selvää lienee kuitenkin jo nyt se, että transformerilla tai muilla uudemmilla malliarkkitehtuureilla on mahdollisuus oppia sellaisia säännönmukaisuuksia, jota RNN:illä jää mallien yksinkertaisuuden vuoksi oppimatta.

Totta, transformerit mahdollistaa paljon pidemmän ”muistin” ja siten riippuvuudet paljon kaukaisempiin tapahtumiin datassa huomioidaan paremmin. Mikäli datasetti on pieni ja haluaa testata yksinkertaista mallia lyhyille aikasarjoille, niin LSTM/GRU ovat ihan toimivia edelleen. Näistä melko paljon tuoreitakin julkaisuja ongelmissa joihin ne sopivat luontaisesti paremmin. Transformerit parempia, mutta monimutkaisempia toteuttaa.

wau paljon siistiä keskustelua!

pohdiskelin, et voiskohan kielimallista olla hyötyä perussijottajille enempi, jos analyysiin pohjautuvaa dataa sais jotenkin kuratoitua ensin? esim jonkun uutis / makro databasen kautta.

vähänniinkuin cursor tekee koodauksessa, mut tää toimis sijotustiedossa.

1 tykkäys

Joo ja ei.

Cursor toimii kahta kautta erityisen hyvin koodaukseen

  1. Koska se on fine-tunattu massiivisella määrällä koodia nimenomaan koodauksen downstream-taskeihin
  2. Sen voi kytkeä RAGaamaan esim. organisaation omaa code basea

Periaattessa kohdan 2. voisi toteuttaa jonkun frontier-mallin kanssa. Mutta silti ei ole odotettavissa talousanalyysiin yhtä hyviä tuloksia kuin Cursorilla koodaukseen, koska 1. pitäisi tehdä myös siten, että viritetään alla oleva LLM nimenomaan ymmärtämään talousanalyysia geneeristä mallia paremmin.

Yllä oleva on jossain määrin toki spekulaatiota, koska mallista ja sen treenauksesta ei kerrota juuri mitään. Mutta yleiskokemuksen perusteella on oletettavaa, että yllä oleva pitää paikkaansa.

Voi taas olla et noi nykyset mallit ei pääse täyteen potentiaaliin analyysissa, koska 1. niil ei aina oo ajankohtasinta dataa ja 2. sekin data joka niillä on sotkeutuu kohinaan

tähän palatakseni, päätin itseasiassa kokeilla tehdä tommosta mallia just RAGin avulla. Latasin siihen 20 energiasektorin yhtiön 10-K filingia jenkeistä ja saan huomattavasti parempia vastauksia kuin normi gpt:llä, joskaan en läheskään riittävän hyviä. Veikkaan et pystyn jatkokehittää sitä tekemällä vielä niin, että malli pääsee käsiks taulukoihin esim. tase, tuloslaskelma jne. et saadaan ns kovaa dataa vastauksien tueksi. Ehkäpä suurin hyöty tästä tulee siitä, että käyttäjä pääsee kahlaamaan satoja raportteja nopeasti. Jos muitakin kiinnostelee niin värkkään tässä lähiaikoina vielä UI:n tohon niin pääsee sit testailemaan.

4 tykkäystä

Esimerkkinä: kysyin juuri, että kerro Exxon mobilen taseesta. pohjana gpt-4o mutta optimoinnin avulla malli osaa kertoa faktoja paljon tarkemmin ja numeerisemmin.

—Model response—
Exxon Mobil Corp’s balance sheet reflects its financial position and provides insights into its capital structure and financial health. Here are some key elements derived from the provided data:

  1. Current Liabilities:

    • Total current liabilities, excluding notes and loans payable, have been decreasing over the years from $68,411 million in 2022 to $61,226 million in 2023, and $65,352 million in 2024.
  2. Long-term Liabilities:

    • Total long-term liabilities, excluding long-term debt, have shown an increase from $56,990 million in 2022 to $60,980 million in 2023, and then a further increase to $75,807 million in 2024.
  3. Equity:

    • ExxonMobil’s share of equity at the year-end was $195,049 million in 2022, increased to $204,802 million in 2023, and further to $263,705 million in 2024.
    • The total equity, which includes noncontrolling interests, was $212,538 million in 2023 and increased to $270,606 million in 2024.
  4. Debt:

    • Long-term debt slightly decreased from $40,559 million in 2022 to $37,483 million in 2023 and further to $36,755 million in 2024.
    • The total debt figures were $41,193 million in 2022, slightly increasing to $41,573 million in 2023, and remaining fairly stable at $41,710 million in 2024.
  5. Financial Ratios:

    • The ratio of current assets to current liabilities was 1.41 times in 2022, increased to 1.48 times in 2023, and then slightly decreased to 1.31 times in 2024.
    • Debt to capital ratio decreased from 16.9% in 2022 to 16.4% in 2023 and further down to 13.4% in 2024.
    • Net debt to capital stood at 5.4% in 2022, dropped to 4.5% in 2023, and increased to 6.5% in 2024.
  6. Total Capital Employed:

    • Total capital employed, which is a Non-GAAP measure, increased annually from $238,166 million in 2022 to $248,714 million in 2023, and to $307,489 million in 2024.

Overall, ExxonMobil’s financial position has shown improvements in equity and capital employed over the years, with a stable approach to managing debt levels

2 tykkäystä

Hyvää settiä! Tuohon voisi malliksi ottaa vielä ehkä mieluummin jonkin CoT-mallin (esim. DeepSeek R1, jos vain laskentaresursseja löytyy), jolloin numeerinen analyysi voisi olla vielä syvempää.

Itse olen sukeltamassa edellä keskustellun LLM-avusteisen teknisen analyysin projektiin, jolle @Ripelein tekikin jo proof-of-concept kokeilua.

Ajatuksena seuraava:

  1. Zero-shot ennustaminen, jossa pre-trained mallilla ennustetaan suoraan treidisignaaleja
  2. Osakedatalla treenattu malli treidisignaalien downstream-ennustamiseen

Yksityiskohdat hioutuvat vielä, mutta ajatus on piste-estimaattien sijaan koittaa taikoa jokin jakauma (esim. zero-shotissa eri temperature säädöillä ja custom-mallilla diskretisoimalla hintamuuttujat ja ottamalla vocab-jakauma ennen token-ennustetta). Ajatuksena siis se, että esim. 70% todennäköisyys jollekin estimaatille voisi olla vahvempi signaali kuin vaikka tasajakauma 10 eri piste-estimaatin suhteen. Varmaan sellainen minimissään päivätaso on se, missä toimitaan datarajoitteiden vuoksi.

Projekti tulee viemään vuoden (opinnäytetyö), mutta koitan rapsata välituloksia tänne ajoittain.

4 tykkäystä

Alla on ennustettuja markkina-arvoja 25 'Q1 tulosten julkaisseiden yhtiöiden osalta, joista olen naputellut tuloslaskelman ja taseen lukuja ylös. Rahavirtojen osalta tiedonkeruu on toistaiseksi kesken, mikä voi näkyä joidenkin yhtiöiden ennusteissa.

Ennustemenetelmänä ihan simppeli neuroverkkoihin perustuva malli. Malllin menevät tiedot Liikevaihto, liikevoitto, tulos ennen veroja, tulos, taseen loppusumma, oma pääoma ja nettovelka viimeiseltä vuodelta + tulevalta vuodelta. Tietojen osalta malliin menee lisäksi niiden muutos vuoden taikaiseen nähden.

Aika moni yhtiö, jotka lukujen perusteella näyttävät halvoilta tulevat tässäkin esiin hyvällä potentiaalilla. Minkään näköistä laadullista analyysiä ei ole mukana, joten sitä puolta on tietty hyvä miettiä.

Yhtiö Ennuste, MEur Markkina-arvo, MEur Potentiaali, %
TEM1V 240,4 49,4 386,8
RAUTE 362,9 105,0 245,8
EEZY 54,3 18,6 192
EVLI 634,5 287,6 120,7
OMASP 630,1 303,5 107,6
FORTUM 24540,3 13252,1 85,2
NLG1V 144,3 83,5 72,9
PIHLIS 542,0 324,8 66,9
ANORA 361,5 228,2 58,4
WITTED 34,6 22,8 52,3
SOLTEQ 18,1 12,3 47,3
CGCBV 3881,5 2871,1 35,2
OLVAS 951,1 719,8 32,1
ROBIT 37,6 29,1 29,1
LINDEX 572,2 460,9 24,2
FONDIA 23,2 18,8 23,4
VERK 134,6 109,8 22,6
NOKIA 31053,5 25472,5 21,9
RELAIS 322,5 266,7 20,9
ICP1V 361,1 298,9 20,8
STERV 7807,4 6915,3 12,9
OUT1V 1733,1 1578,2 9,8
KCR 5468,8 5016,8 9
DUELL 36,0 33,1 8,6
TTALO 1683,5 1561,3 7,8
TNOM 174,0 164,3 5,9
FSECURE 353,3 334,7 5,6
LAT1V 365,1 351,3 3,9
VALMT 5157,5 5044,8 2,2
KEMIRA 3068,4 3059,4 0,3
KAMUX 86,6 88,8 −2,5
KOSKI 170,7 177,1 −3,6
WRT1V 9315,8 10229,9 −8,9
SIILI 45,1 50,4 −10,5
TELIA1 141201,1 160767,6 −12,2
HUH1V 3160,1 3635,9 −13,1
NDA-FI 38536,8 44720,6 −13,8
KREATE 62,9 73,5 −14,4
METSO 6887,5 8264,8 −16,7
SUY1V 98,9 120,7 −18,1
SAMPO 19644,9 24915,2 −21,2
TIETO 1488,9 1938,6 −23,2
KESKOB 6151,4 8248,1 −25,4
MANTA 2038,9 2813,6 −27,5
ORTHEX 64,3 89,4 −28,1
ALMA 720,2 1010,3 −28,7
METSB 864,6 1216,4 −28,9
GLA1V 82,9 117,5 −29,4
NESTE 4975,2 7089,5 −29,8
NOHO 137,8 198,0 −30,4
ELISA 5374,4 7872,8 −31,7
MEKKO 364,2 533,2 −31,7
UPM 8871,1 13361,4 −33,6
FSKRS 776,2 1207,1 −35,7
SCANFL 361,6 564,6 −36
INDERES 20,1 32,4 −38,1
ORNBV 4766,1 7839,5 −39,2
ADMIN 21,1 35,2 −40,1
SANOMA 956,5 1627,1 −41,2
EXL1V 23,6 40,6 −42
KELAS 8,0 14,2 −43,4
VAIAS 959,2 1744,0 −45
TYRES 504,7 921,4 −45,2
ETTE 149,2 288,4 −48,3
QTCOM 784,1 1574,0 −50,2
KNEBV 14489,9 29322,3 −50,6
HARVIA 364,0 805,6 −54,8
PON1V 356,0 814,6 −56,3
REG1V 326,8 750,6 −56,5
ACG1V 14,8 34,4 −57
WETTERI 14,4 33,6 −57,2
ADMCM 105,0 262,1 −59,9
QPR1V 6,2 19,1 −67,5
WITH 48,7 168,8 −71,1
VIK1V 88,1 350,5 −74,9
MARAS −6,3 3,6 −273,9
4 tykkäystä