Koneoppiminen ja algoritmit treidauksen tukena

Tämmöinen kun täältä puuttuu, niin ajattelin perustaa. Lähdin itse seilailemaan omasta mielenkiinnostani (sekä hiukan ammatin puolesta) koneoppimisen ja algoritmien maailmaan. Eli lyhykäisyydessään: Olen pitkään ollut (ja tulen olemaan) teknisen analyysin kannattaja, mutta omilla silmillä ei aina kaikkea huomaa, ja näenkin koneoppimisen ja algojen valjastamisen datan saamiseen ja visualisoimiseen tärkeänä.

Algo-strategoissa käytän pääasiassa kilpikonnastrategiaa, viitaten siis trendi-treidaukseen jonka toi tunnetuksi aikansa supertähti Richard Dennis. Tämän tukena käytän ABCD-strategiaa.

En luota täysin algoihin ja pohjaan omat tekemiseni edelleen TA:n taakse, joten analysoimalla dataa eri näkökulmista, kuten tuottojen, volatiliteetin, sentimenttien, tunteiden, keskimääräisen momentin, syklisyyden, trendin, kauden, lineaarisen analyysin, todennäköisyyslaskennan yms. menetelmien keinoin uskon, että kaupankäyntiin saadaan sitä tulevaisuuden usvaverhoa vedettyä pois. Alustana käytän Jupyter Notebookia tämän graafisten ominaisuuksien sekä koodin segmentöinnin tähden.

Koneoppiminen on edennyt hyvää vauhtia viimeisen vuosien aikana, mutta on edelleen lasten kengissä, joten tässä ketjussa esittämiini väitteisiin tulee suhtautua vielä suhteellisen kriittisesti sekä kyseenalaistaa tuloksia.

Data on haettu Yahoo Financesta päivätarkkuudella ja pääasiallisena timeframena käytetty viittä vuotta. Tämä tarkoittaa siis sitä, että koneelle ei ole tietyissä tapauksissa opetettu mitä kriisi tarkoittaa (2008). Dataa toki voi hakea muualta ja paremmilla timeframeillakin, mutta muissa paikoissa ongelmana on se, että yleensä niistä ei suomen pörssiä löydy. Toistaiseksi mukavin API johon olen törmännyt esim. USA:n pörssien tutkailemiseen on Alphavantage.

TA:lle jonka apuna tätä käytän onkin olemassa jo oma ketju täällä, joten suosittelen TA-aiheiset kysymykset pistämään tänne.

Kaikkia salaisuuksia menetelmien takana en paljasta, mutta jos herää kysyttävää, toiveita tai pyyntöjä, niin mielelläni avustelen.

16 tykkäystä

Hieman showcasena mihin tämä ketju liittyy niille jotka eivät aloitusta jaksa lukea, vaan tuijottelevat mielummin kuvia tulen antamaan kahdet esimerkit. Ensimmäinen esimerkki liittyy portfolioihin. Portfolioissa on tärkeää, että sijoitukset on hajautettu hyvin sekä volatiliteetti osakekohtaisesti on omalla riskitasolla siedettävällä tasolla. Tulosta (+/-), kurssikehitystä, keskiarvoa sekä volatiliteettia avuksi käyttämällä osakkeita voidaan vertailla keskenään teknisestä näkökulmasta.

Esimerkkiin nappasin kourallisen suomalaisia yrityksiä, pörssinimet kuvissa:

Ilmeisesti Orion, Kone, Renkaat, Sampo, Elisa yms. ovat alhaisen volan osakkeita, kun puolestaan Vaisala, Valmet, Metsä Board yms ovat vertailuryhmän korkeavolaisempia yksilöitä. Tuottoihin yhteen suuntaan ja volaan toiseen suuntaan suhteutettuna ja jakajalla eriteltynä kone antaa siis ylläolevat suositukset. Data on viisivuotista.

Mikäli ei olisi ostoksilla, vaan haluaisi tehdä riskikartoituksen omasta portfoliostaan (esimerkin kaikki osakkeet yhteensä), niin sen voisi samalla datalla visualisoida seuraavasti:


Hajautus on siis suhteellisen monipuolisesti toteutettu.

Jos sen sijan olisi ostoksilla ja keskittyisi hypoteettisesti “Osta”-alueen yrityksiin, niin riskikartoitus näyttäisi tältä:

