Exxact | Djupinlärning, HPC, AV, distribution med mera

Hur man förutspår aktiemarknadspriser med hjälp av LSTM

Finansbranschen var en av de första branscherna som använde maskininlärning och djupinlärning i sina investeringsanalyser och verksamheter för att skapa mervärde för sina kunder. Före maskininlärning, djupinlärning och hela ”Quant”-revolutionen på 2000-talet fram till nu förlitade sig analytiker och investerare på mindre teknikberoende tekniker. Fundamental och teknisk analys rådde och även om de fortfarande utgör en stor del av analysen kombineras de nu med prognoser och analyser som görs av datorer.

Som de flesta vet är aktiemarknaden en plats där människor köper och säljer aktier. Handlingen att köpa och sälja dessa aktier (dvs. handel) sker i fysiska och virtuella miljöer som kallas ”börser”. Dessa börser är hus för index (allmänt kända är Dow Jones Industrial Average och NASDAQ Composite). Det är på börserna som priset på de aktier som ingår i indexen fastställs.

Det finns många faktorer som kan påverka priset på en aktie. Dagliga nyhetsrapporter med goda eller dåliga nyheter om ett företags nuvarande eller framtida utsikter är utan tvekan en av de mest inflytelserika faktorerna som driver dagliga prisfluktuationer. Ett företags lönsamhet, intäktstillväxt och framtida expansionsutsikter är indikatorer som kan fastställa långsiktiga och kortsiktiga prisförändringar. Djupinlärning och andra statistiska modeller kan bara redogöra för en viss mängd och lämpar sig vanligtvis bättre för prognoser på kort medellång sikt än på lång sikt (t.ex. år).

Intresserad av att få snabbare resultat?
Lär dig mer om Exxact Deep Learning Solutions

Unpacking Long Short Term Memory Models (LSTM)

Long Short Term Memory Models (LSTM)

Källa

LSTM:s är ett derivat av ett Recurrent Neural Network (RNN). Ett RNN är en lämplig modell för en kort tidshorisont på kanske en vecka till en månad. Om man går längre än så är det osannolikt att RNN ger tillförlitliga prognoser. Detta beror på problemet med den försvinnande gradienten.

En normal tidsseriemetod som AR och dess derivat eller ANN (Artificial Neural Network) kan lära sig genom att tillämpa en stor vikt mot föregående dags pris plus några andra egenskaper. För finansiella tidsserier skulle man använda ARCH-modeller och deras derivat för att förutsäga avkastning eller volatilitet. I ett feed forward-nätverk betraktas dessa punkter som oberoende av varandra. Detta innebär att LSTM inte har samma tillvägagångssätt som de traditionella tidsserieprognosmetoderna.

LSTM använder olika beroenden vid prognostisering

En LSTM tar data genom vad den kallar ”celler” som du kan se i diagrammet ovan som avbildas i den mellersta rektangeln. Det är genom detta celltillstånd som LSTM kan välja att komma ihåg eller glömma saker.

En LSTM kommer att ha 3 olika beroenden beroende på den information den tar emot:

    1. Det tidigare celltillståndet (dvs. den information som fanns i minnet efter det föregående tidssteget)
    2. Det tidigare dolda tillståndet (dvs. detta är detsamma som den föregående cellens utdata)
    3. Inmatningen vid det aktuella tidssteget (dvs. den nya information som matas in för tillfället)

På området prediktion av priset på finansiella tillgångar kan dessa beroenden förklaras på följande sätt:

  1. Det tidigare celltillståndet – Aktiens utveckling den föregående dagen.
  2. Det tidigare dolda tillståndet – Aktiens pris den föregående dagen.
  3. Inmatningen i det aktuella tidssteget – Andra faktorer som kan påverka priset. Detta kommer vanligtvis att vara nyhetsvarningar som blir tillgängliga för investerare under dagen.

Celltillstånd i LSTM i hur de lagras

Källa

