Wprowadzenie do Deep Learning Trading w funduszach hedgingowych

Opublikowany: 2022-03-11

W ciągu ostatnich kilku lat głębokie sieci neuronowe stały się niezwykle popularne. Ta rozwijająca się dziedzina informatyki została stworzona wokół koncepcji biologicznych sieci neuronowych, a głębokie uczenie stało się dziś czymś modnym.

Naukowcy i inżynierowie zajmujący się głębokim uczeniem próbują matematycznie opisać różne wzorce biologicznego układu nerwowego. Systemy uczenia głębokiego zostały zastosowane do różnych problemów: widzenie komputerowe, rozpoznawanie mowy, przetwarzanie języka naturalnego, tłumaczenie maszynowe i inne. To ciekawe i ekscytujące, że w przypadku niektórych zadań uczenie głębokie przewyższa ludzkich ekspertów. Dzisiaj przyjrzymy się głębokiemu uczeniu w sektorze finansowym.

Jednym z bardziej atrakcyjnych zastosowań głębokiego uczenia się są fundusze hedgingowe. Fundusze hedgingowe to fundusze inwestycyjne, organizacje finansowe, które pozyskują środki od inwestorów i nimi zarządzają. Zwykle pracują z danymi szeregów czasowych i próbują dokonać pewnych prognoz. Istnieje specjalny rodzaj architektury uczenia głębokiego, który nadaje się do analizy szeregów czasowych: rekurencyjne sieci neuronowe (RNN), a dokładniej specjalny rodzaj rekurencyjnej sieci neuronowej: sieci z pamięcią długo-krótkoterminową (LSTM).

LSTM są w stanie wychwycić najważniejsze cechy z danych szeregów czasowych i modelować ich zależności. Model przewidywania cen akcji jest przedstawiony jako przykładowe studium przypadku, w jaki sposób fundusze hedgingowe mogą korzystać z takich systemów. Framework PyTorch, napisany w Pythonie, służy do trenowania modelu, projektowania eksperymentów i rysowania wyników.

Zaczniemy od podstaw głębokiego uczenia się, zanim przejdziemy do przykładów z życia wziętych:

  • Przedstaw głębokie uczenie jako abstrakcyjne pojęcie.
  • Przedstaw RNN — a dokładniej LSTM — oraz sposób ich wykorzystania do modelowania danych szeregów czasowych.
  • Zapoznaj czytelników z danymi finansowymi odpowiednimi do głębokiego uczenia się.
  • Zilustruj, jak jeden z rzeczywistych funduszy hedgingowych wykorzystuje głębokie uczenie się do przewidywania cen akcji.
  • Na koniec przedstaw praktyczne zalecenia dla nowych i istniejących funduszy hedgingowych, dotyczące tego, jak używać głębokiego uczenia się w celu zwiększenia ich wyników.

Przedstawiamy argumenty za Deep Learning Trading

Jednym z najtrudniejszych i najbardziej ekscytujących zadań w branży finansowej jest przewidywanie, czy ceny akcji w przyszłości pójdą w górę czy w dół. Dziś zdajemy sobie sprawę, że algorytmy głębokiego uczenia bardzo dobrze radzą sobie z rozwiązywaniem złożonych zadań, dlatego warto spróbować poeksperymentować z systemami głębokiego uczenia, aby sprawdzić, czy z powodzeniem rozwiążą problem przewidywania przyszłych cen.

Z założenia sztuczna sieć neuronowa istnieje już od dłuższego czasu, ale sprzęt nie był wystarczająco dobry, aby umożliwić szybkie eksperymenty z głębokim uczeniem. Nvidia pomogła zrewolucjonizować sieci głębokiego uczenia się dziesięć lat temu, ponieważ zaczęła oferować bardzo szybkie procesory graficzne (GPU) do obliczeń ogólnego przeznaczenia w produktach z serii Tesla. Zamiast cieniowania wielokątów w grach i profesjonalnych aplikacjach projektowych, wysoce zrównoleglone procesory graficzne mogą również obliczać inne dane, aw wielu przypadkach znacznie przewyższają procesory.

Jest bardzo niewiele artykułów naukowych na temat wykorzystania głębokiego uczenia się w finansach, ale zapotrzebowanie na ekspertów głębokiego uczenia z firm fintech jest duże, ponieważ w oczywisty sposób dostrzegają jego potencjał. Ten artykuł pomoże wyjaśnić, dlaczego głębokie uczenie się w finansach staje się coraz bardziej popularne, pokazując, w jaki sposób dane finansowe są wykorzystywane w konstruowaniu systemów głębokiego uczenia się. Zaprezentowany zostanie również specjalny rodzaj rekurencyjnej sieci neuronowej — sieć LSTM. Opiszemy, jak można rozwiązać zadanie związane z finansami za pomocą rekurencyjnych sieci neuronowych.

Artykuł ten zawiera również ilustracyjne studium przypadku, w jaki sposób fundusze hedgingowe mogą wykorzystywać takie systemy, przedstawione w drodze eksperymentów. Zastanowimy się również, w jaki sposób można ulepszyć systemy głębokiego uczenia się i jak fundusze hedgingowe mogą zatrudniać talenty do budowania tych systemów, tj. jakiego rodzaju doświadczenie musi mieć talent do głębokiego uczenia się.

