Algorytmiczny handel na giełdzie/u brokerów

Algorytmiczny handel na giełdzie/u brokerów
MI
  • Rejestracja:około 9 lat
  • Ostatnio:około godziny
  • Postów:105
0

Cześć, pytanie do was, ekspertów od klikania w komputery i robienia rzeczy trudnych.

Czy ktoś z was interesował się/interesuje realizowaniem zautomatyzowanych strategii inwestycyjnych na giełdzie? Mam wrażenie, że osoby techniczne siedzące w IT mają pełne zaplecze aby robić to poprawnie, ale bardzo rzadko o tym słyszę aby ktokolwiek się tym zajmował. Zastanawiam się, czy po prostu jest małe zainteresowanie tym, bądź brak chęci chwalenia się dużymi sukcesami czy może po prostu, jest to zbyt czasochłonne?

Wiem, że są fundusze inwestycyjne które zatrudniają ekspertów od każdego obszaru (kodowanie, research, utrzymanie itd itp) lecz ich ambicje raczej nastawiają się na exploitowanie każdego sygnału który umożliwia statystyczny arbitraż, a my pewnie byśmy raczej zadowolili się jakkolwiek działającymi strategiami, byleby przynosiły jakiś zysk.

Sam z ogromnym zapałem zajmuję się (póki co amatorsko) tematyką algorytmicznego handlu na instrumentach pochodnych które najlepiej rozumiem, też w sektorze który jako tako ogarniam i nie ukrywam, jest to po prostu ciekawe i satysfakcjonujące. A co więcej, fajniejsze niż klepanie w javie cruda i kafki w projekcie na codzień.
Nie udaje mi się na tym jeszcze zarabiać, ale wierzę, że to się zmieni a jeśli chodzi o czasochłonności, potrafi to zjeść ogromną ilość czasu - od integracji z zewnętrznymi api po modelowanie instrumentów bazowych czy testowanie jakichś strategii.

Może są tu ludzie zainteresowani tą tematyką i mają jakieś doświadczenia z tym? Bądź ewentualnie, będą w stanie od razu zmieszać z błotem moje aspiracje do tworzenia takiego softu, konstruktywnie uzasadniają, że wielkich pieniędzy na tym się nie ugra?

ps. HFT mnie interesuje, ale nie mam bezpośredniego dostępu do api giełdowych. Również, wydzierżawianie dostępu do takich api jest cholernie drogie i bez pewności, że się da zarobić, też nie ma sensu się w to bawić.

RequiredNickname
Moi współpracownicy mają problem żeby poprawnie zdekomponować metodę albo wydedukować w którym miejscu warto zastosować loggera i coś zalogować a Ty pytasz o realizowanie zautomatyzowanych strategii inwestycyjnych xD
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:2 minuty
  • Postów:4883
1

Czyli co robisz, modelujesz/zastępujesz analizę techniczną, z czego korzystasz, język, biblioteki?


MI
  • Rejestracja:około 9 lat
  • Ostatnio:około godziny
  • Postów:105
0
lion137 napisał(a):

Czyli co robisz, modelujesz/zastępujesz analizę techniczną, z czego korzystasz, język, biblioteki?

To idąc po kolei, napisałem integracje z kilkoma api domów maklerskich oraz giełdami kryptowalut. Póki co ta część głównie nasłuchuje na porty i strumieniowo zapisuje poszczególne dane,
zależnie od instrumentu bazowego, ceny i wolumen danego instrumentu który jest notowany na danej platformie. Wszystko leci do InfluxDb.

Tutaj, pojawia się druga część która jest zaimplementowana w pythonie, podłączona do Influxa. W tej części implementuje przede wszystkim modele oparte o analizę stochastyczną/procesy stochastyczne do modelowania cen instrumentów bazowych, aby na nich opierać strategie na kontraktach CFD.
Głównie opieram modele o procesy stochastyczne typu point diffusion processes lub stochastic volatility models ale też badam cross-correlation (koleracje krzyżową) między szeregami czasowymi. No i wiadomo, z tego modeluje potencjalne zwroty na kontraktach CFD. Ogólnie metod jest ogrom, ale ja staram się póki co podchodzić do tematu "u podstaw". Czyli póki co bez MLa, bądź jakichś bardzo skomplikowanych modeli, ale jak jakaś praca ciekawa wpadnie na arxiv to raczej staram się z tych prostszych opracowań, coś stosować.
I interesują mnie póki co intraday strategie po pierwsze aby nie trzymać otwartych pozycji w ciągu dnia, a po drugie, tutaj wydaje się, że da się najwięcej ugrać(jeśli w ogóle się uda :) ) na czystym modelowaniu matematycznym.

Jeśli chodzi o biblioteki, to klepie to w dużej mierze ręcznie, głównie opierając się o numpy, polars oraz numbe. Do backtestów używam pythonowy backtrader.

Ogólnie, póki co jestem dalej niż bliżej aby to zarabiało. Co więcej, jakby backtesty by pokazały, że byłaby szansa na zysk, to pewnie przepisywałbym to na C++, natomiast mojej maszynce bliżej do generatora liczb losowych, niż do faktycznej działającej strategii.

Edit. precyzując, analizą sochastycznę modeluję wartości szeregu i zmienność, a następnie wyznaczam zwroty i wyceniam zbudowany portfel korzystając z podejścia monte carlo.