I diagrammet ovan betecknar den horisontella linjen ct celltillståndet som är LSTM:s minne. Som vi omedelbart nämnde ovan avser detta aktiens utveckling under föregående dag (1). Den informationen kommer att strömma in i cellen och bearbetas tillsammans med den andra informationen som strömmar in. Linjen som betecknas med ct-1 är det dolda tillståndet (2) som i vårt fall av aktieförutsägelse kommer att innehålla informationen från tidigare tidssteg (dvs. föregående dags aktiekurs). Den horisontella linjen som betecknas med ht-1 är den aktuella inmatningen, vilket är det aktuella aktiekursen (3). Med hjälp av informationen från det tidigare aktiekursen (Hidden State), det aktuella priset i kombination med föregående dags trend (Cell State) kommer LSTM:en att generera ett utdata.

AMD EPYC SERVER SALE

Python-kod för att skapa en LSTM-förutsägelsemodell

Nedan följer en Python-kod som går igenom steg för steg för att skapa en LSTM-modell för att förutsäga priset på en aktie.

  1. # -*- coding: utf-8 -*-
  2. """EXXACT - Stock Market Prediction LSTM.ipynb
  3. Automatically generated by Colaboratory.
  4. """
  5. # By running this line of code, you will be prompted to select your file to upload.
  6. from google.colab import files
  7. uploaded = files.upload()
  8. import io
  9. import pandas as pd
  10. import numpy as np
  11. import matplotlib.pyplot as plt
  12. %matplotlib inline
  13. from matplotlib.pylab import rcParams
  14. rcParams=20,10
  15. from keras.models import Sequential
  16. from keras.layers import LSTM,Dropout,Dense
  17. from sklearn.preprocessing import MinMaxScaler
  18. df = pd.read_csv(io.BytesIO(uploaded))
  19. print(df)
  20. df=pd.to_datetime(df.Date,format="%Y-%m-%d")
  21. df.index=df
  22. data=df.sort_index(ascending=True,axis=0)
  23. new_dataset=pd.DataFrame(index=range(0,len(df)),columns=)
  24. for i in range(0,len(data)):
  25. new_dataset=data
  26. new_dataset=data
  27. train_data=final_dataset
  28. valid_data=final_dataset
  29. new_dataset.index=new_dataset.Date
  30. new_dataset.drop("Date",axis=1,inplace=True)
  31. scaler=MinMaxScaler(feature_range=(0,1))
  32. scaled_data=scaler.fit_transform(new_dataset)
  33. x_train_data,y_train_data=,
  34. for i in range(60,len(train_data)):
  35. x_train_data.append(scaled_data)
  36. y_train_data.append(scaled_data)
  37. x_train_data,y_train_data=np.array(x_train_data),np.array(y_train_data)
  38. x_train_data=np.reshape(x_train_data,(x_train_data.shape,x_train_data.shape,1))
  39. lstm_model=Sequential()
  40. lstm_model.add(LSTM(units=50,return_sequences=True,input_shape=(x_train_data.shape,1)))
  41. lstm_model.add(LSTM(units=50))
  42. lstm_model.add(Dense(1))
  43. inputs_data=new_dataset.values
  44. inputs_data=inputs_data.reshape(-1,1)
  45. inputs_data=scaler.transform(inputs_data)
  46. lstm_model.compile(loss='mean_squared_error',optimizer='adam')
  47. lstm_model.fit(x_train_data,y_train_data,epochs=1,batch_size=1,verbose=2)
  48. X_test=
  49. for i in range(60,inputs_data.shape):
  50. X_test.append(inputs_data)
  51. X_test=np.array(X_test)
  52. X_test=np.reshape(X_test,(X_test.shape,X_test.shape,1))
  53. predicted_closing_price=lstm_model.predict(X_test)
  54. predicted_closing_price=scaler.inverse_transform(predicted_closing_price)
  55. train_data=new_dataset
  56. valid_data=new_dataset
  57. valid_data=predicted_closing_price

Ett program som kan förutsäga aktiemarknadspriser med hjälp av LSTM

Du har nu Pythonkoden för att komma igång med att förutsäga aktiekurser på börserna med hjälp av LSTM. Pröva det och låt oss veta hur det fungerar för dig. Vi är bara i början av att packa upp LSTM:s kapacitet i olika tillämpningar, och vi ser med spänning på framtiden.

Lär dig mer om hur LSTM Recurrent Neural Networks används i andra tillämpningar.

Har du några frågor om arbetsstationer eller servrar för djupinlärning?
Kontakta Exxact idag

Lämna ett svar

Lämna ett svar

Din e-postadress kommer inte publiceras.