Co wyróżnia fundusze hedgingowe

Zanim przejdziemy do technicznego aspektu problemu, musimy wyjaśnić, co sprawia, że ​​fundusze hedgingowe są wyjątkowe. Czym więc jest fundusz hedgingowy?

Fundusz hedgingowy to fundusz inwestycyjny — organizacja finansowa, która pozyskuje środki od inwestorów i lokuje je w inwestycjach krótko- i długoterminowych lub w różne produkty finansowe. Zwykle ma formę spółki komandytowej lub spółki z ograniczoną odpowiedzialnością. Celem funduszu hedgingowego jest maksymalizacja zysków. Zwrot to zysk lub strata wartości netto funduszy hedgingowych w określonym okresie czasu. Ogólnie przyjmuje się, że podejmowanie większego ryzyka zwiększa prawdopodobieństwo wyższych zwrotów i strat.

Aby osiągnąć dobre zwroty, fundusze hedgingowe polegają na różnego rodzaju strategiach inwestycyjnych, próbując zarabiać pieniądze, wykorzystując nieefektywność rynku. Ze względu na różnego rodzaju strategie inwestycyjne, które nie są dozwolone w zwykłych funduszach inwestycyjnych, fundusze hedgingowe nie są rejestrowane jako fundusze, czyli zazwyczaj nie są nadzorowane przez państwo, jak inne fundusze. Nie muszą publikować swoich strategii inwestycyjnych i wyników biznesowych, co może być dość ryzykowne. Niektóre fundusze hedgingowe generują więcej pieniędzy niż średnia rynkowa, ale niektóre z nich tracą pieniądze. Część z nich przynosi trwałe rezultaty, a część funduszy hedgingowych jest zmienna.

Inwestując w fundusze hedgingowe, inwestorzy zwiększają wartość netto funduszu. Jednak nie każdy może inwestować w fundusze hedgingowe. Fundusze hedgingowe przeznaczone są dla niewielkiej liczby zamożnych inwestorów. Zazwyczaj ci, którzy chcą uczestniczyć w funduszach hedgingowych, muszą być akredytowani. Oznacza to, że muszą mieć specjalny status w zakresie przepisów dotyczących regulacji finansowych. Istnieje rozróżnienie w poszczególnych krajach dotyczące tego, kto może mieć ten specjalny status. Zwykle wartość netto inwestora musi być bardzo wysoka — w funduszach hedgingowych mogą działać nie tylko osoby fizyczne, ale także banki i duże korporacje. Ta akredytacja ma na celu umożliwienie udziału tylko osobom o znacznej wiedzy inwestycyjnej, chroniąc w ten sposób małych i niedoświadczonych inwestorów przed ryzykiem.

Ten artykuł dotyczy ram regulacyjnych USA, ponieważ Stany Zjednoczone mają najbardziej rozwinięty rynek finansowy na świecie. Tak więc w Stanach Zjednoczonych termin „akredytowany inwestor” jest zdefiniowany w zasadzie 501 rozporządzenia D amerykańskiej Komisji Papierów Wartościowych i Giełd (SEC).

Zgodnie z tym rozporządzeniem akredytowanymi inwestorami mogą być:

  • Banki
  • Prywatne firmy rozwijające biznes
  • Organizacje
  • Dyrektorzy, członkowie kadry kierowniczej i komplementariusze emitentów oferowanych lub sprzedawanych papierów wartościowych
  • Osoby fizyczne, których indywidualna wartość netto lub łączna wartość netto z małżonkiem tej osoby przekracza 1 000 000 USD
  • Osoby fizyczne, które miały indywidualny dochód przekraczający 200 000 USD w każdym z dwóch ostatnich lat lub łączny dochód z małżonkiem tej osoby przekraczający 300 000 USD w każdym z tych lat i mają uzasadnione oczekiwania, że ​​osiągną ten sam poziom dochodów w bieżącym roku
  • Fundusze powiernicze o łącznych aktywach przekraczających 5 000 000 USD
  • Podmioty, w których wszyscy właściciele akcji są akredytowanymi inwestorami

Zarządzający funduszem hedgingowym zarządzają funduszem hedgingowym. Zarządzający funduszem hedgingowym musi znaleźć sposób na stworzenie przewagi konkurencyjnej, aby odnieść sukces, tj. stworzyć przewagę nad rywalami i zdolność do generowania większej wartości. Może to być bardzo atrakcyjny wybór kariery, ponieważ może być bardzo opłacalny, jeśli dana osoba wyróżnia się w zarządzaniu funduszem.

Z drugiej strony, jeśli wiele decyzji zarządzających funduszami hedgingowymi okaże się złych, nie zostaną im zapłacone i zyskają negatywną reputację. Najlepsi menedżerowie funduszy hedgingowych tworzą jeden z najlepiej opłacanych zawodów we wszystkich branżach. Zarządzający funduszami hedgingowymi otrzymują procent zwrotu, jaki uzyskują dla inwestorów, oprócz opłaty za zarządzanie. Ten sposób rekompensaty sprawia, że ​​zarządzający funduszami hedgingowymi inwestują bardziej agresywnie w celu uzyskania większych zwrotów, ale z drugiej strony prowadzi to również do wzrostu ryzyka inwestora.

