2012-05-29 17 views
5

Pracuję nad projektem przewidywania ceny akcji za pomocą SSN. Szkoliłem system przy użyciu poprzednich 7 lat danych i działa dobrze, aby przewidzieć dane przez jeden dzień. Teraz chcę przewidzieć cenę akcji na następne siedem dni.Prognozy długoterminowe z wykorzystaniem sztucznej sieci neuronowej

Mój pomysł jest przewidywanie danych dnia 2 za pomocą danych z dnia 1, dnia 3 przy użyciu przewidywanych danych dnia 2 i dnia 1 i tak dalej. Ale to nie działa poprawnie.

Mam wyszkolony ANN, aby przewidzieć cenę zamknięcia za pomocą ceny otwarcia, maksymalnej i minimalnej ceny za jeden dzień.

Jaki jest pomysł przewidywania danych z następnych siedmiu dni?

+4

Myślę, że to wymaga kryształowej kuli –

Odpowiedz

3

Maruf, jeśli masz wiarygodnego predyktora ANN na 1 dzień przed, skontaktuj się ze mną, aby omówić dalej! LOL

Żarty na bok. Sieci neuronowe i inne nieliniowe predyktory są właśnie tym - predyktorami. Dane, z którymi masz do czynienia (dane o cenach akcji) są w dużej mierze losowe. Jeśli mi nie wierzysz, spróbuj wygenerować losowy spacer stosując następujący kod psuedo i wykreślenie go na ekranie:

let min = -0.5 
let max = +0.5 
let bias = 0.01 
let random = rand(min, max) 
y[i] = y[i-1] + random + bias 

Adjust bias nieznacznie (od -0.01 do 0.01) i skończyć z serii który wygląda jak cenowa cena akcji. Przyczyną takiego stanu rzeczy są ludzie, którzy podejmują decyzje nie lepiej niż rzut monetą. Czy wiesz, że przeciętny sprzedawca ma 55% czasu? To wszystko, czego potrzebuje ...

Teraz, jeśli dane są w dużej mierze losowe, bardzo trudno jest przewidzieć. Szukasz sygnału w dużej ilości hałasu. Każdego dnia przed próbą przewidywania staje się mniej dokładne.

Czy mogę zapytać - jakie dane wejściowe wprowadziłeś do SSN, aby uzyskać przewidywaną prognozę na 1 dzień? Jeśli na przykład korzystasz z dziennych cen akcji plus innych czynników pochodnych (takich jak stawka zmiany, wielkości, rozbieżności itp.), Aby uzyskać dokładną prognozę 1-dniową, możesz znaleźć dokładną prognozę na 1 tydzień przez: zastępując wszystkie powyższe tygodniowymi danymi dotyczącymi zapasów.

Edit:

Po drugie, co robisz, aby sprawdzić dokładność prognostyk? Aby wzmocnić odpowiedź mikery, zaproponowałbym strategię taką jak poniżej.

Przy oknie z danymi 1000 dni, weź 800 z nich i wytrenuj swoją ANN. Teraz przepowiedz jeden dzień w przyszłości. Porównaj przewidywany kierunek (w górę, w dół) z przewidywaną ceną zamknięcia (różnica w%), aby ocenić dokładność tego wyniku. Teraz przesuń okno 1 dzień w prawo. Przeszkol SSN i ​​przeprowadź 1-dniową prognozę, odnotowując wyniki.

Jeśli kontynuujesz to przez pozostałe 200 dni, jaka część wyników ma prawidłowy kierunek (w górę, w dół)? Jaka część wyników mieściła się w granicach 10% faktycznej, przewidywanej ceny zamknięcia? Jeśli twoja SSN składała zamówienia na zakończenie każdego dnia i zamykała je na koniec następnego dnia, ile pieniędzy by to zrobiła? Rozliczanie poślizgów i opłat transakcyjnych oczywiście ...