Postailen illemmalla vielä yhden esimerkin osakekohtaisesta analyysistä käyttäen ketjun introviestin menetelmiä avuksi demonstroidakseni kuinka saada laaja tekninen katsaus osakkeeseen.

16 tykkäystä

Nyt on mielenkiintoista settiä. Pistähän vielä koneanalyysi Nokiastakin näytille.

2 tykkäystä

Ajattelin aluksi tehdä tuon esimerkin Metsä Boardista, mutta pistetääs nopeasti kyhätty Nokia tähän nyt näytille. Muistutus vielä että tässä ei ole ollenkaan huomioitu somea, fundia tai muita ulkoisia tekijöitä hinnan ulkopuolelta.

Masiinoille tuli syötettyä Nokian viimeisen 4v kurssitiedot (<18.7.2019). Jottai saisi idean siitä missä Nokia olisi muihin yhtiöihin nähden runnasin aluksi hintavertailun Nokiasta. Optimitilanteessa tämä tehtäisiin kilpailijoihin nähden, mutta runnasin tämän nyt muiden randomeiden kanssa joiden kurssitiedot olin jo nappaissut talteen. Nokian värjäsin punaisella jotta näkyy paremmin.
1Comparison

Kun tietää osakkeen position jotakuinkin muihin osakkeisiin nähden, voi sitä lähteä analysoimaan näkyvän datan kautta. Simppelein tapa arvioida suoritusta on vertailla vuosia keskenään, jotta löytää vahvat ja heikot ajat. Alla viimeiset 4v yhdessä kuvassa.

Eriteltynä toisistaan vuodet näyttävät tältä:


Vuoden vaihde siis usein on toiminut käännekohtana hinnassa. Tämä tieto on hyvä pitää mielessä, mutta se on vain observaatio jolla loppupeleissä emme tee tässä juuri sen kummempaa.

Mikä meitä kiinnostaa on osakkeen hintaprofiili. Profiili saadaan laskemalla yleisin hintataso osakkeelle:


Ilmeisestikin nokian yleisin taso on vitosen kummallakin puolella. Tarkennus tähän saadaan 4v keskiarvosta laskemalla CloseMean, eli sulkuhinnan keskiarvotaso.

Lisäämällä kuvaan myös lineaarisen keskiarvon huomaamme, että keskiarvollisesti Nokia on ollut laskussa viimeiset 4 vuotta.

Käyttäen avuksi lineaarista keskiarvoa voimme myös illustroida miltä kurssi näyttää keskiarvoiseen luisumiseen nähden:


Tästä laskutoimituksesta saa myös kyhättyä indikaattorin hintojen tarkkailuun tarvittaessa.

Lisäämällä kartalle MA12:n saamme seuraavan kuvan, jonka tuloksia käytämme tulevaisuudessa:

Ja se tulevaisuus tulee tässä. Eli käyttäen avuksi MA12:sta ja sulkuhintoja voimme laskea ja visualisoida keskiarvon kurssin suunnalle sekä keskiarvon kurssipoikkeamat (suomenkielen hienouksia). Teknisesti ottaen kuvassa näette siis mustan standardina, sekä sinisen sulkuhintana ja oranssin MA12:na. Mollivoittoisuus näkyy.

Mitä tämä tarkoittaa siis itse osakkeessa? Saako tätä jotenkin järkevämmän oloiseksi tavalliselle tallaajalle? Päivämäärien, hintojen sekä algojen ansiosta saadaan datasta siistittyä myös kausiluontoiset hintamuutokset:


Selvin kuvio lienee alas päin viettävä trend, ja mielenkiintoisin lienee seasonal eli kausiluontoinen poikkelehtiminen. Parin päivän päästä ollaan graafin mukaan ilmeisesti taas hetkellisissä pohjissa.

Mutta! Tarkoittaako tämä sitä että kannattaisi ostaa?

Tuo on kaikille henkilökohtainen kysymys ja riippuu henkilöstä itsestään. Itse odotan mielelläni, että kaikki tähdet astuvat riviin mikäli pitää ostopäätös tehdä. Ylireagoinnin toteaminen kurssissa on joissakin tapauksissa hyödyllistä:


Edellinen ylireagointi tapahtui siis keväällä kun hinta kävi 4,23:ssa. Tämä olisi ollut hyvä hetki pistää pilkki ulos.