Krótka historia funduszy hedgingowych

Pierwszy fundusz hedgingowy pojawił się w 1949 roku, założony przez byłego pisarza i socjologa Alfreda Winslowa Jonesa. Było to podczas pisania artykułu o aktualnych trendach inwestycyjnych dla Fortune, w 1948 roku.

Próbował zarządzać pieniędzmi i odniósł duży sukces. Pozyskał pieniądze za pomocą swojej innowacji inwestycyjnej, która jest obecnie powszechnie znana jako długie/krótkie akcje. Strategia jest nadal bardzo popularna wśród funduszy hedgingowych. Akcje można kupić (kupić: długie) lub sprzedać (sprzedawać: krótkie).

Kiedy cena akcji jest niska i oczekuje się, że cena akcji wzrośnie, logiczne jest kupowanie akcji (długa) i sprzedawanie (krótka), gdy tylko osiągnie swój wysoki szczyt ceny, i że jest dokładnie punktem innowacji, którą wprowadził Alfred Winslow Jones – zajmowania długich pozycji w akcjach, które mają zyskać na wartości, i krótkich pozycji w akcjach, które mają spadać.

Dane finansowe i zbiory danych

Dane finansowe należą do danych szeregów czasowych. Szereg czasowy to seria punktów danych indeksowanych w czasie. Zazwyczaj szereg czasowy to sekwencja wykonywana w kolejnych, równomiernie rozmieszczonych punktach w czasie: sekwencja danych w czasie dyskretnym. Przykładami szeregów czasowych są wysokości pływów oceanicznych, liczba plam słonecznych i dzienna wartość zamknięcia Dow Jones Industrial Average.

Dane historyczne w tym kontekście to dane szeregów czasowych z przeszłości. Jest to jedna z najważniejszych i najcenniejszych części do spekulacji na temat przyszłych cen. Istnieje kilka publicznie dostępnych zestawów danych online, ale zazwyczaj te dane nie zawierają wielu funkcji — są to zazwyczaj dane z przedziału 1-dniowego, dane z przedziału 1-godzinnego lub dane z przedziału 1-minutowego.

Zestawy danych o bogatszych funkcjach i mniejszych odstępach czasu zwykle nie są publicznie dostępne i ich uzyskanie może być bardzo kosztowne. Mniejsze interwały oznaczają więcej danych szeregów czasowych w ustalonym okresie — w jednym roku jest 365 (lub 366) dni, więc dostępnych jest maksymalnie 365 (lub 366) punktów danych. Każdy dzień ma 24 godziny, więc w ciągu roku dostępnych jest 8760 (lub 8784) godzinowych punktów danych, a każdy dzień ma 86 400 minut, więc w ciągu jednego roku dostępnych jest 525 600 (lub 527 040) minutowych punktów danych.

Przy większej ilości danych dostępnych jest więcej informacji, a przy większej ilości informacji możliwe jest wyciągnięcie lepszych wniosków na temat tego, co wydarzy się w następnym okresie — zakładając oczywiście, że dane zawierają wystarczająco dobrą cechę, aby dobrze uogólniać. Dane dotyczące cen akcji z lat 2007-2008, w szczytowym momencie światowego kryzysu finansowego, są stronnicze i prawdopodobnie nie mają obecnie znaczenia dla prognoz cenowych. Przy mniejszym przedziale czasowym łatwiej jest przewidzieć, co będzie dalej, ze względu na dużą liczbę punktów danych w ustalonym przedziale. Łatwiej jest przewidzieć, co stanie się w ciągu następnej nanosekundy, jeśli będziemy mieć wszystkie punkty danych dla każdej nanosekundy w ustalonym przedziale n -lat, niż co stanie się na giełdzie w przyszłym roku, jeśli będziemy mieć wszystkie n punktów danych dla każdego roku w ustalony n -letni interwał.

Nie oznacza to jednak, że zakładając, że szybka seria prognoz krótkoterminowych jest słuszna, prognoza długoterminowa również powinna być słuszna. Każda prognoza wprowadza błąd, a dzięki połączeniu wielu prognoz prognoza długoterminowa będzie zawierała w końcu znaczną ilość błędu i będzie bezużyteczna. Poniżej znajduje się przykład danych o interwale 1-dniowym dla akcji Google zeskrobanych online z Yahoo Finance.

Szereg czasowy danych finansowych o akcjach Google dla handlu algorytmicznego

W zestawie danych jest tylko kilka kolumn: Data, Otwarcie, Najwyższa, Najniższa i Zamknięta — odpowiednio cena, po której papier wartościowy po raz pierwszy handluje na otwarciu giełdy, najwyższa cena, jaką papier osiągnął w danym dniu sesyjnym , najniższą cenę osiągniętą w danym dniu sesyjnym oraz ostateczną cenę, po której dany papier wartościowy jest przedmiotem obrotu.

