Cryptocurrency Market-Adapted Advanced Quantitative Investment System

Początkujący
Awatar użytkownika
Posty: 254
Rejestracja: 30 listopada 2017
Reputacja: 235
Reputacja postu: 
32
Napiwki za post: 0 BTC

Cryptocurrency Market-Adapted Advanced Quantitative Investment System

Postautor: Yogi77 » sobota, 11 maja 2024, 20:48

Jeden z użytkowników forum poprosił mnie w wiadomości prywatnej, abym opisał dokładniej, jak wygląda mój system handlowy. Jest sobota, a więc znalazłem chwilkę...

Także trzymam mojego robota giełdowego w szafie:

Obrazek

To po prostu jednostka serwerowa Della pod kontrolą Rocky Linux (system binarnie kompatybilny z Red Hat Linux Enterprise).

Powyżej widać także modem od dostawcy światłowodu i UPSa, za którego pośrednictwem zasilany jest serwer i modem w celu zabezpieczenia przed chwilowymi zanikami prądu. Do serwera loguję się przy pomocy SSH z innego komputera w sieci lokalnej. Mam zmienne IP, ale skonfigurowałem dynamicznego DNSa, dzięki czemu mogę się łączyć ze swoim serwerem także spoza sieci lokalnej.

Od strony softwarowej system dość rozbudowany, składa się z wielu usług, które komunikują się ze sobą poprzez REST API.

Najważniejsze to:

1. Moduł "global" - odczytuje dane z orderbooków i historii transakcji największych giełd takich jak Binance, Coinbase, Bitstamp, Kraken i Bitfinex, w zależności od ustawień odpowiednio je uśrednia, a następnie udostępnia je innym usługom wewnętrznym.

2. Moduł "spider" - na bieżąco odczytuje dane z modułu "global" i zapisuje je w plikach csv, takie dane mogą się w przyszłości przydać np. w celu trenowania modeli uczenia maszynowego.

3. Moduł "signals" - odczytuje dane z modułu "global", agreguje je do świec z różnym interwałem i na bazie tych danych udostępnia innym wewnętrznym usługom popularne wskaźniki analizy technicznej. W tej chwili zaimplementowane są MACD, RSI, SSL, EMA, ATR.

4. Poszczególne moduły odpowiedzialne bezpośrednio za handel na różnych giełdach. Jest ich kilka. Dużo ludzi pisze, że strategia jest nieporównywalnie trudniejsza do zaprojektowania niż sama obsługa komunikacji z giełdą. Jednak zaimplementowanie komunikacji w sposób maksymalnie wydajny (równoległe strumieniowanie danych z orderbooka i danych z konta klienta, zsynchronizowanie tego z zachowaniem spójności, obsługa błędów czy obsługa orderbooka tak, aby oferty bota były zawsze na wierzchu) to w praktyce rzecz 100x bardziej skomplikowana niż może się to wydawać na pierwszy rzut oka. Jest tutaj bardzo dużo niuansów, które wychodzą w trakcie.

Każda usługa obsługuje wiele wątków, wszystko co się da, jest wykonywane współbieżnie.

Poniżej widoczny fragment logu z jednego wątku modułu "hefajstos" działającego na rynku Futures, nad którym pracuję ostatnio:

Obrazek

Aktualnie mam uruchomione dwa rynki BTCUSD (kontrakt wieczysty odwrotny i prosty). W odwrotnym zyski rozliczane są w BTC.

Poniżej dane z kilku ostatnich dni dla kontraktu odwrotnego BTCUSD:

Kurs BTCUSD:

Obrazek

Pozycja:

Obrazek

Stan konta:

Obrazek

Te miejsca, w których linia stanu konta jest idealnie prosta to okresy braku pozycji.

Teoretycznie mój system obsługuje jeszcze ETH, LTC, BCH i XRP, ale na razie nie korzystam z tego.

I tak to wygląda, kiedyś jak robiłem Market Making i każda tysięczna sekundy była na wagę złota to przez pewien czas hostowałem w zewnętrznym centrum danych. Teraz mam w domu.

Początkujący
Posty: 19
Rejestracja: 28 kwietnia 2024
Reputacja: 18
Reputacja postu: 
0
Napiwki za post: 0 BTC

Cryptocurrency Market-Adapted Advanced Quantitative Investment System

Postautor: maciek_btc » sobota, 11 maja 2024, 21:04

Super sprawa. Dałbym plusa... ale nie mogę :lol: :lol:
Yogi77 pisze: sobota, 11 maja 2024, 20:48Dużo ludzi pisze, że strategia jest nieporównywalnie trudniejsza do zaprojektowania niż sama obsługa komunikacji z giełdą.
Chciałoby ci się po krótce opisać strategie? I jaki wynik procentowy wychodzi ci w skali miesiąca?
Obawiam się że trzeba co raz dopasowywać parametryzacje ze względu na to że rynek się zmienia. Z moich obserwacji wynika że co 2-3 miesiące ustawienia trzeba zmienić.