edytowany 4x, ostatnio: MateInf
DU
  • Rejestracja:12 miesięcy
  • Ostatnio:około 13 godzin
  • Postów:42
0

Pracowałem przy algotradingu. Kodowanie bota to pikuś, tym bardziej, że są gotowe boty np. do krypto. Cały bajer polega na pisaniu strategii, bo okodowanie api giełdy czy brokera to pikuś.

elwis
  • Rejestracja:ponad 18 lat
  • Ostatnio:4 dni
1

Ostatecznie chyba wolę stosować pasywną strategię i zobaczyć na tę chwilę jak będzie. Co do HFT to chyba mógłbyś użyć XTB, oni mają wystawione API RESTowe, choć do składania zleceń nigdy nie używałem więc nie wiem czy jest to dostatecznie wydajne, itd. Poza tym Exante podobno wystawia dobre API, ale tam to jest wyższy próg wejścia 10kEUR.


MI
do xtb akurat jestem wpięty :P wystawiają api restowe do składania zleceń i sockety do streamowania danych
woolfik
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 3 godziny
  • Postów:1595
0

Nie znam się na tym kompletnie natomiast kolega ze studiów robił z tego dyplom. Z tego co pamiętam to jakoś mu to działało ale nigdy nie doszło to do pozycji gdzie włączył i poszedł spać, a bot sam na niego zarabiał. Ilość zmiennych wpływających na zachowanie rynku była tak ogromna, że musiał praktycznie codziennie reagować i "dostrajać" się do aktualnych uwarunkowań. Nawet problem był gdy szedł spać bo po kilku godzinach snu okazywało się, że nie działa to dobrze. Po około roku/półtora po studiach poszedł normalnie na etat porzucając ten temat także trzymam mocno za Ciebie kciuki.

P5
  • Rejestracja:ponad 6 lat
  • Ostatnio:około godziny
  • Postów:950
0
MateInf napisał(a):

ps. HFT mnie interesuje, ale nie mam bezpośredniego dostępu do api giełdowych. Również, wydzierżawianie dostępu do takich api jest cholernie drogie i bez pewności, że się da zarobić, też nie ma sensu się w to bawić.

Na HFT cię nie stać. By się bawić w "HFT" to musisz być kolokowany w DC giełdy (np. NY11) i nikt się w api nie bawi bo tam się ścigasz na mikrosekundy/nanosekundy już nawet nie wspominając że Java czy C++ są dużo wolniejsze niż strategie naklepane w verilogu i latające na FPGA. Dane z giełdy dostajesz po multicaście w SBE typu ITCH gdzie L1 switch (na takim switchu masz już FPGA więc nawet na niego możesz wrzucać coś co gra na giełdzie) rozrzuca te dane po serwerach z kartami FPGA na których siedzi jakiś xilinx z strategią czy innymi serwisami które "wspomagają granie" (coś do risk managementu np.) i trade z powrotem leci po tcp do giełdy. Do tego jeszcze potrzebujesz dokładnego czasu po PTP gdzie master clock jest dyscyplinowany np. GPSem plus HFT ma sporo regulacji by nie wywalili rynku (znowu). Także HFT jest poza zasięgiem jak już to algo trading tylko że takich osób jak Ty jest mnóstwo i gdyby granie na giełdzie było takie proste by zrobić miliony to byś znalazł tutorial na jutubie od majfrendów :) Niemniej jednak powodzenia!


Sieciowiec, który przez pomyłkę założył konto na forum dla programistów ¯\_(ツ)_/¯
edytowany 2x, ostatnio: pre55
GO
  • Rejestracja:11 miesięcy
  • Ostatnio:4 miesiące
  • Postów:358
0

Monte carlo dobrze się spisuje przy szacowaniu kształtu prawdopodobieństwa, dobrze jak są jakieś pewne prawdopodobieństwa, czyli idzie coś wyliczyć, przy kompletnym randomie nie ma w sumie czego liczyć.

W sumie na giełdzie jest tak, że wystarczy jakiś impuls społeczności i nagle akcje wzrastają, nawet media próboują manipulować, np. takie ceny paliwa jak mówili, że zabraknie to sprawili, że ludzie wykupili na zapas znacznie więcej przez co wartość wzrosła.
Takich dziwnych fluktuacji spowodowanych błędami poznawczymi u ludzi trudniej to wyliczyć z samego wykresu bo trzeba analizować wszystko.

Sam nie wiem jak dobrze takie coś zrobić, na pewno potrzebowałbyś jakiejś oceny czy dana firma się rozwija, czy nic nowego nie osiągnęła w dłuższym okresie, czy jakiś surowiec powoli zanika z globu, wtedy teoretycznie można spekulować spadki, czy wzrosty, ale też może być tak że nagonka w mediach, kupujcie kryptowaluty i wszyscy inwestują i są wzrosty, jednak ludzie są podatni na manipulacje, ale jak to wziąć pod uwagę w obliczeniach.
Są jeszcze urojone prawdopodobieństwo, nie jest zbyt łatwo zaadaptować to do istniejących problemów, może kiedyś da się to jakoś zgrabnie zastosować poza mechaniką kwantową.

loza_prowizoryczna
Gadasz zupełnie jak jakiś biały dinozaur z brodą. Kto by cię zrozumiał?
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)