Zazwyczaj w takich zestawach danych są jeszcze dwie kolumny — Skorygowane zamknięcie i Wolumen, ale nie są one tutaj istotne. Skorygowane zamknięcie to cena zamknięcia po korektach o odpowiednie podziały i wypłaty dywidendy, natomiast Wolumen to liczba akcji będących w obrocie na rynku w danym okresie czasu.

Widać, że brakuje niektórych dat. Są to dni, kiedy giełda nie działa, zwykle w weekendy i święta. Na potrzeby demonstracji naszego algorytmu głębokiego uczenia brakujące dni uzupełniamy o dostępną wcześniej cenę. Na przykład ceny zamknięcia 2010-01-16, 2010-01-17, 2010-01-18 będą wynosić 288.126007, ponieważ tak było w dniu 2010-01-15. Dla naszego algorytmu ważne jest, aby dane były bez przerw, więc ich nie pomylimy. Algorytm głębokiego uczenia mógłby się stąd uczyć, kiedy są weekendy i święta – np. dowie się, że po pięciu dniach roboczych muszą być dwa dni z cenami ryczałtowymi z ostatniego dnia roboczego.

wizualna reprezentacja ruchów cen akcji Google w czasie

To jest wykres zmian cen akcji Google od 2010-01-04. Zauważ, że do wykreślenia wykresu wykorzystywane są tylko dni handlowe.

Co to jest głębokie uczenie?

Głębokie uczenie jest częścią uczenia maszynowego i opiera się na uczących się reprezentacjach danych. Uczenie maszynowe bada algorytmy, których funkcjonalność nie jest zaprogramowana, ale uczy się na podstawie danych. Jest to w istocie podejście do sztucznej inteligencji.

Głębokie uczenie zostało zastosowane w różnych dziedzinach: widzenie komputerowe, rozpoznawanie mowy, przetwarzanie języka naturalnego, tłumaczenie maszynowe — aw niektórych z tych zadań osiągnęło wydajność wyższą niż u ludzi.

Głęboka sieć neuronowa jest w centrum głębokiego uczenia. Najprostszym i podstawowym przykładem głębokiej sieci neuronowej jest sieć neuronowa ze sprzężeniem do przodu. Poniżej znajduje się obraz prostej sieci neuronowej ze sprzężeniem do przodu. Składa się z warstw wejściowych i wyjściowych oraz warstw ukrytych.

schemat prostej sieci neuronowej ze sprzężeniem do przodu, z warstwami wejściowymi i wyjściowymi oraz uczącymi reprezentowanymi jako węzły

Warstwy ukryte to wszystkie warstwy między warstwą wejściową a wyjściową. Mówimy, że sieć neuronowa jest głęboka, jeśli ma więcej niż jedną ukrytą warstwę. Każda warstwa składa się z różnej liczby neuronów. Warstwy w tej podstawowej sieci neuronowej ze sprzężeniem do przodu nazywane są warstwami liniowymi — neurony w warstwie liniowej mnożą tylko wartości 1-D (lub 2-D, jeśli dane są przesyłane przez sieć w partiach) z odpowiednią wagą, sumą produktów razem i podać wynik końcowy jako wyjście 1-D lub 2-D.

Funkcja aktywacji jest zwykle stosowana w sieciach ze sprzężeniem do przodu w celu wprowadzenia nieliniowości, dzięki czemu sieć może modelować bardziej złożone, nieliniowe problemy. W sieciach ze sprzężeniem do przodu dane przepływają z warstwy wejściowej do warstwy wyjściowej bez zapętlania. Połączenia między neuronami są ważone. Wagi należy dostosować tak, aby sieć neuronowa zwracała poprawne wyjścia dla danych wejść. Sieć ze sprzężeniem do przodu mapuje dane z przestrzeni wejściowej do przestrzeni wyjściowej. Ukryte warstwy wyodrębniają ważne i bardziej abstrakcyjne cechy z cech poprzedniej warstwy.

Ogólny potok uczenia głębokiego jest taki sam jak potok uczenia maszynowego i składa się z następujących kroków:

  1. Zbieranie danych. Dane są podzielone na trzy części — dane treningowe, dane walidacyjne i dane testowe.
  2. Uczenie DNN przy użyciu danych uczących przez wiele „epok” (każda składa się z wielu iteracji) i walidacja po każdej epoce przy użyciu danych walidacyjnych.
  3. Testowanie modelu (jedna instancja sieci neuronowej o stałych parametrach) po sekwencji treningów i walidacji.

Trening sieci neuronowej w rzeczywistości oznacza dostosowanie wag między parami neuronów poprzez minimalizację funkcji straty przy użyciu algorytmu wstecznej propagacji błędów w połączeniu ze stochastycznym gradientem spadku. Z wyjątkiem wag, które są określane w procesie uczenia, algorytmy uczenia głębokiego zwykle wymagają ustawienia hiperparametrów — parametrów, które nie są wyuczone, ale ustalone przed uczeniem. Hiperparametry to liczba warstw, liczba neuronów w warstwach, typy warstw, typy neuronów i inicjalizacja wagi.

