Viime vuosina syvistä hermoverkoista on tullut erittäin suosittuja. Tämä uusi tietojenkäsittelytieteen ala luotiin biologisten hermoverkkojen käsitteen ympärille, ja syvällisestä oppimisesta on tullut muotisana tänään.
Syvällä oppivat tutkijat ja insinöörit yrittävät kuvata matemaattisesti erilaisia malleja biologisessa hermostossa. Syvällisiä oppimisjärjestelmiä on sovellettu erilaisiin ongelmiin: tietokoneen näkemiseen, puheen tunnistamiseen, luonnollisen kielen käsittelyyn, konekääntämiseen ja muuhun. On mielenkiintoista ja jännittävää, että syvä oppiminen on ylittänyt ihmisten asiantuntijat joissakin tehtävissä. Tänään tarkastelemme syvällistä oppimista rahoitusalalla.
Yksi syvän oppimisen houkuttelevimmista sovelluksista on hedge-rahastoissa. Suojausrahastot ovat rahoitusorganisaatioiden sijoitusrahastoja, jotka keräävät varoja sijoittajilta ja hoitavat niitä. He työskentelevät yleensä aikasarjatietojen kanssa ja yrittävät tehdä ennusteita. Aikasarjaanalyysiin soveltuu erityinen syväoppimisarkkitehtuuri: Toistuvat hermoverkot (RNR) tai vielä tarkemmin sanottuna erityinen toistuva hermoverkko: lyhytaikaiset pitkäaikaiset muistiverkot ( LSTM ) . LSTM he pystyvät keräämään aikasarjatietojen tärkeimmät ominaisuudet ja mallintamaan riippuvuutensa. Osakekurssien ennustemalli on havainnollistava tapaustutkimus siitä, miten hedge-rahastot voivat käyttää tällaisia järjestelmiä. puitteet PyTorchia, joka on kirjoitettu Pythonissa, käytetään mallin kouluttamiseen, suunnittelukokeisiin ja tulosten piirtämiseen.
Aloitamme syvällisistä oppimisen perusteista, ennen kuin siirrymme todellisiin esimerkkeihin:
Yksi rahoitusalan haastavimmista ja mielenkiintoisimmista tehtävistä on ennustaa nousevatko vai laskevatko osakekurssit tulevaisuudessa. Tänään olemme tietoisia siitä, että syvällisen oppimisen algoritmit ovat erittäin hyviä monimutkaisten tehtävien ratkaisemisessa, joten kannattaa yrittää kokeilla syvällisiä oppimisjärjestelmiä nähdäksesi, pystyvätkö ne onnistuneesti ratkaisemaan tulevaisuuden hintojen ennustamisen ongelman.
Käsitteenä keinotekoinen hermoverkko on ollut olemassa jo kauan, mutta laitteisto ei ollut tarpeeksi hyvä mahdollistamaan nopeita kokeita syvässä oppimisessa. Nvidia auttoi mullistamaan syvälliset oppimisverkot vuosikymmen sitten, kun se alkoi tarjota erittäin nopeita grafiikkaprosessointiyksiköitä (UPG) yleiskäyttöön Tesla-sarjan tuotteet . Ammattimaisesti suunniteltujen pelien ja sovellusten monikulmioiden varjostamisen sijaan erittäin rinnakkaiset UPG: t voivat laskea myös muita tietoja ja monissa tapauksissa paljon parempia kuin suorittimet.
On hyvin muutama tieteellinen artikkeli syvän oppimisen käytöstä rahoituksessa, mutta fintech-yritysten syvällisen oppimisen asiantuntijoiden kysyntä on voimakasta, koska ne tietysti tunnistavat sen potentiaalin. Tämä artikkeli auttaa selittämään, miksi rahoituksen syvällinen oppiminen on tulossa yhä suositummaksi, kuvaamalla, kuinka taloudellisia tietoja käytetään syvällisten oppimisjärjestelmien rakentamisessa. Erityinen tyyppi toistuva hermoverkko - netto LSTM —Se esitetään myös. Aiomme hahmotella, kuinka rahoitukseen liittyvä tehtävä voidaan ratkaista toistuvien hermoverkkojen avulla.
Tämä artikkeli esittelee myös kokeiden avulla esitetyn havainnollistavan tapaustutkimuksen siitä, miten hedge-rahastot voivat käyttää tällaisia järjestelmiä. Tarkastelemme myös sitä, kuinka syvällisiä oppimisjärjestelmiä voidaan parantaa ja miten hedge-rahastot voivat palkata kykyjä näiden järjestelmien rakentamiseen - toisin sanoen, minkälaista kokemusta syvällisen oppimisen kyvyillä on oltava.
Ennen kuin pääsemme ongelman tekniselle puolelle, meidän on selitettävä, mikä tekee hedge-rahastoista ainutlaatuisen. Joten mikä on hedge-rahasto?
Hedge-rahasto on sijoitusrahasto - rahoitusorganisaatio, joka kerää varoja sijoittajilta ja sijoittaa heidät lyhytaikaisiin ja pitkäaikaisiin sijoituksiin tai erilaisiin rahoitustuotteisiin. Se muodostetaan yleensä kommandiittiyhtiönä tai osakeyhtiönä. Hedge-rahaston tavoitteena on maksimoida tuotto. Tuotto on hedge-rahastojen nettovarallisuuden voitto tai tappio tiettynä ajanjaksona. On yleisesti hyväksyttyä, että kun otetaan enemmän riskejä, on suurempi mahdollisuus suurempaan tuottoon ja tappioihin.
Hyvän tuoton saavuttamiseksi hedge-rahastot luottavat erityyppisiin sijoitusstrategioihin ja yrittävät ansaita rahaa hyödyntämällä markkinoiden tehottomuutta. Johtuen erityyppisistä sijoitusstrategioista, joita ei sallita tavallisissa sijoitusrahastoissa, hedge-rahastoja ei rekisteröidä rahastoiksi, toisin sanoen valtio ei yleensä valvo niitä kuten muut rahastot. Niiden ei tarvitse julkaista sijoitusstrategioita ja kaupankäynnin tuloksia, mikä voi tehdä niistä varsin riskialttiita. Jotkut hedge-rahastot ansaitsevat enemmän rahaa kuin markkinat keskimäärin, mutta jotkut menettävät rahaa. Jotkut niistä tarjoavat pysyviä tuloksia, kun taas osa hedge-rahastojen tuloksista on vaihtelevia.
Sijoittamalla hedge-rahastoihin sijoittajat lisäävät rahaston nettovarallisuutta. Kaikki eivät kuitenkaan voi sijoittaa hedge-rahastoihin. Suojausrahastot on tarkoitettu pienelle määrälle varakkaita sijoittajia. Yleensä niiden, jotka haluavat osallistua hedge-rahastoihin, on oltava akkreditoituja. Tämä tarkoittaa, että heillä on oltava erityinen asema varainhoitolainsäädännön suhteen. Maasta toiseen tehdään ero, kenellä voi olla erityisasema. Yleensä sijoittajan nettovarallisuuden on oltava erittäin korkea, paitsi yksityishenkilöt, myös pankit ja suuret yritykset voivat toimia hedge-rahastoissa. Tämä akkreditointi on suunniteltu siten, että vain merkittävän sijoitusosaamisen omaavat henkilöt voivat osallistua suojelemaan pieniä ja kokemattomia sijoittajia riskeiltä.
Tässä artikkelissa tarkastellaan Yhdysvaltojen sääntelykehystä, koska Yhdysvalloilla on maailman kehittyneimmät rahoitusmarkkinat. Joten Yhdysvalloissa termi 'akkreditoitu sijoittaja' määritellään Yhdysvaltain arvopaperimarkkinakomission säännön D säännön 501 ( SEC ) .
Tämän asetuksen mukaan akkreditoidut sijoittajat voivat olla:
Suojausrahastojen hoitajat hoitavat tällaista rahastoa. Hedge-rahastonhoitajan on löydettävä tapa luoda kilpailuetu menestyäkseen - eli luoda etu kilpailijoihin nähden ja kyky tuottaa suurempaa arvoa. Se voi olla erittäin houkutteleva uravaihtoehto, koska se voi olla erittäin kannattavaa, jos henkilö hoitaa rahastoa erinomaisesti.
Toisaalta, jos monet hedge-rahastojen hoitajien päätöksistä osoittautuvat huonoiksi, he eivät saa palkkoja ja ansaitsevat negatiivisen maineen. Parhaat hedge-rahastojen hoitajat ovat yksi kaikkien alojen eniten palkattuja ammatteja. Hedge-rahastojen hoitajat ansaitsevat prosenttiosuuden sijoittajille tuottamastaan tuotosta hallinnointipalkkion lisäksi. Tämä korvausmuoto saa hedge-rahastonhoitajat sijoittamaan aggressiivisemmin korkeamman tuoton saavuttamiseksi, mutta toisaalta se lisää myös sijoittajien riskiä.
Ensimmäinen hedge-rahasto ilmestyi vuonna 1949, jonka perusti entinen kirjailija ja sosiologi Alfred Winslow Jones. Se kirjoitettiin artikkeli Fortune, noin 1948, nykyisistä investointisuunnitelmista.
Hän yritti hallita rahaa ja menestyi hyvin. Hän keräsi rahaa sijoitusinnovaatiollaan, joka tunnetaan nykyään laajalti nimellä pitkä / lyhyt korkki. Strategia on edelleen erittäin suosittu hedge-rahastojen keskuudessa. Osakkeita voi ostaa (ostaa: pitkä) tai myydä (myydä: lyhyt).
Kun osakkeen hinta on alhainen ja osakkeen hinnan odotetaan olevan korkea, on järkevää ostaa osake (pitkä) ja myydä se (lyhyt) heti, kun se saavuttaa korkeimman pisteen, ja juuri tämä on kohta Alfred Winslow Jonesin innovaatiosta: Pitkien positioiden ottaminen osakkeisiin, joiden odotetaan nousevan, ja lyhyet kannat osakkeissa, joiden odotetaan laskevan.
Taloudelliset tiedot kuuluvat aikasarjatietoihin. Aikasarja on sarja datapisteitä, jotka on indeksoitu ajassa. Yleensä aikasarja on sekvenssi, joka on otettu peräkkäisistä ja tasaisesti toisistaan erillisistä ajankohdista - diskreetti-aikainen datasekvenssi. Esimerkkejä aikasarjoista ovat valtameren vuorovesi, auringonpilkumäärä ja Dow Jonesin teollisuuskeskiarvon päivittäinen sulkemisarvo. Historialliset tiedot tässä yhteydessä ovat menneisyyden aikasarjatietoja. Se on yksi tärkeimmistä ja arvokkaimmista osista spekuloida tulevista hinnoista. Joitakin tietojoukkoja on julkisesti saatavilla verkossa, mutta yleensä - nämä tiedot eivät sisällä monia ominaisuuksia, ne ovat yleensä yhden päivän, yhden tunnin tai yhden minuutin välisiä tietoja.
Rikkaampien ominaisuuksien ja pienempien aikavälejen tietojoukot eivät yleensä ole julkisesti saatavilla, ja niiden hankkiminen voi olla erittäin kallista. Pienemmät välit tarkoittavat enemmän aikasarjatietoja kiinteänä ajanjaksona - vuodessa on 365 (tai 366) päivää, joten käytettävissä on enintään 365 (tai 366) datapistettä. Jokaisella päivällä on 24 tuntia, joten vuodessa on käytettävissä 8760 (tai 8784) tuntitietopistettä, ja jokaisella päivällä on 86400 minuuttia, joten vuodessa on käytettävissä 525600 (tai 527040) datapistettä minuutissa.
Lisää tietoa käytettäessä on saatavana enemmän tietoa, ja lisätietojen avulla on mahdollista tehdä parempia johtopäätöksiä siitä, mitä tapahtuu seuraavalla ajanjaksolla, olettaen tietysti, että tiedot koostuvat riittävän hyvistä ominaisuuksista yleistääkseen hyvin. Vuosien 2007–2008 osakekurssitiedot, maailmanlaajuisen finanssikriisin huipulla, ovat puolueellisia eivätkä todennäköisesti ole merkityksellisiä hinnan ennusteiden tekemiseen näinä päivinä. Pienemmällä aikavälillä on helpompi ennustaa, mitä seuraavaksi tapahtuu, koska suuri määrä datapisteitä on kiinteä. On helpompaa ennustaa, mitä tapahtuu seuraavassa nanosekunnissa, jos meillä on kaikki datapisteet kutakin nanosekuntia kohti kiinteänä n
vuotta kuin mitä tapahtuu osakemarkkinoilla ensi vuonna, jos meillä on kaikki datapisteet n
joka vuosi kiinteänä n
-vuotena.
Tämä ei kuitenkaan tarkoita, että olettaen, että lyhyt lyhytaikaisten ennusteiden sarja on oikea, myös pitkän aikavälin ennusteen tulisi olla oikea. Kukin ennustus tuo virheen, ja ketjuamalla yhteen useita ennusteita pitkäaikainen ennuste sisältää merkittävän määrän virheitä lopussa ja on hyödytön. Alla on esimerkki yhden päivän intervallitiedoista Yahoo Finance -sivustolta leikattuihin Google-osakkeisiin.
Aineistossa on vain muutama sarake: Päivämäärä, Avoin, Ylin, Alin ja Sulje - hinta, jolla arvopaperi käy kauppaa ensimmäisen kerran pörssin avajaisissa, hinta, joka on korkeampi kuin tietyllä kaupankäynnillä saavutettu arvopaperi päivä, tietyn kaupankäyntipäivän alin hinta ja lopullinen hinta, jolla arvopaperilla käydään kauppaa kyseisenä päivänä.
Tällaisissa tietojoukoissa on yleensä kaksi saraketta lisää - Säädetty sulkeminen ja määrä, mutta ne eivät ole merkityksellisiä tässä. Oikaistu sulku on päätöskurssi sovellettavien divisioonien ja osingonjaon oikaisujen jälkeen, kun taas volyymi on markkinoilla vaihdettujen osakkeiden lukumäärä tietyn ajanjakson aikana.
Jotkut päivämäärät puuttuvat. Nämä ovat päivät, jolloin osakemarkkinat ovat laskeneet, yleensä viikonloppuisin ja pyhäpäivinä. Syvien oppimisalgoritmien esittelyä varten jäljellä olevia päiviä täydennetään aiemmin saatavilla olevalla hinnalla. Esimerkiksi vuosien 2010-01-16, 2010-01-17, 2010-01-18 päätöskurssit ovat 288,126007, koska näin se oli 15.01.2010. Algoritmillemme on tärkeää, että tiedot ovat ilman aukkoja, jotta emme sekoita niitä. Syväoppimisalgoritmi voisi oppia täältä viikonloppuisin ja vapaapäivinä - se oppii esimerkiksi, että viiden arkipäivän jälkeen on oltava kaksi päivää kiinteillä hinnoilla viimeisestä työpäivästä.
Tämä on kaavio Googlen osakekurssimuutoksista 1.1.2010 lähtien. Huomaa, että kaavion piirtämiseen käytetään vain kaupankäyntipäiviä.
Syväoppiminen on osa koneoppimista ja perustuu tiedon esitysten oppimiseen. Koneoppiminen tutkii algoritmeja, joiden toiminnallisuutta ei ole ohjelmoitu, vaan ne opitaan tiedoista. Se on lähinnä lähestymistapa tekoälyyn.
Syvää oppimista on sovellettu useilla aloilla - tietokonenäön, puheen tunnistamisen, luonnollisen kielenkäsittelyn, konekäännöksen - avulla, ja joissakin näistä tehtävistä se on ylittänyt ihmiset.
Syvä hermoverkko on syvällisen oppimisen keskipisteessä. Yksinkertaisin ja yksinkertaisin esimerkki syvästä hermoverkosta on ennustava hermoverkko. Alla on kuva hermoverkosta eteenpäin yksinkertainen. Se koostuu syöttö- ja ulostulokerroista sekä piilotetuista tasoista.
Piilotetut tasot ovat kaikki tulo- ja lähtötasojen välisiä kerroksia. Sanomme, että hermoverkko on syvä, jos sillä on enemmän kuin yksi piilotettu kerros. Jokainen kerros koostuu useista hermosoluista. Tämän eteenpäin tulevan perusverkkoverkon kerroksia kutsutaan lineaarisiksi kerroksiksi: lineaarisen kerroksen neuronit kertovat 1-D-arvot (tai 2-D, jos tietoja lähetetään verkon yli erissä) sopivalla painolla lisäämällä yhdessä ja antaa lopputuloksen 1-D- tai 2-D-ulostulona.
Aktivointitoimintoa käytetään yleensä eteenpäin käyttöön epälineaarisuus, jotta verkko voi mallintaa monimutkaisempia epälineaarisia ongelmia. Verkostossa eteenpäin , data virtaa tulokerroksesta lähtökerrokseen ilman silmukointia. Neuronien väliset yhteydet painotetaan. Painot on säädettävä, jotta hermoverkko palauttaa oikeat lähdöt annetuille tuloille. Verkko eteenpäin kartoittaa tiedot syöttötilasta ulostulotilaan. Piilotetut kerrokset poimivat tärkeät ja abstraktit piirteet edellisen kerroksen ominaisuuksista.
Yleinen syväoppimisputki on sama kuin koneoppimisputki ja koostuu seuraavista vaiheista:
Hermoverkkokoulutus tarkoittaa itse asiassa hermoparien välisten painojen säätämistä minimoimalla menetystoiminto käyttämällä backpropation-algoritmia yhdessä stokastisen gradientin laskeutumisen kanssa. Lukuun ottamatta painoja, jotka määritetään oppimisprosessin kautta, syvälliset oppimisalgoritmit vaativat yleensä hyperparametrien asettamista, parametreja, joita ei opita, mutta jotka korjataan ennen oppimista. Hyperparametrit ovat kerrosten lukumäärä, kerrostettujen hermosolujen määrä, kerrostyypit, hermosolujen tyypit ja painon alustus.
Hyperparametrien asettamisessa on laitteistorajoituksia; Tällä hetkellä ei ole fyysisesti mahdollista perustaa biljoonaa neuroneja yhteen GPU: han. Toinen ongelma hyperparametrien tyhjentävässä etsinnässä on yhdistelmäräjähdys; ei ole mahdollista etsiä kaikkia mahdollisia hyperparametrien yhdistelmiä, koska se vie äärettömän ajan. Siksi hyperparametrit asetetaan satunnaisesti tai niissä käytetään joitain tunnettuja heuristiikkaa ja esimerkkejä, jotka on kuvattu tieteellisissä artikkeleissa - yksi hyperparametreista, joita käytetään taloudellisten tietojen analysointiin myöhemmin tässä blogissa, on toistuvien hermosolujen, kuten tutkijoiden ja insinöörien, käyttö. ovat osoittaneet, että ne toimivat hyvin aikasarjatietojen kanssa. Yleensä paras tapa nähdä, ovatko tietyn ongelman hyperparametrit hyviä vai ei, on kokeiden avulla. Koulutuksen tavoitteena on saada hermoverkot vastaamaan harjoitteludataa. Sekä kunkin harjoitteluvaiheen jälkeen suoritettavan mallin validointi että koko harjoittelun jälkeen suoritettava mallin testaus suoritetaan sen selvittämiseksi, voidaanko mallia hyvin yleistää. Yleistäminen tarkoittaa, että hermoverkko voi tehdä hyviä ennusteita näkymättömästä uudesta datasta.
Mallin valintaan liittyy kaksi tärkeää termiä: liikaa Y sopeutumattomuus . Jos hermoverkko on liian monimutkainen sen datan suhteen, johon se on koulutettu, ja jos sillä on liikaa parametreja (liian monta kerrosta ja / tai liian monta kerrostettua hermosolua), hermoverkko voi liikaa dataa. Se mahtuu harjoitteludataan hyvin, koska sillä on enemmän kuin tarpeeksi kapasiteettia kaikkien tietojen sovittamiseen, mutta sitten testi- ja validointijoukkojen suorituskyky on heikko.
Jos hermoverkko on liian yksinkertainen sen tiedon suhteen, johon se on koulutettu, hermoverkko voi kohdistaa datan väärin. Tällöin hermoverkko suoriutuu heikosti harjoittelusta, validoinnista ja testisarjoista, koska sen kyky ei ole tarpeeksi hyvä sopeutumaan harjoitteludataan ja yleistymään. Alla olevassa kuvassa nämä termit selitetään graafisesti. Sininen viiva edustaa sitä, mitä hermoverkko on mallinnanut. Ensimmäisessä kuvassa näkyy tilanne, kun hermoverkkoparametreja on vähän, ei riitä harjoitteludatan sovittamiseen ja yleistämiseen. Toinen kuva näyttää tilanteen, jolloin optimaalinen parametrien määrä on olemassa ja hermoverkko voidaan hyvin yleistää näkymättömään dataan, ja kolmas kuva näyttää tilanteen, kun hermoverkon parametrien määrä on liian suuri ja hermoverkko pystyy täydellisesti sovittaa kaikki harjoitussarjan tiedot, mutta toimii huonosti testi- ja validointisarjoissa.
Neuroverkon monimutkaisempi versio on toistuva hermoverkko. Toistuvissa hermoverkoissa data voi virrata mihin tahansa suuntaan, toisin kuin ennustavat hermoverkot. He voivat oppia aikasarjariippuvuudet hyvin. Yleisen toistuvan hermoverkon arkkitehtuuri on esitetty alla olevassa kuvassa.
Toistuva neuroni on esitetty alla olevassa kuvassa. Tarvitset syötteeksi X_{t}
, ajankohta t
ja palauttaa h_{t}
, piilotilan ajassa t
Piilotettu ulostulo leviää takaisin neuroniin. Toistuva neuroni voidaan kelata, koska se näkyy samassa kuvassa oikealta puolelta. X_{t_0}
on piste ajanjaksolla t_{0}
, X_{t_1}
ajanjaksolla t_{1}
ja X_{t}
ajanjaksolla t
. Tuotteet, jotka on saatu käyttämällä syötteitä X_{t_0}
, X_{t_1}
,…, X_{t_n}
ajanjaksoina t_{0}
, t_{1}
,…, t_{n}
Niitä kutsutaan myös piilotetuiksi lähdöiksi: h_{t_0}
, h_{t_1}
,…, h_{t_n}
.
Yksi parhaista toistuvista hermoverkkoarkkitehtuureista on LSTM-arkkitehtuuri. LSTM näkyy alla:
LSTM: llä on sama yleinen rakenne kuin yleisillä toistuvilla hermoverkoilla, mutta toistuva hermosolu on hieman erilainen monimutkaisemmalla rakenteella. Yllä olevasta kuvasta näet, että LSTM-solussa tehdään paljon laskelmia. LSTM-solut voidaan nähdä mustana laatikkona tämän viestin yhteydessä, mutta uteliaisemmille lukijoille tämä blogipostaus selittää LSTM: n sisäiset laskelmat ja paljon muuta.
Kutsutaan hermoverkon tuloa 'ominaisuusvektoriksi'. Se on mittavektori n
- jonka elementit ovat ominaisuuksia: f_{0}
, f_{1}
, f_{2}
…, f_{n}
. ~~~ vv {X} = [f_ {0}, f_ {1}, f_ {2},…, f_ {n}] ~~~ Selitetään nyt, kuinka toistuvia hermoverkkoja voidaan soveltaa liittyvään tehtävään talouden kanssa. Toistuvan hermoverkon tulo on [X_{t_0}, X_{t_1}, X_{t_2}, …, X_{t_n}]
. Sanotaan n = 5
. Otimme viisi Google Close -osakekurssia viideltä peräkkäiseltä päivältä (katso taulukko, jossa on Open / High / Low / Closed / Up-tiedot), esimerkiksi 2010-01-04 ja 2010-01-08, esim. [[311.35], [309.98], [302.16], [295.13], [299.06]]
Tämän esimerkin ominaisuusvektori on yksiulotteinen. Aikasekvenssi koostuu viidestä tällaisesta ominaisuusvektorista. Toistuvan hermoverkon lähdöt ovat piilotettuja toimintoja [h_{t_0}, h_{t_1}, h_{t_2}, …, h_{t_n}]
. Nämä ominaisuudet ovat abstraktimmalla tasolla kuin syöttöominaisuudet [X_{t_0}, X_{t_1}, X_{t_2}, …, X_{t_n}]
—LSTM: n on opittava syöttöominaisuuksien tärkeät osat ja heijastettava ne piilotettuihin ominaisuustiloihin. Nämä piilotetut ja abstraktit piirteet voidaan levittää seuraavaan LSTM-soluun, joka antaa seuraavan joukon piilotettuja ja abstraktimpia toimintoja, jotka voidaan sitten levittää takaisin seuraavaan LSTM: ään ja niin edelleen. Ketjutettujen LSTM: ien sekvenssin jälkeen hermoverkon viimeinen komponentti on lineaarinen kerros (edellisessä osassa selitetyn yksinkertaisen eteenpäin suuntautuvan verkon rakennusosa), joka kartoittaa piilotetut ominaisuudet viimeisestä LSTM: stä ulottuvuuden pisteeseen, ja tämä piste on verkon lopputulos - odotettu sulkuhinta ajanjaksolla X_{t+1}
. Tässä esimerkissä maaston totuus X_{t+1}
on 298.61
.
Huomautus: LSTM voi myös olla vain yksi - LSTM: ien lukumäärän asettaminen on hyperparametri, joka löytyy yleensä empiirisesti, vaikka voimme käyttää joitain heuristiikkaa. Jos tiedot eivät ole niin monimutkaisia, käytämme vähemmän monimutkaista arkkitehtuuria, jotta malli ei mene päällekkäin tietojen kanssa. Jos tiedot ovat monimutkaisia, käytämme monimutkaista mallia, jotta malli ei sovi dataan väärin.
Koulutusvaiheessa ennustettuja sulkuhintoja verrataan todellisiin maanhintoihin ja ennustettujen sulkuhintojen ja todellisten maahintojen välinen ero minimoidaan käyttämällä kaltevuuden (tai jommankumman seuraavista) taaksepäin etenemisalgoritmia ja laskeutumisen optimoinnin algoritmia. sen muodot - erityisesti tässä blogissa käytetään gradientin laskeutumisen optimointialgoritmin ns. 'Adam' -versiota) muutettaessa hermoverkon painoja.
Koulutuksen ja testauksen jälkeen käyttäjän on tulevaisuudessa vain syötettävä tietoa hermoverkkoon ja se palauttaa odotetun hinnan (ja toivottavasti hinnan, joka on hyvin lähellä tulevaisuuden todellista hintaa). Vielä yksi asia, joka on mainittava tässä, on se, että tyypillisesti tiedonsiirtoja lähetetään verkon kautta, verkko kouluttaa testivaiheissa, jotta verkko voi laskea useita ulostuloja yhdellä kertaa. Alla on kuva arkkitehtuurista, jota tässä blogissa käytetään kokeisiin. Se koostuu kahdesta pinotusta LSTM: stä ja lineaarisesta kerroksesta.
Yritä käyttää tällaisia yksinkertaisia algoritmisia kaupankäyntistrategioita seuraavasti: Jos algoritmi ennustaa hinnan nousevan seuraavana päivänä, osta n
(n = 1
tässä esimerkissä) yrityksen osakkeet (pitkät), muuten myyvät kaikki yrityksen osakkeet (lyhyet). Salkun alkuarvo (yhdistetty käteisvarojen ja osakkeiden arvo) on 100 000 dollaria. Jokainen pitkä tai lyhyt osake ostaa osakkeita n
yrityksen (tässä esimerkissä Google) tai myy kaikki yrityksen osakkeet. Aluksi järjestelmä omistaa 0 tietyn yrityksen osaketta. Muista aina, että tämä on hyvin yksinkertainen ja yksinkertainen esimerkki, jota ei ole tarkoitettu todelliseen käyttöön, koska mallin muokkaaminen, jotta se toimisi hyvin käytännössä, vie paljon enemmän t & k-työtä. Tässä on joitain laiminlyötyjä asioita, jotka tulisi ottaa huomioon todellisessa maailmassa; esimerkiksi transaktiomaksuja ei ole sisällytetty malliin. Järjestelmän oletetaan pystyvän toimimaan täsmälleen samaan aikaan joka päivä, ja jokaisen päivän, jopa viikonloppuna tai lomalla, oletetaan olevan kaupankäyntipäivä.
Testauksessa käytetään backtesting-menetelmää. Backtesting-menetelmä käyttää historiallisia tietoja rekonstruoidakseen aiemmin tapahtuneet toiminnot käyttämällä kehitetyllä strategialla määriteltyjä sääntöjä. Tietojoukko on jaettu kahteen osaan - ensimmäinen osa on harjoitusjoukko (aiemmin) ja toinen osa testijoukko (tulevaisuus). Malli koulutetaan harjoitusryhmässä, ja harjoittelun jälkeen simuloimme tulevaisuutta tietojoukon toisessa osassa nähdäksesi, kuinka koulutettu malli olisi käyttäytynyt tulevaisuudessa ilman, että sitä koulutettaisiin siihen.
Kaupankäyntistrategian arviointimittari on Sharpe-suhde (sen vuotuinen versio, olettaen, että vuoden kaikki päivät ovat kaupankäyntipäiviä ja vuodessa on 365 päivää): sqrt(365)*mean(returns)/std(returns))
, jossa tuotto määritellään p_{t}/p_{t-1} - 1
ja p_{t}
on hinta ajanjaksolla t
. Sharpe-suhde osoittaa tuoton ja ylimääräisen riskin välisen suhteen, joten on hienoa saada suurempi Sharpe-suhde. Yleensä suhde yli 1 on sijoittajien hyväksyttävä, 2 on erittäin hyvä ja 3 erinomainen.
Ainoastaan Yahoo Finance -tietojoukon Googlen historiallisten hintojen päivittäistä sulkuhintaa käytetään ominaisuutena. Lisää ominaisuuksia auttaa, mutta tämän blogin soveltamisalan ulkopuolella on testata, mitkä muut tietojoukon ominaisuudet (avoin, korkea, matala) ovat tärkeitä. Jotkin muut ominaisuudet, joita ei ole taulukossa, voivat olla hyödyllisiä, esimerkiksi uutisien mieliala tietyllä minuutilla tai tärkeät tapahtumat tiettynä päivänä. Joskus on kuitenkin hyvin vaikeaa tehdä hermoverkkosyötölle hyödyllisiä dataesityksiä ja yhdistää ne olemassa oleviin ominaisuuksiin. Esimerkiksi ominaisuusvektoria on helppo laajentaa ja laittaa numero, joka edustaa Trumpin uutisia tai tweet-mielipiteitä (-1
hyvin negatiivinen, 0
neutraali, +1
erittäin positiivinen jne.) jokainen tietty ajanjakso, mutta tiettyjen tapahtumien asetettujen aikojen (merirosvot Suezin kanavassa, pommi Texasin jalostamossa) sijoittaminen ominaisvektoriin ei ole niin helppoa, koska tarvitsemme kutakin tiettyä aikaa varten lisäelementin ominaisuusvektori laittaa 1
jos tapahtuma tapahtui tai 0
muuten, mikä johtaa loputtomaan määrään esineitä kaikkina aikoina.
Vaikeimpien tietojen osalta voimme määritellä joitain luokkia ja määrittää jokaiselle hetkelle, mihin luokkaan se kuuluu. Voisimme lisätä myös muiden yritysten osakkeiden ominaisuuksia, jotta järjestelmä tuntee korrelaation eri yritysten osakkeiden hintojen välillä. Lisäksi on olemassa konevisioon erikoistunut hermoverkko, konvoluutioiset hermoverkot, jotka olisi mielenkiintoista yhdistää toistuvien kerrosten kanssa ja nähdä, kuinka visuaaliset ominaisuudet korreloivat joidenkin yritysten hintojen kanssa. Ehkä voisimme käyttää tungosta rautatieasemalta tulevaa kameransyöttöä funktiona ja liittää syötteen hermoverkkoon ja nähdä, korreloiko hermoverkon näkymä joidenkin yritysten osakekursseihin - siinä voi olla piilotettua tietoa banaali ja järjetön esimerkki.
Alla on kaavio, joka osoittaa, kuinka keskimääräinen harjoittelun menetys vähenee ajan myötä, mikä tarkoittaa, että hermoverkolla on riittävä kapasiteetti sopeutua harjoittelutietoihin. On tärkeää sanoa, että tiedot on normalisoitava, jotta syväoppimisalgoritmi voi lähentyä toisiaan.
Alla on kaavio, joka osoittaa, kuinka keskimääräinen testihäviö pienenee ajan myötä, mikä tarkoittaa, että hermoverkolla on kyky yleistää näkymättömiä tietoja.
Algoritmi on ahne; jos ennustat hinnan nousevan seuraavana päivänä, algoritmi ostaa osakkeen välittömästi n=1
yrityksen (jos salkussa on tarpeeksi käteistä), ja jos ei, myy kaikki yhtiön osakkeet (jos sinulla on). Sijoitusaika on kiinteä ja kestää 300 päivää. 300 päivän kuluttua kaikki osakkeet myydään. Näkymätön datasimulaatio, jonkin verran koulutusta, voidaan nähdä alla. Se osoittaa, kuinka salkun arvo nousee ajan mittaan pitkiä / lyhyitä toimia (tai tekemättä mitään) joka päivä.
Sharpe-suhde yllä olevaan simulaatioon on 1,48. Salkun lopullinen arvo 300 päivän jälkeen on 100263,79 dollaria. Jos ostaisimme osakkeita vasta ensimmäisenä päivänä ja myisimme ne 300 päivän kuluttua, salkun arvo olisi 99 988,41 dollaria. Alla on tilanne, jossa hermoverkko ei ole hyvin koulutettu ja menettää rahaa kiinteän 300 päivän jakson jälkeen.
Sharpe-suhde on -0,94. Salkun lopullinen arvo 300 päivän jälkeen on 99868,36 dollaria.
Tässä on mielenkiintoinen esimerkki: yllä oleva algoritmi on ahne ja ennustaa vain seuraavan päivän hinnan tekemällä mittauksia vain tämän ennusteen perusteella. On mahdollista ketjuttaa useita ennusteita ja ennustaa hinta seuraavissa vaiheissa tulevaisuudessa. Esimerkiksi ensimmäisellä merkinnällä [X_ground_truth_{t0}, X_ground_truth_{t1}, X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}]
ja ensimmäisen ulostulon, joka olisi [X_predicted_{t5}]
, voimme syöttää hermoverkkoa tällä ennustuksella niin, että seuraava tulo on [X_ground_truth_{t1}, X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}, X_predicted_{t5}]
ja lähtö on [X_predicted_{t6}]
. Seuraava kohta on [X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}, X_predicted_{t5}, X_predicted_{t6}]
tuloksena [X_predicted_{t7}]
ja niin edelleen. Ongelmana on, että olemme ottamassa käyttöön ennustusvirheen, joka kasvaa jokaisen uuden vaiheen kanssa ja lopulta johtaa erittäin huonoon pitkän aikavälin tulokseen, kuten alla olevassa kuvassa näkyy. Ennuste seuraa aluksi perustotuuden laskusuuntausta ja pysähtyy ja pahenee ajan myötä.
Google-osakekursseista tehtiin hyvin yksinkertainen perusteellinen analyysi, mutta siihen voi sisältyä melkein kaikki taloudelliset tiedot, kunhan tietomäärä on riittävän suuri ja hyvälaatuista. Tietojen on oltava syrjiviä, ja niiden on kuvattava ja esitettävä ongelma hyvin.
Jos se toimisi ja yleistyisi hyvin laajamittaisissa testauksissa, tämä järjestelmä voisi antaa hedge-rahastojen hoitajille mahdollisuuden spekuloida yrityksen osakkeiden tulevista hinnoista syvällisen oppimisen ja algoritmeihin perustuvien kaupankäyntistrategioiden avulla.
Suojausrahastojen hoitajat voivat antaa järjestelmälle rahamäärän päivittäiseen automaattiseen kaupankäyntiin. Olisi kuitenkin erittäin huono antaa automatisoitujen kaupankäyntialgoritmien käydä kauppaa ilman valvontaa. Hedge-rahastonhoitajalla on oltava syvällisiä oppimistaitoja tai hänen on palkattava joku, jolla on tarvittavat taidot seurata järjestelmää ja määrittää, milloin järjestelmä on menettänyt kyvyn yleistää ja käydä kauppaa hyvin. Jos järjestelmä menettäisi kykynsä yleistää, se olisi koulutettava alusta alkaen ja testattava uudelleen (ehkä lisäämällä syrjivämpiä ominaisuuksia tai uusia oivalluksia - käyttämällä uusia menneisyyden tietoja, joita ei ollut olemassa mallin ensimmäisen koulutuksen aikana).
Joskus tiedot eivät ole vain tarpeeksi hyviä syväoppimisjärjestelmän kouluttamiseksi ja yleistämiseksi hyvin, ja tällöin a kokenut syväoppimisinsinööri sen pitäisi pystyä havaitsemaan ja korjaamaan tällainen tilanne. Syvän oppimisen kaupankäyntijärjestelmän rakentamiseen tarvitaan hedge-rahastotietotutkijoita, koneoppimisen asiantuntijoita (sekä tutkijoita että insinöörejä), kone- ja syväoppimiseen perehtyneitä tuotekehitysinsinöörejä jne. Riippumatta siitä, mikä koneoppimissovelluksen osa on heille tuttu, olipa se konenäkö tai puheentunnistus, kokeneet ammattilaiset voivat käyttää asiantuntemustaan finanssialalla. Perusteellisesti syvällä oppimisella on samat perusteet sovelluksesta tai toimialasta riippumatta, ja kokeneen henkilön pitäisi olla helppo vaihtaa aiheesta.
Esittelemämme järjestelmä on hyvin yksinkertainen, ja sitä on sovellettava todellisessa maailmassa, tuoton lisäämiseksi on tehtävä enemmän tutkimusta ja kehitystä. Mahdolliset parannukset järjestelmään voivat olla parempien kaupankäyntistrategioiden kehittäminen. Auttaa keräämään enemmän tietoa koulutukseen, mikä on yleensä erittäin kallista. Pienempi aikaväli pisteiden välillä on parempi. Parannuksia voi olla myös useiden ominaisuuksien (esimerkiksi uutiskirjeiden tai tärkeiden tapahtumien, jotka vastaavat kutakin tietojoukon pisteitä, käytöstä huolimatta, että niitä on vaikea koodata hermoverkolle) ja laajan hyperparametrien haku- ja löytöruudukon käyttöön. .
Lisäksi tarvitaan suurempaa laskentatehoa (tehokkaita GPU: ita) monien suurten kokeiden suorittamiseksi rinnakkain ja suuren datamäärän käsittelemiseksi edellyttäen, että kerätään suuri määrä tietoa.
Viitteet:
Kirjoittajan huomautus: Haluan kiittää Ivan Čapalijaa ja Matej Paradžikia rakentavista keskusteluista ja neuvoja talouden syvälliseen oppimiseen, mikä auttoi minua kirjoittamaan tämän blogin.