Miten osake käyttäytyy sitten eri hintatasoilla? Volaa/scatteria hinnassa voidaan kuvata seuraavasti:


Stabiileinta hinta on 4,2 - 5,8 eur välillä.

3D-kuvaksi käännettynä:

Mistä algo tunnistaisi ostopaikoija?

Tämä riippuu algosta mikä on käytössä. Mikäli algo perustuu anomaliteetteihin hinnassa ja pyrkii normaalistasoon, eli siis tunnistaa ääripäät hinnassa ja myy tämän perusteella, outputti voisi näyttää seuraavalta:

Tämä käännettynä pilarigraafiksi kertoo otollisimmat osto - ja myyntitilaisuudet 4:n vuoden aikana:


Eli mitä vähemmän punaista sitä rauhallisempaa ja riskittömämpää liikehdintä on ollut. Punaiset kuvaavat ylläolevan kuvan pisteitä ja sininen hintatasoa.

Tuloksien kartoittamisessa voidaan käyttää myös Monte Carlon simulaatiomenetelmää, mikä on tietääkseni käytössä mm. sääennustuksissa. Menetelmästä voi lukea lisää wikipediasta.
Lyhykäisyydessään, simulaatio rakentaa annetun määrän verran randomeita ennusteita joita voi karsia pois todennäköisyyden mukaan. En tässä analyysissä käytä menetelmää muuta kuin demo-mielessä. Alla demonstroituna 100 todennäköisintä reittiä kurssille 4 vuoden datan persuteella.

Tämäkin on paljon helpommin luettavissa pylväiköstä:

Ei varsinaisesti sijoitusstrategia, mutta antaa hyvän kuvan siitä mitä tulevaisuudelta voi odottaa yhdistämällä tämä kaikkeen muuhun dataan mitä ylhäällä on käyty läpi.

Mutta mutta! Missä vaiheessa katsellaan algojen tuloksia?
Kattellaan niitä nyt sitten niin.

Itse käytän mielelläni kombinaatiota kahdesta eri algosta. Toinen pohjautuu itse Legendan, Richard Dennissin oppeihin (kts. Turtle strategy) eli trendin muutoksiin, ja toinen ABCD-kuvioon pörssissä.

Alla ensimmäisenä mainittu. Sääntöinä: Max ostot: 200, Max myynnit: 1000:
day 314: buy 200 units at price 887.600000, total balance 9112.400000 (INV 200 )
day 324: buy 200 units at price 864.800000, total balance 8247.600000 (INV 400 )
day 325: buy 200 units at price 830.000000, total balance 7417.600000 (INV 600 )
day 326: buy 200 units at price 813.600000, total balance 6604.000000 (INV 800 )
day 327: buy 200 units at price 794.400000, total balance 5809.600000 (INV 1000 )
day 329: buy 200 units at price 787.200000, total balance 5022.400000 (INV 1200 )
day 330: buy 200 units at price 771.600000, total balance 4250.800000 (INV 1400 )
day 337: buy 200 units at price 762.000000, total balance 3488.800000 (INV 1600 )
day 451, sell 1000 units at price 5370.000000, investment 40.944882 %, total balance 8858.800000, (INV 600 )
day 452, sell 600 units at price 3231.000000, investment 41.338583 %, total balance 12089.800000, (INV 0 )
day 453: cannot sell anything, inventory 0
day 454: cannot sell anything, inventory 0
day 455: cannot sell anything, inventory 0
day 456: cannot sell anything, inventory 0
day 466: cannot sell anything, inventory 0
day 603: buy 200 units at price 802.800000, total balance 11287.000000 (INV 200 )
day 605: buy 200 units at price 784.000000, total balance 10503.000000 (INV 400 )
day 607: buy 200 units at price 780.000000, total balance 9723.000000 (INV 600 )
day 608: buy 200 units at price 774.000000, total balance 8949.000000 (INV 800 )
day 886, sell 800 units at price 4344.000000, investment 40.310078 %, total balance 13293.000000, (INV 0 )
day 887: cannot sell anything, inventory 0
day 958: buy 200 units at price 872.800000, total balance 12420.200000 (INV 200 )
day 959: buy 200 units at price 868.400000, total balance 11551.800000 (INV 400 )
day 960: buy 200 units at price 854.200000, total balance 10697.600000 (INV 600 )
day 961: buy 200 units at price 853.700000, total balance 9843.900000 (INV 800 )
day 962: buy 200 units at price 846.500000, total balance 8997.400000 (INV 1000 )