Istnieją ograniczenia sprzętowe w ustawianiu hiperparametrów; obecnie fizycznie nie jest możliwe ustawienie biliona neuronów na jednym GPU. Drugim problemem wyczerpującego wyszukiwania hiperparametrów jest eksplozja kombinatoryczna; nie jest możliwe przeszukanie wszystkich możliwych kombinacji hiperparametrów, ponieważ zajęłoby to nieskończony czas. Z tego powodu hiperparametry są ustawiane losowo lub przy użyciu niektórych heurystyk i dobrze znanych przykładów opisanych w artykułach naukowych — jednym z hiperparametrów używanych do analizy danych finansowych przedstawionych w dalszej części tego wpisu na blogu jest wykorzystanie powtarzających się neuronów jako naukowców i inżynierów udowodniły, że dobrze współpracują z danymi szeregów czasowych. Zwykle najlepszym sposobem sprawdzenia, czy hiperparametry dla danego problemu są dobre, czy nie, są eksperymenty.

Celem treningu jest dopasowanie sieci neuronowych do danych treningowych. Zarówno walidacja modelu, która jest wykonywana po każdym etapie uczenia, jak i testowanie modelu, które jest wykonywane po całej procedurze uczenia, ma na celu sprawdzenie, czy model może dobrze uogólniać. Generalizacja oznacza, że ​​sieć neuronowa może dokonywać dobrych prognoz na nowych, niewidocznych danych.

Istnieją dwa ważne pojęcia związane z doborem modelu: overfitting i underfitting . Jeśli sieć neuronowa jest zbyt złożona pod względem danych, na których jest szkolona — jeśli ma zbyt wiele parametrów (zbyt wiele warstw i/lub zbyt wiele neuronów w warstwach) — sieć neuronowa może przepełnić dane. Może dobrze dostosować się do danych uczących, ponieważ ma więcej niż wystarczającą pojemność, aby dopasować wszystkie dane, ale wtedy wydajność zestawów walidacyjnych i testowych jest słaba.

Jeśli sieć neuronowa jest zbyt prosta w odniesieniu do danych, na których jest szkolona, ​​sieć neuronowa może nie pasować do danych. W takim przypadku sieć neuronowa ma słabą wydajność w zestawach uczących, walidacyjnych i testowych, ponieważ jej pojemność nie jest wystarczająco dobra, aby dopasować dane uczące i uogólnić. Na poniższym obrazku terminy te są wyjaśnione graficznie. Niebieska linia reprezentuje to, co jest modelowane przez sieć neuronową. Pierwszy obraz przedstawia sytuację, w której jest niewiele parametrów sieci neuronowej, niewystarczających do dopasowania danych uczących i uogólnienia. Drugi obraz pokazuje sytuację, gdy istnieje optymalna liczba parametrów i sieć neuronowa może dobrze generalizować na niewidocznych danych, a trzeci obraz pokazuje sytuację, gdy liczba parametrów sieci neuronowej jest zbyt duża i sieć neuronowa może doskonale pasuje do wszystkich danych ze zbioru uczącego, ale ma słabą wydajność w zbiorach walidacyjnych i testowych.

graficzna reprezentacja scenariuszy niedopasowania, optymalnego i nadmiernego dopasowania

Rekurencyjne sieci neuronowe

Bardziej skomplikowaną wersją sieci neuronowej jest sieć neuronowa rekurencyjna. W rekurencyjnych sieciach neuronowych dane mogą płynąć w dowolnym kierunku, w przeciwieństwie do sieci neuronowych ze sprzężeniem do przodu. Potrafią dobrze nauczyć się zależności szeregów czasowych. Na poniższym obrazku pokazano architekturę ogólnej rekurencyjnej sieci neuronowej.

graficzna reprezentacja ogólnej architektury rnn

Na poniższym obrazku pokazano jeden nawracający neuron. Pobiera X_{t} , punkt w czasie t , jako dane wejściowe i zwraca h_{t} , stan ukryty w czasie t , jako dane wyjściowe. Ukryte wyjście jest propagowane z powrotem do neuronu. Neuron rekurencyjny może zostać rozwinięty, jak pokazano na tym samym obrazie z prawej strony. X_{t_0} to punkt w okresie t_{0} , X_{t_1} w okresie t_{1} i X_{t} w okresie t . Wyjścia uzyskane za pomocą wejść X_{t_0} , X_{t_1} , …, X_{t_n} w przedziałach czasowych t_{0} , t_{1} , …, t_{n} są tzw. wyjściami ukrytymi: h_{t_0} , h_{t_1} , …, h_{t_n} , odpowiednio.

wizualna ilustracja struktury we/wy neuronu rekurencyjnego

Jedną z najlepszych rekurencyjnych architektur sieci neuronowych jest architektura LSTM. LSTM pokazano poniżej:

wizualizacja architektury lstm

LSTM mają taką samą ogólną strukturę jak ogólne rekurencyjne sieci neuronowe, ale neuron rekurencyjny jest nieco inny i ma bardziej złożoną strukturę. Na powyższym obrazku widać, że wiele obliczeń jest wykonywanych w jednej komórce LSTM. Komórki LSTM można zaobserwować jako czarną skrzynkę w kontekście tego postu, ale dla bardziej ciekawskich czytelników ten wspaniały wpis na blogu wyjaśnia obliczenia wewnątrz LSTM i wiele więcej.