Początkujący
Awatar użytkownika
Posty: 254
Rejestracja: 30 listopada 2017
Reputacja: 235
Reputacja postu: 
0
Napiwki za post: 0 BTC

Cryptocurrency Market-Adapted Advanced Quantitative Investment System

Postautor: Yogi77 » sobota, 11 maja 2024, 21:53

@maciek_btc Strategia bazuje na MACD, jeśli przyśpieszenie jest dodatnie (histogram zmienia się na dodatni) to otwiera longa, w odwrotnej sytuacji short

Parametryzację dostrajam przez backtesting. Czyli np. czułość - jak mocno MACD musi dawać sygnał żeby zająć pozycję, jak mocno musi spaść żeby zamnknąć czy wielkość lewaru. Mam do tego specjalne skrypty

Co do rentowności to trudno powiedzieć. Jeszcze za krótko testuję. Symulacje dają nadzieję na podwajanie kapitału w ciągu miesiąca

(na pewno dla bardzo dużych kwot nie będzie to prawdą z uwagi na ograniczenie głębokości rynku)

Weteran
Awatar użytkownika
Posty: 1134
Rejestracja: 12 sierpnia 2017
Reputacja: 3365
Reputacja postu: 
0
Napiwki za post: 0 BTC

Cryptocurrency Market-Adapted Advanced Quantitative Investment System

Postautor: fusywszklanejkuli » sobota, 11 maja 2024, 22:35

Yogi77 pisze: sobota, 11 maja 2024, 21:53 Parametryzację dostrajam przez backtesting.
Yogi77 pisze: sobota, 11 maja 2024, 21:53 Symulacje dają nadzieję na podwajanie kapitału w ciągu miesiąca
Za dobrze się zapowiada. Nie testowałeś czasem na przeszłości z użyciem parametrów zoptymalizowanych dla tej właśnie przeszłości? Robisz poprawnie walk forward optimization? Jeśli nie korzystasz z tego podejścia, sprawdzałeś stabilność parametrów w czasie?

Początkujący
Awatar użytkownika
Posty: 254
Rejestracja: 30 listopada 2017
Reputacja: 235
Reputacja postu: 
0
Napiwki za post: 0 BTC

Cryptocurrency Market-Adapted Advanced Quantitative Investment System

Postautor: Yogi77 » sobota, 11 maja 2024, 22:56

@fusywszklanejkuli Właśnie tak, parametry dopasowałem do wszystkich dostępnych danych, więc model może być nieco przetrenowany. Powinienem zastosować kroswalidację, ale przez niedobór danych i brak czasu jeszcze tego nie zrobiłem

Będę nad tym pracował w najbliższym czasie

Początkujący
Awatar użytkownika
Posty: 254
Rejestracja: 30 listopada 2017
Reputacja: 235
Reputacja postu: 
0
Napiwki za post: 0 BTC

Cryptocurrency Market-Adapted Advanced Quantitative Investment System

Postautor: Yogi77 » niedziela, 12 maja 2024, 10:02

@fusywszklanejkuli

Mam w głowię taką metodę podobną do kroswalidacji, która pozwoli wyeliminować przetrenowania:

1. Jak będę miał dane powiedzmy z miesiąca, dzielę je na segmenty po 1 tydzień

2. Następnie dla każdego segmentu 1 tygodniowego dopasowuję najbardziej optymalną kombinację parametrów

3. Dla każdej kombinacji znajduję tzw. "minimum" - każdą kombinację testuję dla pozostałych segmentów, najgorszy wynik to "minimum"

4. Wybieram kombinację, która uzyskała najwyższe "minimum"

Początkujący
Awatar użytkownika
Posty: 254
Rejestracja: 30 listopada 2017
Reputacja: 235
Reputacja postu: 
0
Napiwki za post: 0 BTC

Cryptocurrency Market-Adapted Advanced Quantitative Investment System

Postautor: Yogi77 » niedziela, 12 maja 2024, 22:29

@fusywszklanejkuli Jeszcze jedno, to +100% na miesiąc było przy założeniu lewaru x6.5 albo x5 - już nie pamiętam. Jednak z lewarem jest taki problem, że nie radzi sobie zbytnio jak pojawi się trochę fałszywych sygnałów pod rząd. Jak się zdarzy obsunięcie kapitału -90% to potrzeba +1000% żeby to odrobić - ewidentnie nie jest to symetryczne. Dlatego przy lewarze nawet teoretycznie rentowne strategie mogą zawodzić

Być może trzeba zejść z tego lewaru na mniejszy albo wprowadzic stałą stawkę

Przy lewarze x1 moja strategia dawałaby nie więcej niż +20% miesięcznie

Początkujący
Posty: 4
Rejestracja: 11 listopada 2013
Reputacja: 0
Reputacja postu: 
0
Napiwki za post: 0 BTC

Cryptocurrency Market-Adapted Advanced Quantitative Investment System

Postautor: bolek » niedziela, 12 maja 2024, 22:53

nawet jeśli system wyciągałby 10% miesięcznie to i tak jest to bardzo dobry wynik!
A w jakiej skali czasowej oceniasz MACD? I na jakiej podstawie zdecydowałeś że akurat taka skala czasowa jest najoptymalniejsza?

