osakekurssien ennustaminen käyttäen koneoppimista ja Syväoppimista (Python-koodeilla)

Johdanto

osakemarkkinoiden toiminnan ennustaminen on yksi vaikeimmista asioista. On niin monia tekijöitä mukana ennustus-fysikaaliset tekijät vs. physhological, rationaalinen ja irrationaalinen käyttäytyminen, jne. Kaikki nämä seikat yhdessä tekevät osakekursseista epävakaita ja erittäin vaikeasti ennustettavia.

voimmeko käyttää koneoppimista pelinvaihtajana tällä alalla? Käyttämällä ominaisuuksia, kuten viimeisimmät ilmoitukset organisaatiosta, niiden neljännesvuosittaiset tulotulokset, jne., koneoppimistekniikoilla on mahdollisuus kaivaa esiin kuvioita ja oivalluksia, joita emme nähneet aiemmin, ja näitä voidaan käyttää tekemään erehtymättömän tarkkoja ennusteita.

osakekurssiennuste, lstm, koneoppiminen

tässä artikkelissa käsittelemme historiallisia tietoja pörssiyhtiön osakekursseista. Toteutamme sekoituksen koneoppimisen algoritmeja ennustamaan tämän yhtiön tulevaa osakekurssia, alkaen yksinkertaisista algoritmeista, kuten keskiarvoistamisesta ja lineaarisesta regressiosta, ja sitten siirrymme kehittyneisiin tekniikoihin, kuten Auto ARIMAAN ja LSTM: ään.

tämän artikkelin ydinajatuksena on esitellä, miten nämä algoritmit toteutetaan. Kuvailen lyhyesti tekniikkaa ja tarjoan asiaankuuluvia linkkejä, jotta käsitteitä voidaan tarvittaessa jalostaa. Jos olet tulokas maailman aikasarjojen, ehdotan läpi seuraavat artikkelit ensin:

  • a comprehensive beginner ’ s guide to create a Time Series Forecast
  • a Complete Tutorial on Time Series Modeling
  • Free Course: Time Series Forecasting using Python

Project to Practice Time Series Forecasting

Time Series forecasting & modeling on tärkeä rooli data analysis. Aikasarja-analyysi on tilastojen erikoistunut haara, jota käytetään laajasti esimerkiksi ekonometrian & operaatiotutkimuksen aloilla.

aikasarjoja käytetään laajasti analytiikassa & datatieteessä. Tämä on erityisesti suunniteltu aikasarja ongelma sinulle ja haaste on ennakoida liikennettä.

Practice Now

oletko aloittelija etsimässä paikkaa datatieteen taipaleelle? Esittelee kattava kurssi, täynnä tietoa ja data science learning, kuratoitu sinua varten! Tämä kurssi kattaa kaiken koneoppimisen perusteista ML: n, syväoppimisen ja aikasarjojen edistyneisiin käsitteisiin.

  • sertifioitu tekoäly & ML mustavyö + ohjelma

Sisällysluettelo

    1. Ongelmalausekkeen ymmärtäminen
    2. liukuva keskiarvo
    3. lineaarinen regressio
    4. k-lähimmät naapurit
    5. Auto ARIMA
    6. profeetta
    7. pitkä lyhytkestoinen muisti (LSTM)

Ongelmalausunnon ymmärtäminen

sukellamme tämän artikkelin toteutusosaan pian, mutta ensin on tärkeää selvittää, mitä pyrimme ratkaisemaan. Yleisesti, osakemarkkinoiden analyysi on jaettu kahteen osaan-perustavanlaatuinen analyysi ja tekninen analyysi.

  • perusanalyysiin kuuluu yrityksen tulevan kannattavuuden analysointi sen nykyisen liiketoimintaympäristön ja taloudellisen tuloksen perusteella.
  • tekniseen analyysiin taas kuuluu kaavioiden lukeminen ja tilastolukujen käyttäminen osakemarkkinoiden trendien selvittämiseen.

kuten arvata saattoi, keskitymme tekniseen analyysiin. Käytämme Quandlin aineistoa (löydät historiatietoja eri varastoista täältä) ja tässä projektissa olen käyttänyt Tata Global Beverages-aineistoa. Aika sukeltaa!

huomaa: tässä on tietokokonaisuus, jota käytin koodiin: Lataa

ensin ladataan tietokokonaisuus ja määritellään kohdemuuttuja ongelmalle:

#import packagesimport pandas as pdimport numpy as np#to plot within notebookimport matplotlib.pyplot as plt%matplotlib inline#setting figure sizefrom matplotlib.pylab import rcParamsrcParams = 20,10#for normalizing datafrom sklearn.preprocessing import MinMaxScalerscaler = MinMaxScaler(feature_range=(0, 1))#read the filedf = pd.read_csv('NSE-TATAGLOBAL(1).csv')#print the headdf.head()

aineistossa on useita muuttujia-date, open, high, low, last, close, total_trade_quantity, ja liikevaihto.

  • auki ja kiinni olevat sarakkeet kuvaavat lähtö-ja lopullista hintaa, jolla osakkeella käydään kauppaa tiettynä päivänä.
  • Korkea, Matala ja viimeinen edustavat osakkeen päivän enimmäis -, vähimmäis-ja viimeistä hintaa.
  • Kokonaiskauppamäärä on päivän aikana ostettujen tai myytyjen osakkeiden lukumäärä ja liikevaihto (Lacs) tietyn yrityksen tiettynä päivänä tekemä liikevaihto.

toinen tärkeä huomionarvoinen seikka on, että tori on suljettu viikonloppuisin ja pyhäpäivinä.Huomaa yllä oleva taulukko uudelleen, joitakin päivämääräarvoja puuttuu-2/10/2018, 6/10/2018, 7/10/2018. Näistä päivämääristä 2. on kansallinen vapaapäivä, kun taas 6. ja 7. syksy on viikonloppu.

tuloslaskelma määräytyy yleensä osakkeen päivän päätöskurssin mukaan, joten tavoitemuuttujana pidetään päätöskurssia. Let ’ s juoni kohdemuuttuja ymmärtää, miten se muotoutuu meidän data:

#setting index as datedf = pd.to_datetime(df.Date,format='%Y-%m-%d')df.index = df#plotplt.figure(figsize=(16,8))plt.plot(df, label='Close Price history')

tulevissa jaksoissa tutkimme näitä muuttujia ja käytämme erilaisia tekniikoita osakkeen päivittäisen päätöskurssin ennustamiseen.

liukuva keskiarvo

Johdanto

”keskiarvo” on helposti yksi yleisimmistä arkielämässämme käytettävistä asioista. Esimerkiksi keskiarvojen laskeminen yleisen suorituskyvyn määrittämiseksi tai viime päivien keskilämpötilan löytäminen saadaksesi käsityksen tämän päivän lämpötilasta – nämä kaikki ovat rutiinitehtäviä, joita teemme säännöllisesti. Tämä on siis hyvä lähtökohta käyttää aineistoamme ennusteiden tekemiseen.

kunkin päivän ennustettu päätöskurssi on aiemmin havaittujen arvojen keskiarvo. Sen sijaan, että käyttäisimme yksinkertaista keskiarvoa, käytämme liukuvan keskiarvon tekniikkaa, joka käyttää viimeisimpiä arvoja jokaiselle ennusteelle. Toisin sanoen jokaisessa myöhemmässä vaiheessa otetaan huomioon ennustetut arvot ja poistetaan vanhin havaittu arvo joukosta. Tässä on yksinkertainen luku, joka auttaa sinua ymmärtämään tämän selkeämmin.

toteutamme tämän tekniikan tietokokonaisuudessamme. Ensimmäinen askel on luoda datakehys, joka sisältää vain päivämäärä ja sulje hinta sarakkeet, sitten jakaa sen juna ja validointi asettaa tarkistaa ennusteita.

toteutus

pelkkä rmse: n tarkistaminen ei auta ymmärtämään, miten malli toimi. Visualisoidaan tämä saadaksesi intuitiivisemman ymmärryksen. Joten tässä on ennustettujen arvojen kuvaaja todellisten arvojen ohella.

#plotvalid = 0valid = predsplt.plot(train)plt.plot(valid])

päättely

Rmse-arvo on lähellä arvoa 105, mutta tulokset eivät ole kovin lupaavia (kuten kuviosta voi päätellä). Ennustetut arvot ovat samaa luokkaa kuin havaitut arvot junajoukossa (ensin suuntaus kasvaa ja sitten hidastuu).

seuraavassa jaksossa tarkastellaan kahta yleisesti käytettyä koneoppimistekniikkaa-lineaarista regressiota ja kNN: ää, ja katsotaan, miten ne toimivat osakemarkkinadatassamme.