Daje to wyobrażenie o tym, jak dokładny i wartościowy jest system.

+0

Dziękuję za szybką odpowiedź (jestem z maruf w tym projekcie). używamy dnia poprzedniego 1. dnia 2. najniższej ceny 3. najwyższej ceny 4. ceny otwarcia i 5. okresu przejściowego. nie rozumiemy twojego pomysłu "przesuń okno od 1 dnia do prawej". Po szkoleniu przez 800 dni powinniśmy przewidzieć 801 dzień z danymi 800 dnia (5 rzędów). następnie trzeba porównać z oryginalnymi danymi. następnie? Co masz na myśli mówiąc "przesuń okno od 1 dnia do prawej"? Przepraszam za moją niewiedzę. – shantanu

+1

Co mam na myśli przez to: jeśli korzystałeś z tej SSN w systemie handlu realnego, miałbyś dostęp tylko do przeszłych danych. Każdej nocy po zamknięciu rynku ponownie szkoliłeś SSN i ​​prognozowałeś cenę zamknięcia na jutro. Następnie na rynku otworzysz handel, a na rynku zamknij handel. Następnej nocy powtórzysz przekwalifikowanie na przeszłe dane (w tym nowy dzień) i utworzysz prognozę na następny dzień, dokonasz transakcji następnego dnia itd. Twój test powinien próbować naśladować to zachowanie. Jeśli utworzyłeś test, który zrobił powyższe, a następnie zgłosiłeś% wygranych/przegranych transakcji, jak dobry jest to? –

2

Zrobiłeś bardzo dobrze, jeśli można przewidzieć, choć jeden dzień przed skutecznie - zwykłe kwestie:

  • Czy jesteś pewien, że nie są przeuczenia, np nauczysz się dokładnie replikować cechy swoich danych treningowych? Jeśli jeszcze go nie wypróbowałeś, zdecydowanie zaleciłbym przetestowanie SSN na 20% twoich danych po szkoleniu go z innymi 80%, aby mieć pewność.
  • Czy uczysz się również przewidywać bezwzględne wartości cen lub delty? jeśli to pierwsze, to prawdopodobnie po prostu dobrze się dopasowujesz do faktu, że najlepszą prognozą ceny zamknięcia na następny dzień jest dzisiejsza cena zamknięcia (ponieważ dane mają tak dużą korelację szeregową). Często zdarza się, że dostajemy 99% + R-kwadratów, popełniając ten błąd ...

Zakładając, że nie wpadłeś w jedną z powyższych pułapek, to sposobem na wykonanie wielu dni przewidywania jest po prostu osobne przewidywane zmienne dla każdego z przyszłych dni niezależnie. Nie ma zbytniej dodatkowej wartości w podawaniu prognoz na następny dzień w 2. dniu itd. (Ponieważ nie masz żadnych nowych informacji w danych wejściowych), ale możesz spróbować, jeśli chcesz (nie możesz zaszkodzić , może przyspieszyć naukę dzięki udostępnieniu przydatnego detektora itp.).

Również można się spodziewać, że niepewność/wariacja na temat dalszych prognoz będzie większa (ponieważ istnieje więcej dni niepewnych ruchów cen akcji od teraz do czasu). Warto spróbować przewidzieć wariancję twoich statystyk, a także średnią z tego powodu.

+1

Dałem +1 temu, ponieważ "testowałem twoją ANN na 20% twoich danych po treningu z innymi 80%, aby być tego pewnym". Chciałbym również wspomnieć, że warto wykonać technikę przesuwnego okna, np. z 800 dniami danych treningowych, przewidzieć 1 dzień do przodu, porównać prognozę z rzeczywistą, a następnie przesunąć okno treningu/przewidywania o 1 dzień w prawo, spłukać i powtórzyć. Z tego można zmierzyć dokładność predyktora w wyjątkowo długim oknie. Zaktualizuję mój komentarz w rzeczywistości :) –

Powiązane problemy