Nazwijmy dane wejściowe sieci neuronowej „wektorem cech”. Jest to wektor n -wymiarowy, którego elementami są cechy: f_{0} , f_{1} , f_{2} …, f_{n} .

 \vv{X} = [f_{0}, f_{1}, f_{2}, …, f_{n}]

Teraz wyjaśnijmy, jak rekurencyjne sieci neuronowe można zastosować do zadania związanego z finansami. Dane wejściowe dla sieci neuronowej rekurencyjnej to [X_{t_0}, X_{t_1}, X_{t_2}, …, X_{t_n}] . Powiedzmy, że n = 5 . Bierzemy pięć cen akcji Google Close z pięciu kolejnych dni (patrz tabela z danymi Open/High/Low/Close powyżej) między, powiedzmy, 2010-01-04 a 2010-01-08, tj. [[311.35], [309.98], [302.16], [295.13], [299.06]] . Wektor cech w tym przykładzie jest jednowymiarowy. Sekwencja czasowa składa się z pięciu takich wektorów cech. Wyjścia rekurencyjnej sieci neuronowej są funkcjami ukrytymi [h_{t_0}, h_{t_1}, h_{t_2}, …, h_{t_n}] . Te cechy są na bardziej abstrakcyjnym poziomie niż cechy wejściowe [X_{t_0}, X_{t_1}, X_{t_2}, …, X_{t_n}] LSTM powinien poznać ważne części cech wejściowych i wyświetlić je ukryta przestrzeń funkcji. Te ukryte, abstrakcyjne cechy mogą być propagowane w następnej komórce LSTM, co daje następny zestaw ukrytych, bardziej abstrakcyjnych funkcji, które następnie mogą być propagowane do następnej komórki LSTM i tak dalej. Po sekwencji połączonych LSTM, ostatnim składnikiem sieci neuronowej jest warstwa liniowa (część budowlana prostej sieci sprzężenia do przodu wyjaśniona w poprzedniej sekcji), która odwzorowuje ukryte cechy od ostatniego LSTM do punktu w przestrzeni jednowymiarowej, oraz ten punkt jest końcowym wynikiem sieci — przewidywaną ceną zamknięcia w okresie X_{t+1} . Prawda podstawowa w tym przykładzie dla X_{t+1} to 298.61 .

Uwaga: może być również tylko jeden LSTM — ustawianie liczby LSTM jest hiperparametrem, który na ogół można znaleźć empirycznie, chociaż możemy użyć niektórych heurystyk. Jeśli dane nie są tak złożone, stosujemy mniej złożoną architekturę, aby model nie przesadzał z danymi. Jeśli dane są złożone, używamy złożonego modelu, aby model nie był niedostateczny dla danych.

W fazie uczenia przewidywane ceny zamknięcia są porównywane z cenami prawdy naziemnej, a różnica między przewidywanymi cenami zamknięcia i cenami prawdy naziemnej jest minimalizowana za pomocą algorytmu propagacji wstecznej i algorytmu optymalizacji zniżania gradientu (lub jednej z jego form – konkretnie, w tym przypadku „Adama” w wersji algorytmu optymalizacji gradientu zniżania) poprzez zmianę wag sieci neuronowych.

Po szkoleniu i testowaniu, w przyszłości, użytkownik musi tylko podać dane wejściowe do sieci neuronowej, a ta zwróci przewidywaną cenę (i, miejmy nadzieję, cenę bardzo zbliżoną do ceny naziemnej z przyszłości).

Jeszcze jedną rzeczą, o której należy wspomnieć, jest to, że zwykle partie danych są przesyłane przez sieć, zarówno w fazie uczenia się w fazach testowania, aby sieć mogła obliczyć wiele danych wyjściowych w jednym przebiegu.

Poniżej znajduje się obraz architektury używanej na tym blogu do eksperymentów. Składa się z dwóch ułożonych w stos LSTM i jednej warstwy liniowej.

wizualna reprezentacja architektury opisanej powyżej

Eksperymenty z algorytmami funduszy hedgingowych

Spróbuj użyć tak prostych strategii handlu algorytmicznego, jak poniżej: Jeśli algorytm przewiduje, że cena wzrośnie następnego dnia, kup n (w tym przykładzie n = 1 ) akcji firmy (długa), w przeciwnym razie sprzedaj wszystkie akcje firma (krótka). Początkowa wartość portfela (łączna wartość gotówki i akcji) ma wynieść 100 000 USD. Każda długa lub krótka akcja spowoduje zakup odpowiednio n akcji firmy (w tym przykładzie Google) lub sprzedaż wszystkich akcji firmy. Na początku system posiada 0 akcji danej firmy.

Zawsze pamiętaj, że jest to bardzo prosty i prosty przykład, który nie jest przeznaczony do użytku w prawdziwym świecie, ponieważ potrzeba znacznie więcej pracy badawczo-rozwojowej, aby dostosować model, aby działał dobrze w praktyce. Zaniedbuje się tutaj pewne rzeczy, które należy wziąć pod uwagę w realnym scenariuszu; na przykład opłaty transakcyjne nie są uwzględnione w modelu. Zakłada się, że system może handlować dokładnie o tej samej porze każdego dnia i zakłada się, że każdy dzień, nawet w weekend lub święto, jest dniem handlowym.