lineaarinen regressio

Johdanto

alkeellisin koneoppimisen algoritmi, joka voidaan toteuttaa tällä aineistolla, on lineaarinen regressio. Lineaarinen regressiomalli palauttaa yhtälön, joka määrittää riippumattomien muuttujien ja riippuvaisen muuttujan välisen suhteen.

lineaarisen regression yhtälö voidaan kirjoittaa seuraavasti:

tässä, x1, x2,….XN edustavat riippumattomia muuttujia, kun taas kertoimet θ1, θ2,…. θn edustavat painoja. Voit viitata seuraavaan artikkeliin tutkiaksesi lineaarista regressiota tarkemmin:

  • kattava aloittelijoille opas Linear, Ridge ja Lasso regressio.

ongelmalauseessamme meillä ei ole itsenäisten muuttujien joukkoa. Meillä on vain päivämäärät. Käyttäkäämme päivämäärä sarake poimia ominaisuuksia, kuten-päivä, kuukausi, vuosi, ma / pe jne. sitten sovitaan lineaarinen regressiomalli.

toteutus

lajitellaan aineisto ensin nousevaan järjestykseen ja luodaan sitten erillinen aineisto siten, että luotu uusi ominaisuus ei vaikuta alkuperäiseen aineistoon.

#setting index as date valuesdf = pd.to_datetime(df.Date,format='%Y-%m-%d')df.index = df#sortingdata = df.sort_index(ascending=True, axis=0)#creating a separate datasetnew_data = pd.DataFrame(index=range(0,len(df)),columns=)for i in range(0,len(data)): new_data = data new_data = data

#create featuresfrom fastai.structured import add_datepartadd_datepart(new_data, 'Date')new_data.drop('Elapsed', axis=1, inplace=True) #elapsed will be the time stamp

tämä luo ominaisuuksia, kuten:

”Vuosi”, ”kuukausi”, ”viikko”, ”päivä”, ”Dayofweek”, ”Dayofyear”, ”Is_month_end”, ”Is_month_start”, ”Is_quarter_end”, ”Is_year_start” ja ”Is_year_start”.

Huom: olen käyttänyt add_datepartia fastain kirjastosta. Jos sinulla ei ole sitä asennettuna, voit käyttää komentoa pip install fastai. Muuten, voit luoda nämä ominaisuudet käyttämällä simple for loops python. Olen näyttänyt esimerkin alla.

tämän lisäksi voimme lisätä omat piirteemme, joiden uskomme olevan merkityksellisiä ennusteiden kannalta. Hypoteesini on esimerkiksi se, että viikon ensimmäinen ja viimeinen päivä voivat mahdollisesti vaikuttaa osakkeen päätöskurssiin paljon muita päiviä enemmän. Joten olen luonut ominaisuuden, joka tunnistaa, onko tietty päivä on maanantai / perjantai tai tiistai / keskiviikko / torstai. Tämä voidaan tehdä käyttämällä seuraavia koodirivejä:

new_data = 0for i in range(0,len(new_data)): if (new_data == 0 or new_data == 4): new_data = 1 else: new_data = 0

jos viikonpäivä on 0 tai 4, sarakkeen arvo on 1, muuten 0. Samoin, voit luoda useita ominaisuuksia. Jos sinulla on joitakin ideoita ominaisuuksia, jotka voivat olla hyödyllisiä ennustaa osakekurssin, Jaa kommentti osiossa.

jaamme nyt tiedot juna-ja validointijoukkoihin tarkistaaksemme mallin suorituskyvyn.

#split into train and validationtrain = new_datavalid = new_datax_train = train.drop('Close', axis=1)y_train = trainx_valid = valid.drop('Close', axis=1)y_valid = valid#implement linear regressionfrom sklearn.linear_model import LinearRegressionmodel = LinearRegression()model.fit(x_train,y_train)

tulokset

#make predictions and find the rmsepreds = model.predict(x_valid)rms=np.sqrt(np.mean(np.power((np.array(y_valid)-np.array(preds)),2)))rms
121.16291596523156

Rmse-arvo on suurempi kuin edellinen tekniikka, mikä osoittaa selvästi, että lineaarinen regressio on toiminut huonosti. Katsotaanpa juoni ja ymmärtää, miksi lineaarinen regressio ei ole tehnyt hyvin:

#plotvalid = 0valid = predsvalid.index = new_data.indextrain.index = new_data.indexplt.plot(train)plt.plot(valid])

päättely

lineaarinen regressio on yksinkertainen tekniikka ja melko helppo tulkita, mutta siihen liittyy muutamia ilmeisiä haittoja. Yksi ongelma regressioalgoritmien käytössä on se, että malli ylitetään päivämäärä-ja kuukausi-sarakkeeseen. Sen sijaan, että mallissa otettaisiin huomioon aiemmat arvot ennustamispisteestä, tarkastellaan arvoa samalta päivältä kuukausi sitten tai samalta päivältä/kuukaudelta vuosi sitten.

kuten yllä olevasta tontista näkyy, tammikuussa 2016 ja tammikuussa 2017 osakekurssi laski. Malli on ennustanut samaa tammikuulle 2018. Lineaarinen regressiotekniikka voi toimia hyvin Big Mart-myynnin kaltaisissa ongelmissa, joissa riippumattomat ominaisuudet ovat hyödyllisiä tavoitearvon määrittämisessä.

k-lähimmät naapurit

Johdanto

toinen kiinnostava ML-algoritmi, jota tässä voi käyttää, on kNN (k lähimmät naapurit). Riippumattomien muuttujien perusteella kNN löytää yhtäläisyyksiä uusien ja vanhojen datapisteiden välillä. Selitän tämän yksinkertaisella esimerkillä.

huomioi 11 henkilön pituus ja ikä. Tiettyjen piirteiden (”ikä” ja ”korkeus”) perusteella taulukko voidaan esittää graafisessa muodossa alla esitetyllä tavalla:

tunnisteen #11 painon määrittämiseksi kNN ottaa huomioon tämän tunnisteen lähimpien naapureiden painon. ID #11: n painon ennustetaan olevan sen naapureiden keskiarvo. Jos otamme huomioon kolme naapuria (k=3) nyt, paino ID#11 olisi = (77+72+60)/3 = 69.66 kg.

kNN: n yksityiskohtaiseen ymmärtämiseen voidaan viitata seuraavissa artikkeleissa:

  • Johdatus k-lähimmät naapurit: Yksinkertaistettu

  • käytännön Johdatus K-lähimmät naapurit algoritmi regressio

toteutus

#importing librariesfrom sklearn import neighborsfrom sklearn.model_selection import GridSearchCVfrom sklearn.preprocessing import MinMaxScalerscaler = MinMaxScaler(feature_range=(0, 1))

käyttäen samaa junaa ja validointijoukkoa viimeisestä osiosta:

#scaling datax_train_scaled = scaler.fit_transform(x_train)x_train = pd.DataFrame(x_train_scaled)x_valid_scaled = scaler.fit_transform(x_valid)x_valid = pd.DataFrame(x_valid_scaled)#using gridsearch to find the best parameterparams = {'n_neighbors':}knn = neighbors.KNeighborsRegressor()model = GridSearchCV(knn, params, cv=5)#fit the model and make predictionsmodel.fit(x_train,y_train)preds = model.predict(x_valid)

tulokset

#rmserms=np.sqrt(np.mean(np.power((np.array(y_valid)-np.array(preds)),2)))rms
115.17086550026721

rmse-arvossa ei ole suurta eroa, mutta ennustettujen ja todellisten arvojen kuvaajan pitäisi antaa selkeämpi käsitys.

#plotvalid = 0valid = predsplt.plot(valid])plt.plot(train)

päättely

Rmse-arvo on lähes samanlainen kuin lineaarisessa regressiomallissa ja kuviossa on sama kuvio. Kuten lineaarinen regressio, myös kNN havaitsi pudotuksen tammikuussa 2018, koska se on ollut viime vuosien kuvio. Voimme turvallisesti sanoa, että regressioalgoritmit eivät ole toimineet hyvin tässä aineistossa.

mennäänpä eteenpäin ja tarkastellaan joitakin aikasarjojen ennustusmenetelmiä selvittääksemme, miten ne toimivat kohdatessaan tämän osakekurssien ennustushaasteen.

Auto ARIMA

Johdanto