Ja alla kuva ABCD:n tuloksista kartalla:


Sekä indikaattorimuodossa:

Erona näillä kahdella on se, kuten tarkkasilmäisimmät ovatkin huomanneet, että ensimmäinen sopii pitkille aikaväleille ja toinen keskipitkille aikaväleille. Ensimmäisessä käytänkin 4v dataa ja ABCD:ssä 1v dataa.

Heitän sen metsä been tänne viel jossain välissä.

Ja ihmeessä, jos tulee mieleen hyviä strategioita ja huomioita niin huudelkaa.

17 tykkäystä

En löytänyt em. kuvauksestasi suoraan sellaista, mitä itse en TA:sta löydä. TA:n avulla ei voi suoraan ennustaa, vaan sehän perustuu osto- ja myyntihetkien optimaaliseen ajoitukseen. Ne on sitten kiinni lisäksi siitä, mikä aikajänne positiolla on. Mutta en tuosta nähnyt, miten se tulevaisuuden ennustaminen tapahtuu ja miten paljon siitä on dataa (ennusteiden onnistuminen).
Koska itse olet perehtynyt TA:han, niin avaatko hieman, miten tämä poikkeaa siitä (verrattuna niihin TA-menetelmiin, joita olet itse soveltanut). Laskenta/algothan pitää saada toimimaan reaaliajassa, jotta siitä olisi hyötyä esim. treidaamisessa.

2 tykkäystä

Olet tuossa osittain oikeassa. Avaan asiaa hiukan osissa. Jos haluaa suoraan siirtyä pelkästään algo-treidaamiseen ja jättäytyä itse taka-alalle, niin se vaatii pääsyn API-rajapinnan kautta live-dataan mitä jostakin pörssistä feedataan, kuten esimerkiksi alphavantagesta. Ikävä kyllä en ole löytänyt mitään API rajapintaa josta saisi suoraan pullattua live-dataa suomen pörsseistä mitä itse treidailen, joten olen joutunut näissä tyytymään ns. staattisen datan syöttöön csv-tiedoston kautta. Tämä tietysti rajaa live-treidaamisen algoilla pois kuviosta ja pakottaa päivä- ja viikkotreidaamiseen. Mikäli Saksan DAXin treidailu kiinnostaa, niin DAX löytyy Alphavantagesta Suomea lähimpänä pörssinä. AV:n API on ilmainen.

Mikäli on kiinnostusta rakentaa täysin automaattinen algo joka tekee treidit puolestasi sekuntien reaktioajalla, niin paras tapa päästä tätä harrastamaan on tällä hetkellä joko keskittyä täysin cryptoihin johtuen siitä, että hyvin useat exchanget jakavat omaa API:aan jota kautta saat sekä live-datan sekä toimeksiannot toteutettua sekä APIt ovat usein täysin ilmisia. Pörssimaailmassa täysi automaatio on haastavampaa ja keskittyy pääasiassa suuriin toimijoihin. Kryptopuolella löytyy hyvä kirjasto algon pystyttämiseen täältä.

Nordnet tässä lienee edelläkävijänä tarjoaa omaa API-rajapintaansa, mutta ei ilmeisesti täysin ilmaiseksi. Lisäksi tuossa on se, että viimeisin uutinen on 4:n vuoden takaa, joten toiminnastakaan ei ole takeita. :confused:

Kysymykseesi vastatakseni eroista TA:n ja koneella suoritettavan päivätreidailun välillä on se, että TA:sta opittuja neuvoja ja strategioita voi syväoppimisen kautta opettaa algoille. Prosessi on pähkinän kuoressa se, että koodaat kasan indikaattoreita ja sääntöjä, opetat iteraadioiden kautta mallille missä tilanteissa kannattaa tehdä ja mitä. Mallin valmistuttua voit joko pitää sen tai muuttaa opetusdataa sekä asetuksia. Sopiva malli kannattaa pitää tallessa ja ottaa käyttöön. Useiden iteraatioiden ansiosta konjuktiossa opetusdatan kanssa mallit oppivat tunnistamaan oikeat osto- ja myyntihetket paljon luotettavammin kuin ihmiset, mikä puolestaan live-treidaamisessa on tärkeää juurikin reaktioajan tähden. Suosittuja malleja opetettavaksi ovat eri variaatoit joissa on käytössä ARIMA, CNN ja LSTM erikseen tai yhdessä. Tärkeintä mallin toiminnassa on todennäköisyyslaskenta ja eri mahdollisuuksien arvoiminen, joten “täydellistä mallia” ei ole olemassakaan.