Do testowania stosowana jest metoda weryfikacji historycznej. Metoda backtestingu wykorzystuje dane historyczne do odtworzenia transakcji, które miałyby miejsce w przeszłości, przy użyciu reguł zdefiniowanych w opracowanej strategii. Zbiór danych jest podzielony na dwie części — pierwsza część to zbiór uczący (przeszłość), a druga część to zbiór testowy (przyszłość). Model jest trenowany w zestawie uczącym, a po uczeniu symulujemy przyszłość w drugiej części zestawu danych, aby zobaczyć, jak uczony model zachowywałby się w przyszłości bez uczenia się na nim.

Miarą oceny strategii handlowej jest wskaźnik Sharpe'a (jego roczna wersja, przy założeniu, że wszystkie dni w roku są dniami handlowymi, a rok ma 365 dni: sqrt(365)*mean(returns)/std(returns)) , gdzie zwrot jest zdefiniowany jako p_{t}/p_{t-1} - 1 , a p_{t} to cena w okresie t . Wskaźnik Sharpe'a pokazuje stosunek zwrotów do dodatkowego ryzyka, które jest ponoszone, więc dobrze jest mieć większy wskaźnik Sharpe'a. Zwykle wskaźnik większy niż 1 jest akceptowalny przez inwestorów, 2 jest bardzo dobry, a 3 jest doskonały.

Tylko cena zamknięcia każdego dnia z historycznych cen Google ze zbioru danych Yahoo Finance jest używana jako funkcja. Więcej funkcji pomoże, ale testowanie, które inne funkcje z zestawu danych (Otwarte, Wysokie, Niskie) są ważne, wykracza poza zakres tego bloga. Pomocne mogą być również inne funkcje, które nie zostały uwzględnione w tabeli — na przykład nastawienie do wiadomości w określonej minucie lub ważne wydarzenia w określonym dniu. Jednak czasami bardzo trudno jest tworzyć reprezentacje danych, które są przydatne do wprowadzania danych sieci neuronowej i łączyć je z istniejącymi funkcjami. Na przykład łatwo jest rozszerzyć wektor cech i umieścić liczbę, która reprezentuje nastroje w wiadomościach lub nastroje w tweetach Trumpa ( -1 bardzo negatywne, 0 neutralne, +1 bardzo pozytywne itd.) dla każdego okresu, ale tak nie jest. tak łatwo jest umieścić w wektorze cech określone momenty wywołane zdarzeniami (piraci w Kanale Sueskim, bomba w rafinerii w Teksasie), ponieważ dla każdego konkretnego momentu będziemy musieli mieć dodatkowy element w wektorze cech, aby umieścić 1 , jeśli zdarzenie miało miejsce lub 0 w przeciwnym razie, co doprowadzi do nieskończonej liczby elementów we wszystkich możliwych momentach.

Dla tych trudniejszych danych moglibyśmy zdefiniować kilka kategorii i dla każdej chwili określić, do której kategorii należy. Moglibyśmy również dodać funkcje z akcji innych firm, aby system mógł poznać korelację między cenami akcji różnych firm. Istnieje również rodzaj sieci neuronowej specjalizującej się w wizyjnym obrazie komputerowym — splotowe sieci neuronowe — które byłoby interesujące w połączeniu z powtarzającymi się warstwami i obserwowaniu, jak funkcje wizualne korelują z cenami niektórych firm. Może moglibyśmy użyć jako funkcji obrazu z kamery z zatłoczonego dworca kolejowego i podłączyć go do sieci neuronowej i sprawdzić, czy to, co widzi sieć neuronowa, jest skorelowane z cenami akcji niektórych firm — nawet w tym może być jakaś ukryta wiedza banalny i absurdalny przykład.

Poniżej znajduje się wykres, który pokazuje, jak zmniejsza się średnia utrata treningu w czasie, co oznacza, że ​​sieć neuronowa ma wystarczającą pojemność, aby dopasować dane treningowe. Ważne jest, aby powiedzieć, że dane muszą zostać znormalizowane, aby algorytm głębokiego uczenia się mógł osiągnąć zbieżność.

Wykres handlu głębokiego uczenia pokazujący średnią stratę w czasie

Poniżej znajduje się wykres, który pokazuje, jak średnia strata testowa maleje w czasie, co oznacza, że ​​sieć neuronowa ma zdolność generalizowania na niewidocznych danych.

Wykres handlu głębokiego uczenia pokazujący średnią stratę testową w czasie

Algorytm jest zachłanny; jeśli przewidział, że następnego dnia cena wzrośnie, to algorytm natychmiast kupuje n=1 akcję spółki (jeśli w portfelu jest wystarczająca ilość gotówki), a w przeciwnym razie sprzedaje wszystkie akcje spółki (o ile posiada ). Okres inwestowania jest stały i trwa 300 dni. Po 300 dniach wszystkie akcje zostają sprzedane. Symulację na niewidocznych danych, po pewnym treningu, można zobaczyć poniżej. Pokazano, jak wartość portfela rośnie w czasie przez długie/krótkie (lub nic nie robienie) działania każdego dnia.

