Exxact | Deep Learning, HPC, AV, distribuce a další

Jak předpovídat ceny na burze pomocí LSTM

Finanční průmysl byl jedním z prvních odvětví, které začalo využívat strojové učení a hluboké učení ve svých investičních analýzách a operacích s cílem zvýšit hodnotu pro své zákazníky. Před strojovým učením, hlubokým učením a celou „kvantovou“ revolucí v roce 2000 až do současnosti se analytici a investoři spoléhali na méně technologicky závislé techniky. Vládla fundamentální a technická analýza, a i když stále tvoří velkou část analýzy, nyní se kombinují s prognózami a analýzami prováděnými počítači.

Jak většina lidí ví, akciový trh je místo, kde lidé nakupují a prodávají akcie. Akt nákupu a prodeje těchto akcií (tj. obchodování) probíhá ve fyzickém a virtuálním prostředí zvaném „burzy“. Tyto burzy jsou domy pro indexy (běžně známé jsou Dow Jones Industrial Average a NASDAQ Composite). Na burzách se stanovuje cena akcií, které tvoří tyto indexy.

Existuje mnoho faktorů, které mohou ovlivnit cenu akcií. Denní zprávy přinášející dobré nebo špatné zprávy o současných nebo budoucích vyhlídkách společnosti jsou pravděpodobně jedním z nejvlivnějších faktorů, které určují denní kolísání ceny. Ziskovost společnosti, růst tržeb a vyhlídky na budoucí expanzi jsou ukazatele, které mohou určovat dlouhodobé i krátkodobé změny ceny. Hluboké učení a další statistické modely mohou zohlednit pouze tolik a obvykle se hodí spíše pro krátkodobé a střednědobé předpovědi než pro dlouhodobé (např. roky).

Zajímá vás, jak dosáhnout rychlejších výsledků?
Zjistěte více o řešeních hlubokého učení Exxact

Použití modelů s dlouhou krátkodobou pamětí (LSTM)

Modely s dlouhou krátkodobou pamětí (LSTM)

Zdroj

LSTM jsou derivátem rekurentní neuronové sítě (RNN). RNN je vhodným modelem pro krátký časový horizont, třeba týden až měsíc. Pokud jde o delší období, je nepravděpodobné, že by RNN poskytovala spolehlivé předpovědi. Důvodem je problém mizejícího gradientu.

Běžná metoda časových řad, jako je AR a její deriváty nebo ANN (umělá neuronová síť), se může učit tak, že použije velkou váhu vůči ceně předchozího dne plus některé další vlastnosti. Pro finanční časové řady byste k předpovědi výnosů nebo volatility použili modely ARCH a jejich deriváty. Ve feed forwardové síti jsou tyto body považovány za vzájemně nezávislé. To znamená, že LSTM nepoužívá stejný přístup jako tradiční metody předpovídání časových řad.

LSTM používá při prognózování různé závislosti

LSTM bude brát data přes takzvané „buňky“, jak můžete vidět na výše uvedeném diagramu znázorněném v prostředním obdélníku. Právě prostřednictvím tohoto stavu buněk se LSTM může rozhodnout, zda si něco zapamatuje, nebo zapomene.

LSTM bude mít 3 různé závislosti podle informací, které přijímá:

    1. Předchozí stav buňky (tj. informace, které byly v paměti po předchozím časovém kroku)
    2. Předchozí skrytý stav (tj. ten je stejný jako výstup předchozí buňky)
    3. Vstup v aktuálním časovém kroku (tj. nová informace, která je v daném okamžiku přiváděna)

Do oblasti předpovídání cen finančních aktiv lze tyto závislosti vysvětlit následovně:

  1. Předchozí stav buňky – trend akcie v předchozím dni.
  2. Předchozí skrytý stav – cena akcie v předchozím dni.
  3. Vstup v aktuálním časovém kroku – další faktory, které mohou ovlivnit cenu. Obvykle to budou upozornění na zprávy, které se investorům zpřístupní v průběhu dne.

Stavy buněk LSTM podle toho, jak jsou uloženy

Zdroj

Ve výše uvedeném diagramu označuje vodorovná čára ct stav buňky, která je pamětí LSTM. Jak jsme ihned uvedli výše, vztahuje se k trendu akcií v předchozím dni (1). Tato informace bude proudit do buňky a bude zpracována s ostatními informacemi, které do ní proudí. Řádek, který je označen ct-1, je skrytý stav (2), který v našem případě predikce akcií bude obsahovat informace z předchozích časových kroků (tj. cenu akcií z předchozího dne). Vodorovná čára označená ht-1 je vstup v aktuálním čase, což je aktuální cena akcie (3). Pomocí informací z předchozí ceny akcie (skrytý stav), aktuální ceny v kombinaci s trendem předchozího dne (stav buňky) vytvoří LSTM výstup.

AMD EPYC SERVER SALE

Kód Pythonu pro vytvoření modelu predikce LSTM

Následující kód Pythonu nás provede kroky k vytvoření modelu LSTM predikujícího cenu akcie.

  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

Program schopný předpovídat ceny akcií na burze pomocí LSTM

Nyní máte k dispozici kód jazyka Python, který vám umožní začít předpovídat ceny akcií na burze pomocí LSTM. Vyzkoušejte jej a dejte nám vědět, jak vám funguje. Jsme teprve na začátku odhalování schopností LSTM v různých aplikacích a těšíme se na budoucnost.

Přečtěte si více o tom, jak se rekurentní neuronové sítě LSTM používají v dalších aplikacích.

Máte nějaké dotazy k pracovním stanicím nebo serverům pro hluboké učení?
Kontakt Exxact ještě dnes

.

Leave a Reply

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.