Visuaalinen esimerkki siitä miten malli “näkee” annetut säännöt esim. MA-crossien kohdalla:


Yllä on koneelle annettu data eri tyyppisten Moving Averagejen kanssa. Alla puolestaan on data siitä mitä malli odottaa tapahtuvan eri crossitilanteissa.

Itse jos tulevaisuuden ennustamiseen halutaan mennä, niin kyseessä ei ole yhtä luotettava tieto kuin indikaattoreihin pohjaten. Tässä usein ei enää puhuta algoista, vaan puhtaasta koneoppimisesta joka on juuri päässyt elevoitumaan varhaisteini-ikäiseksi. En vielä luottaisi liikaa 100% ML:ällä tehtyihin malleihin, mutta eräs esimerkki “tulevaisuuden ennustamisesta” on alla kuvana. Teknologiana käytetty JavaScript-versiota TensorFlow’sta.


Kuvan selitys:
Linjat plotattuja MA:ita ja vaaleanvihreä on tensorflow’n ennustama hinnankehitys yhden vuoden opetusdatalla joka on käyty läpi 50 kertaa koulutuksen aikana. Lisänä ennustettu voluumimäärä. Jos haluaa hieman luotettavampia tuloksia kuin yllä oleva demoplotti Metsä Boardin kurssista, niin suositeltu iteraatioiden/epochien määrä on tuhannen luokkaa.
Alavasemman graafi kuvaa rinta rinnan mallin ennustuksia sekä toteutunutta hintaa opetusdatassa, oikeassa alakulmassa näkyy opetusmäärien kerta ja se kuinka hyvin oppi on mennyt kullakin kerralla perille, eli mitä alhaisempi loss datassa, sen parempi. En voi tarpeeksi painottaa mikäli pelkästään ML:ään nojataan tulevaisuuden ennustamisessa, niin datan tulee olla pitkältä ajalta ja iteraatioita tulee olla useita

Optimimallissa tekoälylle annetaan työkalut joita se opetetaan käyttämään. Koneoppimisella mallille opetetaan tietyn pörssikurssin käyttäytyminen sekä tietyt ‘erikoispiirteet’ mikäli niitä opetusdatassa on. Tulevaisuuden ennustamiseen tulisi kytkeä variaatio Monte Carlon mallista josta koneoppimisella ja AI:lla indikaattoreiden avulla voitaisiin valita todennäköisimmät tulokset. Lisäksi malliin tulee olla kytkettynä NLP prosessoija joka kykenee tutkimaan uutisdataa. Simppelein toteutettava NLP malli on twitter sentimentin analysoija esim. Tweepyn ja TextGlobin avulla, mutta parhaassa tapauksessa dataa tulisi saa myös suoraan aiheen uutislähteistä, luultavasti jollakin webscraperilla kuten BeautifulSoup4.

En ole ihan opettaja-ainesta (ikinä ollutkaan), mutta toivon mukaan tämmöinen vastauksen paloittelu antoi joitakin vastauksia kysymyksiisi :slight_smile:

11 tykkäystä

Kiitos, aika hyvin vastauksesi myötäili käsitystäni siitä, mitä olet kuvaillut. Sen vuoksi botin/algon hyöty (historiadatan laskenta valitun mallin perusteella) ajantasaiseen treidaukseen ei ole niin suoraviivaista, jos TA:n hallitsee hyvin. Ihmisen aivot on kova prosessori ja patternien/indikaattorianalysointien lisäksi ihminen ehtii käsittelemään paljon muuta asiaan liittyvää (esim. uutiset, chat-keskustelut jne).