Wykres finansów Deep Learning przedstawiający symulację na niewidocznych danych

Współczynnik Sharpe'a dla powyższej symulacji wynosi 1,48. Ostateczna wartość portfela po 300 dniach wynosi 100 263,79 USD. Gdybyśmy kupili akcje pierwszego dnia i sprzedali je po 300 dniach, portfel byłby wart 99 988,41 USD.

Poniżej pokazano sytuację, w której sieć neuronowa nie jest dobrze wytrenowana i traci pieniądze po ustalonym okresie 300 dni.

Wyniki handlu sieciami neuronowymi

Współczynnik Sharpe'a wynosi -0,94. Ostateczna wartość portfela po 300 dniach wynosi 99 868,36 USD.

Oto jeden interesujący przykład — powyższy algorytm jest zachłanny i po prostu przewiduje cenę na następny dzień, podejmując działania w oparciu o samą tę prognozę. Możliwe jest łączenie wielu prognoz i przewidywanie ceny w kilku kolejnych krokach w przyszłości. Na przykład przy pierwszym wejściu [X_ground_truth_{t0}, X_ground_truth_{t1}, X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}] i pierwszym wyjściu [X_predicted_{t5}] możemy sieć neuronowa z tą prognozą, aby następnym wejściem było [X_ground_truth_{t1}, X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}, X_predicted_{t5}] , a wyjściem jest [X_predicted_{t6}] . Następne dane wejściowe to [X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}, X_predicted_{t5}, X_predicted_{t6}] , co daje w wyniku [X_predicted_{t7}] i tak dalej. Problem polega na tym, że wprowadzamy błąd przewidywania, który zwiększa się z każdym nowym krokiem i ostatecznie kończy się bardzo złym wynikiem długoterminowym, jak pokazano na poniższym obrazku. Na początku przewidywania podążają za trendem spadkowym prawdy podstawowej, a następnie ulegają stagnacji i z czasem stają się coraz gorsze.

wykres przedstawiający skumulowaną prognozę kontrastującą z podstawową prawdą wartości akcji

Przeprowadzono bardzo prostą analizę głębokiego uczenia się cen akcji Google, ale może ona obejmować prawie każdy zestaw danych finansowych, pod warunkiem, że ilość danych jest wystarczająco duża i dobrej jakości. Dane muszą być rozróżniające oraz dobrze opisywać i przedstawiać problem.

Zawijanie

Gdyby zadziałał i uogólnił się dobrze w szeroko zakrojonych testach, system ten mógłby umożliwić zarządzającym funduszami hedgingowymi spekulowanie na temat przyszłych cen akcji spółki przy użyciu głębokiego uczenia się i opierania się na strategiach handlu algorytmicznego.

Zarządzający funduszami hedgingowymi mogą zapewnić systemowi kwotę pieniędzy do automatycznego handlu każdego dnia. Jednak bardzo źle byłoby pozwolić algorytmom handlu automatycznego na handel bez żadnego nadzoru. Zarządzający funduszem hedgingowym powinien mieć pewne umiejętności głębokiego uczenia się lub zatrudnić kogoś z umiejętnościami niezbędnymi do nadzorowania systemu i określania, kiedy system stracił zdolność do generalizowania i dobrego handlu.

If the system lost the ability to generalize, then it would be necessary to retrain it from the beginning and test it again (maybe by introducing more discriminative features or new knowledge—using new data from the past that didn't exist when the model was first trained).

Sometimes, the data is simply not good enough for the deep learning system to be trained and generalize well and, in that case, an experienced deep learning engineer should be able to detect and rectify such a situation. To build a deep learning trading system, you need hedge funds data scientists, machine learning/deep learning experts (both scientists and engineers), R&D engineers familiar with machine learning/deep learning, etc. No matter which part of an application of machine learning they are familiar with, whether it's computer vision or speech recognition, seasoned professionals will be able to put their experience to good use in the financial sector. At its root, deep learning has the same basics regardless of application or industry, and it should be easy for someone experienced to switch from theme to theme.

The system we presented is very basic and, to be applied in the real world, more R&D should be done in order to increase the returns. Possible improvements of the system could be in developing better trading strategies. Collecting more data for training, which is usually very expensive, will help. A smaller time interval between the points is better. Improvements can also surface in using more features (eg, news sentiments or important happenings corresponding to each point in the dataset, despite being hard to code for a neural network) and extensive grid search for hyperparameters and RNN architecture discovery.

Also, more computing power (powerful GPUs are a must) is needed to make a lot of extensive experiments in parallel and to process a large amount of data, provided that a large amount of data is collected.

References:

  • https://www.datacamp.com/community/tutorials/finance-python-trading
  • http://colah.github.io/posts/2015-08-Understanding-LSTMs/
  • https://en.wikipedia.org
  • https://www.investopedia.com/
  • https://finance.yahoo.com/
  • http://pytorch.org/

Author's Note: I would like to thank Ivan Capalija and Matej Paradzik for the constructive conversations and advice about deep learning in finance, which helped me in writing this blog.