Początkujący
Awatar użytkownika
Posty: 254
Rejestracja: 30 listopada 2017
Reputacja: 235
Reputacja postu: 
0
Napiwki za post: 0 BTC

Cryptocurrency Market-Adapted Advanced Quantitative Investment System

Postautor: Yogi77 » niedziela, 12 maja 2024, 23:14

4h, wczesniej probowalem tez z 1h ale mialem wrazenie, ze dostaje za duzo falszywych sygnalow

Jeszcze bede badal efektywnosc 4h vs 1h

Na pewno z punktu widzenia wyzszych interwalow, ciezej rynkiem manipulowac - potrzebny wiekszy wolumen zeby wplynac na sygnal

Mniejsze interwaly niz 1h od razu odrzucilem - juz z samego faktu ze prowizja, spread itp bylby zbyt duzy w stosunku do sredniego zysku z transakcji

Początkujący
Posty: 4
Rejestracja: 11 listopada 2013
Reputacja: 0
Reputacja postu: 
0
Napiwki za post: 0 BTC

Cryptocurrency Market-Adapted Advanced Quantitative Investment System

Postautor: bolek » niedziela, 12 maja 2024, 23:33

Ok, czyli w czwartek ręcznie przywołałeś bota do porządku po lekkich stratach jakie zaczął generować :)
Jak tak teraz pobieżnie przejrzałem ostatnie 2 miesiące to MACD na 4h całkiem dobrze się sprawdzał. Zakładałem że porównywałeś sobie historycznie maka na różnych skalach czasowych z użyciem jakiejś prostej statystyki, żeby ocenić która skala daje najmniej fałszywie pozytywnych sygnałów. Tak czy siak, jak działa to trzeba korzystać, także trzymam kciuki za jak najlepsze trejdy!

Początkujący
Posty: 89
Rejestracja: 20 września 2017
Reputacja: 39
Reputacja postu: 
0
Napiwki za post: 0 BTC

Cryptocurrency Market-Adapted Advanced Quantitative Investment System

Postautor: riDERQs » poniedziałek, 13 maja 2024, 08:17

Trzymam kciuki za projekt. Wygląda spoko od strony podejścia i tego co da się zauważyć na screenach programistycznie. Jakbyś chciał się kiedyś podzielić to oczywiście w kolejce stoję cierpliwie. Pozdrowienia

Początkujący
Awatar użytkownika
Posty: 254
Rejestracja: 30 listopada 2017
Reputacja: 235
Reputacja postu: 
1
Napiwki za post: 0 BTC

Cryptocurrency Market-Adapted Advanced Quantitative Investment System

Postautor: Yogi77 » wtorek, 14 maja 2024, 15:25

Taka ciekawa sprawa:

jak obliczyć maksymalne obsunięcie, które nie spowoduje likwidacji przy danym poziomie lewaru?

albo odwrotnie, znając obsunięcie jakie dopuszczamy, jak dobrać maksymalny lewar?

przyjmijmy że:

y - wartość pozycji
x - wartość zabezpieczenia
p - procentowe obsunięcie (np. p = 0.1 to 10% spadku)

wtedy lewar to:

L = y / x

oraz:

wartość pozycji po obsunięciu: y - py
wartość zabezpieczenia po obsunięciu: x - py

załóżmy że minimalny margin to 0.02, wtedy:

x - py / (y - py) > 0.02

((1 / L) - p) / (1 - p) > 0.02

po przekształceniach:

p < ((1 / L) - 0.02) / 0.98

L < 1 / (0.98p + 0.02)

wiadomo, będzie jeszcze dochodzić spread, prowizje, funding, nie jest to idealnie dokładne ale daje pewne oszacowanie

załóżmy że gram bardzo bezpiecznie tzn. dopuszczam obsunięcie 33%, ze wzoru otrzymamy, że nie powinienem brać wyższego lewaru niż około 2.91x

Początkujący
Awatar użytkownika
Posty: 254
Rejestracja: 30 listopada 2017
Reputacja: 235
Reputacja postu: 
1
Napiwki za post: 0 BTC

Cryptocurrency Market-Adapted Advanced Quantitative Investment System

Postautor: Yogi77 » wtorek, 21 maja 2024, 16:16

Jak cos, wrocilem do interwalu 1h jednoczesnie dopracowujac troche strategie

Przyjalem tez system stalej stawki, a wiec bot zawsze zajmuje pozycje z predefiniowana wielkoscia, a nie z wielkoscia zalezna od wybranego lewaru i aktualnego salda

System stalej stawki w praktyce oznacza, ze po wygranych bot zmniejsza lewar, a po przegranych zwieksza

Wszystko wyglada dobrze. Ostatni tydzien jest niemal 20 procent na plus

Mielismy ostatnio dosc wyrazne wzrosty, ale bot jest symetryczny wzgledem sytuacji rynkowej - zajmuje zarowno longi jak i shorty

Wróć do „Boty i strategie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 4 gości