Online-datan käsittely ja hyödyntäminen on tällä hetkellä mahdollista vain, jos sinulla on varaa maksaa datasta (mikä esim. jenkkipörsseissä on todella kallista). Sen vuoksi kryptopörssit on aika vahvasti bottien miehittämiä. Kun fundaa ei juurikaan vielä ole, niin botit seuraa ja manipuloi vahvasti TA:n eri indikaattorien malleja, joita TA-treidaajatkin seuraa. Mutta koska botit on nopeita, ihminen häviää tässä taistossa, jolloin treidaamista joutuu usein tekemään hieman isommalla time framella. Muutama vuosi sitten tuli paljon treidattua 1min flow:n mukaan.

Itse keksisin monia asioita, joista olisi hyötyä omassa treidaamisessa. En kaipaisi mitään auto-bottia, joka tekee treidit, vaan lähinnä uutta laskennallista apua tilanteiden tulkitsemiseen, kun hakee entry/exit kohtia. Mutta niin, että käytettävä data olisi ajantasaista, historiadataan yhdistettynä. Itselläni on pitkä ohjelmoijan tausta, joten bottien logiikka/algoritmiajattelu on siinä mielessä aika hyvin ymmärrettävissä.

Mutta pelkan historiadatan käsittely ja siitä uuden ammentaminen ei välttämättä ole hyödyksi, jos TA:n osaa. Voin toki olla väärässä, mutta tällainen kuva itselleni tähän astisesta syntyi. Todella mielenkiintoinen aihe kyllä. Jatka ihmeessä asian kuvailua. Se vielä tuli mieleen, että tietysti ohjelmoija itse lyö lukkoon sen, mitä botti tekee. Eli vaikka noi ma/ema crossit - kuinka paljon niille laskee painoarvoa ylipäätään.

8 tykkäystä

Jeps. Suurin hyötyhän tästä juuri olisi jos pääsisi pörssiin suoraan hakemaan sitä live-dataa. Se ei kuitenkaan estä isoilla päivän/viikon timeframeilla koneoppimisen hyödyntämistä analytiikkapuolella - varsinkin kun malli on tehty ja riittää että sille annetaan pari csv tiedostoa eikä itse tarvitse miettiä sen kummempaa kun malli puskee jo tulokset.

Hieman tuon analytiikkapuolen takia mietin että perustaakko uusi ketju vaiko jatkaa TA:n alla, mutta tänne sitten päädyttiin :slight_smile:

edit. Erot ja samanlaisuudet näkee täältä

Tosi mielenkiintoisia juttuja!

Kuinka reaaliaikaista dataa olet ajatellut tarvitsevasi? Haittaako muutamien sekuntien viive? Oon ite rakentanut erilaisia datankeräystapoja oman graduni datoja varten, jossa ajatuksenani on yhdistää erilaisia epäperinteisiä datalähteitä koneoppimiseen sijoituspäätösten tekemisessä. Tässä yhteydessä olen myös kehittänyt botin, joka hakee eräältä kauppapaikalta reaaliaikaiset kurssitiedot. Olen kuitenkin omissa laskelmissani alustavasti hahmotellut, että annan algoritmille noin 30 sekuntia aikaa siitä johtumattomien viiveiden sietämiseen ja laskutoimitusten tekoon.

4 tykkäystä

Hyväksyttävä viive intraday datassa riippunee volasta ja volyymistä millä kauppaa käydään. Oletuksena kuitenkin jos haluaa ulkoistaa intraday treidailun algolle, niin sillon napataan ne korkeimman volan ja volyymin omaavat osakkeet kaupankäynnin kohteeksi. Matalan volan ja volyymin kohteilla kun on vaan niin vaikeaa käydä aktiivikauppaa.

Korkean volan ja volyymin osakkeissa on mukana usein myös muita algoja sitten joiden kanssa kilpaillaan samassa sarjassa. Olettaen että algot käyttävät samaa strategiaa, niin tässä state-of-the-art algoilussa suurin kilpailuetu on niillä algoilla joilla on tuorein data.

Ottaen huomioon, että esim Outsaa ja Storaa algotellaan oikein huolella, niin mietityttää mikäköhän se source näillä anoilla on?

e. Se fiilis kun ruotsikin löytyy av:sta muttei suomea :neutral_face:

Erilaisten uutislähteiden parseroinnin merkitys kasvaa koko ajan. Myös uutislähteet voi ostaa eli noi isot pelurit ostaa uutiset muutaman millisekunnin deltalla muihin nähden (en tiedä hinnoittelua, mutta ei varmasti halpaa). Sitten twitterit, uutisvideolähetykset jne. Lähteitä alkaa olemaan monenlaisia. On melkoinen evoluutio saada parserointi sellaiseksi, että se ei johda virheisiin, mutta tiedän, että botit tekee tätä jo tänä päivänä.

3 tykkäystä

Näinkin. Tosin, jotkin strategiat ja algot (kenties ne vähemmän menestyneet) keskittyvät suoraan hinnan kehitykseen sivuuttaen uutiset. Liian usein kuuluu hyviä tai huonoja uutisia joilla ei ole vaikutusta mihinkään (kts. USAn börsät).

Lähin tossa pikkasen testailemaan evoluutiomallia, eli ihan sillä “survival of the fittest”-periaatteella miten semmonen malli sopis numeroiden pyörittelyyn.

Kohteeksi OMXH25 päiväkartalla (jos vaikka indeksejä alkais pyörittää). Dataframe vuoden alusta, 2000 iteraatiolla.


+5.929870 %

Mietin, että kenties treenauksessa oli liikaa iteraatioita joten vetäisin kevyemmällä 500 satsilla.


+5.168139 %

Ei paljoa eroa tuloksen kanssa. Ilmeisesti näissä evoluutiomalleissa joissa spawnataan muutama ‘yksilö’ ja vain ‘sopivimman’ annetaan selviytyä ja monistautua seuraavalle kierrokselle noilla iteraatioilla on hieman enemmän merkitystä kuin muilla AI-malleilla.

Juurikin kyseenomaista AI-mallia voisi hieman tutkia lisää, vaikk’ei voita edelleen perus-strategioita.

1 tykkäys

Hei. . Aika huippua, olet kyllä nero. TA on minullakin hallinnassa, osittain ainakin. Mutta tämän näen kyllä loistavana mahdollisuutena viedä asioita seuraavalle tasolle.

  1. Miten muodostuu overbought ja oversold rajat kuvassa?
  2. Voitaisiinko ostopaikat (myynti) tehdä kolmen päivän ( tai kahden viikon) datasta, yksinkertaisesti hinta ja makrodata. Haluaisin kokeilla?
  3. Voisitko tehdä osto ja myynti singnaalit, millaisen hinta datan tarvitset, missä muodossa?
  4. Tiedän kyllä “kone oppijan” johon syötetään 4000 yrityksen osarit ja kone antaa osto ja myynti ehdotuksia jotenkin se vaan on vanhanaikaista. Osarit on syötetty 20 vuoden ajalta.(?)
  5. Ostaisin mielelläni nuo rajapinnat, tai nehän on jo käytössä jonkun millisekunnin viivellä.
    6 Käy kyllä suomi harjoituksena, mutta tavoite Jenkki markkina.
1 tykkäys

Toisessa viestissä tässä ketjussa oleva overbought/sold laskettu matplotlibin avulla syöttäen tälle volyymin, ajan ja hinnan vaihtelut (open, high, low, close). Tästä luotu tasattu graafi johon on plotattu päälle numpy:n percentile funktiolla nuo vihreät ja punaiset tasaviivat. Kuvaa aika hyvin markkinoiden ylireagointia eri tilanteissa. Jos tuo ylläoleva on hepreaa, niin sitä voi miettiä pörssin maanjäristysmittarina.

Ostopaikat ja myyntipaikat voi tehdä minkälaisesta datasta tahansa kunhan sitä on tarpeeksi. Esimerkiksi päivän datasta saa hyvin paljon irti koulutusvaiheessa jos datan pilkkoo minuutin tai kolmen minuutin timeframelle. Murtaa ison leivän siis pienempiin osiin. Pari kertaa kokeillut, mutta aika ikävää puuhaa jos joutuu aina CSV:lle hakemaan datan. Treenaukseen mieluiten kuitenkin niin paljon dataa kuin mahdollista saada. Parhaiten intraday treidaaminen sujuu jos saa apista suoraan kohtuu hyvän datan syötettyä dataframeen jota refreshaillaan livenä.

