Exxact | Deep Learning, HPC, AV, Distribution & More

How to Predict Stock Market Prices Using LSTM

A pénzügyi ipar volt az egyik első iparág, amely a gépi tanulás és a mélytanulás használatát a befektetési elemzésben és műveletekben alkalmazta, hogy értéket teremtsen ügyfelei számára. A gépi tanulás, a mélytanulás és az egész “kvantumos” forradalom előtt a 2000-es években egészen mostanáig az elemzők és a befektetők kevésbé technológiára támaszkodó technikákra támaszkodtak. A fundamentális és technikai elemzés uralkodott, és bár még mindig ezek teszik ki az elemzés nagy részét, ma már kombinálják őket a számítógépek által készített előrejelzésekkel és elemzésekkel.

A legtöbb ember tudja, hogy a tőzsde az a hely, ahol az emberek részvényeket vesznek és adnak el. Ezeknek a részvényeknek a vétele és eladása (azaz a kereskedés) fizikai és virtuális környezetben, úgynevezett “tőzsdéken” történik. Ezek a tőzsdék az indexek házai (az általánosan ismertek a Dow Jones Industrial Average és a NASDAQ Composite). A tőzsdéken határozzák meg az indexeket alkotó részvények árfolyamát.

A részvények árfolyamát számos tényező befolyásolhatja. A napi híradások, amelyek jó vagy rossz híreket hordoznak egy vállalat jelenlegi vagy jövőbeli kilátásairól, vitathatatlanul az egyik legbefolyásosabb tényező, amely a napi árfolyam-ingadozásokat irányítja. Egy vállalat nyereségessége, bevételeinek növekedése és jövőbeli terjeszkedési kilátásai olyan mutatók, amelyek hosszú és rövid távú árfolyamváltozásokat határozhatnak meg. A Deep Learning és más statisztikai modellek csak ennyit tudnak figyelembe venni, és általában jobban alkalmasak rövid-közép távú előrejelzésre, mint hosszú távú (pl. évek) előrejelzésre.

A gyorsabb eredmények elérése érdekli?
Tudjon meg többet az Exxact Deep Learning megoldásairól

Hosszú rövid távú memóriamodellek (LSTM)

Long Short Term Memory Models (LSTM)

forrás

A LSTM-ek a rekurrens neurális hálózat (RNN) származékai. Az RNN megfelelő modell rövid időhorizontra, talán egy héttől egy hónapig terjedő időszakra. Ennél hosszabb távon az RNN nem valószínű, hogy megbízható előrejelzéseket készít. Ennek oka az eltűnő gradiens probléma.

A normál idősoros módszer, mint például az AR és származékai vagy az ANN (mesterséges neurális hálózat) úgy tanulhat, hogy nagy súlyt helyez az előző napi árfolyamra és néhány más jellemzőre. Pénzügyi idősorok esetében ARCH modelleket és származékaikat használná a hozamok vagy a volatilitás előrejelzésére. A feed forward hálózatban ezeket a pontokat egymástól függetlennek tekintik. Ez azt jelenti, hogy az LSTM nem ugyanazt a megközelítést alkalmazza, mint a hagyományos idősor-előrejelzési módszerek.

Az LSTM különböző függőségeket használ az előrejelzésben

Az LSTM az adatokat az úgynevezett “cellákon” keresztül veszi át, amint az a fenti, középső téglalapban ábrázolt diagramon látható. Ezeken a cellák állapotán keresztül az LSTM dönthet úgy, hogy emlékszik vagy elfelejt dolgokat.

Egy LSTM-nek 3 különböző függősége lesz a kapott információtól függően:

    1. Az előző cella állapota (azaz az előző időlépés után a memóriában lévő információ)
    2. A korábbi rejtett állapot (azaz ez megegyezik az előző cella kimenetével)
    3. A bemenet az aktuális időlépésnél (azaz. az adott pillanatban betáplált új információ)

A pénzügyi eszközök árfolyam-előrejelzésének területén ezek a függőségek az alábbiak szerint magyarázhatók:

  1. Az előző cella állapota – A részvény előző napi trendje.
  2. Az előző rejtett állapot – A részvény előző napi ára.
  3. Az aktuális időlépés bemenete – Az árat befolyásoló egyéb tényezők. Ezek jellemzően a nap folyamán a befektetők számára elérhetővé váló hírek lesznek.

Az LSTM cellás állapotai a tárolásuk módjában

Forrás

A fenti ábrán a vízszintes vonal ct jelöli a cellás állapotot, amely az LSTM memóriája. Mint fentebb rögtön említettük, ez a részvény előző napi trendjére vonatkozik (1). Ez az információ beáramlik a cellába, és a többi beáramló információval együtt kerül feldolgozásra. A ct-1-gyel jelölt sor a rejtett állapot (2), amely a részvény-előrejelzés esetében az előző időlépések információit (azaz az előző napi részvényárfolyamot) tartalmazza. A ht-1-vel jelölt vízszintes vonal a jelenlegi bemenet, amely az aktuális részvényárfolyam (3). A korábbi részvényárfolyam (Rejtett állapot), az aktuális ár és az előző napi trend (Cell State) információinak felhasználásával az LSTM egy kimenetet fog generálni.

AMD EPYC SERVER ELADÓ

Python kód egy LSTM előrejelző modell létrehozásához

A következő Python kód végigvezet minket egy részvényárfolyamot előrejelző LSTM modell létrehozásának lépésein.

  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

A tőzsdei árfolyamok előrejelzésére alkalmas program LSTM segítségével

Most már megvan a Python-kód, amellyel elkezdhetjük a tőzsdei árfolyamok előrejelzését LSTM segítségével. Próbáld ki, és tudasd velünk, hogyan működik nálad. Még csak az elején vagyunk az LSTM különböző alkalmazásokban való képességének kibontásának, és izgatottan várjuk a jövőt.

Tudjon meg többet arról, hogyan használják az LSTM rekurrens neurális hálózatokat más alkalmazásokban.

Kérdése van a mélytanulási munkaállomásokkal vagy szerverekkel kapcsolatban?
Lépjen kapcsolatba az Exxact-tal még ma

.

Leave a Reply

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.