ARIMA on hyvin suosittu tilastollinen menetelmä aikasarjojen ennustamiseen. ARIMA-malleissa otetaan huomioon menneet arvot tulevaisuuden arvojen ennustamiseksi. Arimassa on kolme tärkeää muuttujaa:

  • p (seuraavan arvon ennustamiseen käytetyt menneet arvot)
  • q (tulevien arvojen ennustamiseen käytetyt aiemmat ennustevirheet)
  • d (erojärjestys)

parametri viritys ARIMA kuluttaa paljon aikaa. Joten käytämme auto ARIMA joka automaattisesti valitsee paras yhdistelmä (P, q, d), joka tarjoaa vähiten virheitä. Lue lisää siitä, miten auto ARIMA toimii, katso tämä artikkeli:

  • Rakenna suorituskykyiset Aikasarjamallit Auto Ariman avulla

toteutus

from pyramid.arima import auto_arimadata = df.sort_index(ascending=True, axis=0)train = datavalid = datatraining = trainvalidation = validmodel = auto_arima(training, start_p=1, start_q=1,max_p=3, max_q=3, m=12,start_P=0, seasonal=True,d=1, D=1, trace=True,error_action='ignore',suppress_warnings=True)model.fit(training)forecast = model.predict(n_periods=248)forecast = pd.DataFrame(forecast,index = valid.index,columns=)

tulokset

rms=np.sqrt(np.mean(np.power((np.array(valid)-np.array(forecast)),2)))rms
44.954584993246954
#plotplt.plot(train)plt.plot(valid)plt.plot(forecast)

päättely

kuten aiemmin näimme, auto ARIMA-malli käyttää menneitä tietoja ymmärtääkseen aikasarjan kuvion. Näitä arvoja käyttäen malli nappasi kasvavan trendin sarjassa. Vaikka tätä tekniikkaa käyttävät ennusteet ovat paljon parempia kuin aiemmin toteutetut koneoppimismallit, nämä ennusteet eivät ole vielä lähelläkään todellisia arvoja.

kuten juonesta käy ilmi, malli on vanginnut sarjan trendin, mutta ei keskity kausijuttuun. Seuraavassa osiossa toteutamme aikasarjamallin, joka ottaa huomioon sekä sarjan trendit että kausiluonteisuuden.

profeetta

Johdanto

on olemassa useita aikasarjatekniikoita, jotka voidaan toteuttaa kannan ennustusaineistossa, mutta useimmat näistä tekniikoista vaativat paljon tietojen esikäsittelyä ennen mallin asentamista. Prophet, suunnitellut ja edelläkävijä Facebook, on aikasarja ennustekirjasto, joka ei vaadi tietojen esikäsittelyä ja on erittäin helppo toteuttaa. Syöte Profeetta on dataframe kaksi saraketta: päivämäärä ja kohde (DS ja y).

profeetta yrittää vangita aikaisemman tiedon kausaalisuuden ja toimii hyvin, kun aineisto on suuri. Tässä on mielenkiintoinen artikkeli, joka selittää profeetta yksinkertaisella ja intuitiivisella tavalla:

  • luo nopeita ja tarkkoja Aikasarjaennusteita käyttäen Facebook ’ s Prophet.

toteutus

#importing prophetfrom fbprophet import Prophet#creating dataframenew_data = pd.DataFrame(index=range(0,len(df)),columns=)for i in range(0,len(data)): new_data = data new_data = datanew_data = pd.to_datetime(new_data.Date,format='%Y-%m-%d')new_data.index = new_data#preparing datanew_data.rename(columns={'Close': 'y', 'Date': 'ds'}, inplace=True)#train and validationtrain = new_datavalid = new_data#fit the modelmodel = Prophet()model.fit(train)#predictionsclose_prices = model.make_future_dataframe(periods=len(valid))forecast = model.predict(close_prices)

tulokset

#rmseforecast_valid = forecastrms=np.sqrt(np.mean(np.power((np.array(valid)-np.array(forecast_valid)),2)))rms
57.494461930575149
#plotvalid = 0valid = forecast_valid.valuesplt.plot(train)plt.plot(valid])

päättely

profeetta (kuten useimmat aikasarjojen ennustamistekniikat) yrittää vangita trendin ja kausaalisuuden aiemmista tiedoista. Tämä malli toimii yleensä hyvin aikasarjojen aineistoissa, mutta ei täytä mainettaan tässä tapauksessa.