Mikäli kyse on evoluutiomallista ja keskitytään suoraan toiminnalliseen malliin, niin päätöksenteko perustuu pitkälti tässä mallissa trendin ennustamiseen hinnan liikkeiden perusteella. Edellä olleessa voluutioesimerkissä kummassakin tapauksessa käytettiin koulutuksessa window-sizena 30 päivää, eli yhdessä opetuksessa käytiin data läpi 2000 ja toisessa 500 kertaa 30 päivän jaksoissa. Evoluutiossa on käytössä porkkanamalli, eli parhaiten selviytyvälle mallille annetaan palkinto ja virtuaalitaputus pään päälle ennen kuin se heitetään seuraavaan gladiaattoriareenaan ja sama toistuu. Esimerkissä palkinto
annetaan parhaiten trendiä ennustavalle mallille joka kykenee (jotenkuten) ennustamaan oikean trendin käännöksen ja toivon mukaan myymään tai ostamaan oikeaan aikaan.

Esimerkki miten mallia saa parannettua on ja tweakkailtua oman riskinottokyvyn mukaan on lisäämällä sille sääntöjä kaupankäyntiä varten, esim. vaikka malli olisi opetettu käymään kauppaa omien osto-ja myyntiarvioiden mukaan, niin se ei tee kauppoja ennen kuin se saa jostakin muusta laskutoimituksesta konfirmaation. Esimerkiksi se voisi näyttää alla olevalta (hienot paint-copypaste-taidot, tiedän) jossa evoluutiomalli ja kilppari-strategia on heitetty päällekkäin. Huomannee missä signaalit ovat kumpaisellakin yhteneväiset?
turtle%20evol
Tämä tarkoittaa sitä, että AI näkee tulevan muutoksen (epävarman, mutta varmemman kuin perus
Matti Meikäläisen arvaus) ja saa konfirmaation paljon varovaisemmalta indikaattorilta.

En ole vielä näihin mitään osareita yms miettinyt sisälle. Pitkälti semmoisessa itsensäviihdyttämismielessä näitä puuhailen nyt loma-aikaan. Talvella varmaan taas pukkaa yksityiselämässä enemmän kiireitä.

Jos tarvitset apuja ja vinkkejä niin kysy pois.

4 tykkäystä

Moi!
Palaan näihin kyllä, kunhan kiire helpottaa. Noin kolme kuukautta.

Hyvää huomenta!

Muutamia kysymyksiä:

Pystyykö osakesäästötilille tekemään treidausbottia, vai onko se mahdollista vain AO-tilille?

Onko kokemuksia Nordnetin/Nordean tilille botin tekemisestä? Vai onko se ylipäätään mahdollista tehdä bottia näille alustoille?

Itsellä on haaveissa tehdä oma botti joko C#:lla tai Pythonilla. Projektin tavoitteena on kehittää omia koodaustaitoja mielekkään teeman äärellä. Jos on jotain pro tippejä jakaa niin ovat toki tervetulleita! Terv. Lue nimimerkki

Botin tekeminen vaatisi API rajapintaa. Tällä hetkellä nordnet tarjoaa ainoastaan testi rajapinnan, joka taitaa muutenkin olla suhteellisen vanha. Itse en ole näitä “leikki”-toimeksiantoja saanut tuon apin kautta toimimaan, vaan kaikki toimeksiannot jää johonkin limboon. Muutoin kyllä api toimii ohjeiden mukaisesti

Laitoin nordnetin aspalle kysymystä, että onko heillä apia mahdollisesti kehitteillä. Vastauksena tuli vain, että ei ole, eikä ole edes suunnitteilla toteuttaa toimivaa tälläistä

1 tykkäys

Kiitos vastauksesta. Ehkä se projekti jää sitten haaveeksi. Onko teillä minkäänlaisia muita ideoita, joilla voisi koodausta ja sijoittamista yhdistää?

Itse virittelin joskus Google Financesta linkkauksen omille sivuille, siellä on avoin API 15min delayed kursseilla, tämä ei ollut varsinaista koodausta vaan lähinnä tiedon keruu omille sivuille jossa kurssidata yhdistettiin viimeisimpiin tase yms. tietoihin ja laskettiin tunnuslukuja.

Google Financen toiminta oli vain hieman outoa/epäluotettavaa WordPressissä joten lopetin projektin.

3 tykkäystä

Mielenkiintoista. Mietin jos tekisi esim. jotain omaa verkkosivua, johon botin avulla keräisin omiin sijoituksiini liittyviä uutisia.