käy ilmi, että osakekursseilla ei ole erityistä trendiä tai kausiluonteisuutta. Se riippuu suuresti siitä, mitä markkinoilla tällä hetkellä tapahtuu ja sitä kautta hinnat nousevat ja laskevat. Siksi ennustaminen tekniikoita, kuten ARIMA, SARIMA ja profeetta ei näytä hyviä tuloksia tämän erityisen ongelman.

kokeillaanpa toista kehittynyttä tekniikkaa: Lstm (Long Short Term Memory).

pitkä lyhytkestoinen muisti (Lstm)

Johdanto

Lstm: ää käytetään laajalti sekvenssin ennustusongelmiin ja se on osoittautunut erittäin tehokkaaksi. Syy, miksi ne toimivat niin hyvin, on se, että LSTM pystyy tallentamaan menneen tärkeän tiedon ja unohtamaan sen, mikä ei ole. LSTM: ssä on kolme porttia:

  • syöttöportti: Syöttöportti lisää tietoa solun tilaan
  • forget gate: se poistaa tiedot, joita ei enää vaadita mallissa
  • ulostuloportti: lähtöportti lstm: ssä valitsee tuotokseksi näytettävän tiedon

yksityiskohtaisempaa ymmärrystä LSTM ja sen arkkitehtuuri, voit käydä läpi alla artikkeli:

  • Johdatus Long Short Term Memory

for now, lstm as a black box and check it ’ s performance on our specific data.

Toteutus

#importing required librariesfrom sklearn.preprocessing import MinMaxScalerfrom keras.models import Sequentialfrom keras.layers import Dense, Dropout, LSTM#creating dataframedata = df.sort_index(ascending=True, axis=0)new_data = pd.DataFrame(index=range(0,len(df)),columns=)for i in range(0,len(data)): new_data = data new_data = data#setting indexnew_data.index = new_data.Datenew_data.drop('Date', axis=1, inplace=True)#creating train and test setsdataset = new_data.valuestrain = datasetvalid = dataset#converting dataset into x_train and y_trainscaler = MinMaxScaler(feature_range=(0, 1))scaled_data = scaler.fit_transform(dataset)x_train, y_train = , for i in range(60,len(train)): x_train.append(scaled_data) y_train.append(scaled_data)x_train, y_train = np.array(x_train), np.array(y_train)x_train = np.reshape(x_train, (x_train.shape,x_train.shape,1))# create and fit the LSTM networkmodel = Sequential()model.add(LSTM(units=50, return_sequences=True, input_shape=(x_train.shape,1)))model.add(LSTM(units=50))model.add(Dense(1))model.compile(loss='mean_squared_error', optimizer='adam')model.fit(x_train, y_train, epochs=1, batch_size=1, verbose=2)#predicting 246 values, using past 60 from the train datainputs = new_data.valuesinputs = inputs.reshape(-1,1)inputs = scaler.transform(inputs)X_test = for i in range(60,inputs.shape): X_test.append(inputs)X_test = np.array(X_test)X_test = np.reshape(X_test, (X_test.shape,X_test.shape,1))closing_price = model.predict(X_test)closing_price = scaler.inverse_transform(closing_price)

Tulokset

rms=np.sqrt(np.mean(np.power((valid-closing_price),2)))rms
11.772259608962642
#for plottingtrain = new_datavalid = new_datavalid = closing_priceplt.plot(train)plt.plot(valid])

Päättely

Wow! Lstm-Malli voidaan virittää erilaisille parametreille, kuten lstm-kerrosten määrän muuttamiselle, dropout-arvon lisäämiselle tai epookkien määrän lisäämiselle. Mutta riittävätkö lstm: n ennusteet tunnistamaan, nouseeko vai laskeeko osakekurssi? Ei suinkaan!

kuten jutun alussa mainitsin, osakekurssiin vaikuttavat yhtiötä koskevat uutiset ja muut tekijät, kuten yhtiöiden demonetisoituminen tai fuusio/hajautuminen. On myös tiettyjä aineettomia tekijöitä, joita voi usein olla mahdotonta ennustaa etukäteen.

Loppuhuomautukset

aikasarjojen ennustaminen on hyvin kiehtova ala työskennellä, kuten olen huomannut näitä artikkeleita kirjoittaessani. Yhteisössä on käsitys, että se on monimutkainen ala, ja vaikka siellä on jyvä totuutta, se ei ole niin vaikeaa, kun saat kiinni perustekniikat.

Vastaa

Sähköpostiosoitettasi ei julkaista.