Friday 15 December 2017

Clojure trading system


Biblioteka techniczna Architektura i wzorce danych dużej części, Część 4: Rozumienie wzorów atomowych i kompozytowych dla rozwiązań Big Data Wzorce opisane w tym artykule pomagają zdefiniować parametry rozwiązania Big Data. W artykule omówiono najczęściej występujące i powtarzające się problemy i rozwiązania dotyczące dużych ilości danych. Wzory atomowe opisują typowe podejścia do konsumowania, przetwarzania, uzyskiwania dostępu i przechowywania dużych danych. Wzory złożone, które składają się z wzorów atomowych, są klasyfikowane zgodnie z zakresem rozwiązania Big Data. Ponieważ każdy wzór złożony ma kilka wymiarów, istnieje wiele odmian każdego wzoru. Wzorce umożliwiają użytkownikom biznesowym i technicznym zastosowanie strukturalnego podejścia do ustalania zakresu i definiowania rozwiązania wysokiego poziomu dla problemu dużych zbiorów danych. Architektura i wzorce dużych zbiorów danych Część 3: Zrozumienie warstw architektonicznych dużego rozwiązania danych Logiczne warstwy rozwiązania dużych zbiorów danych pomagają definiować i kategoryzować różne komponenty wymagane w przypadku dużego rozwiązania danych, które musi spełniać funkcjonalne i niefunkcjonalne wymagania dany przypadek biznesowy. Ten zestaw warstw logicznych określa najważniejsze komponenty dużego rozwiązania danych od momentu, w którym dane są pozyskiwane z różnych źródeł danych, do analizy wymaganej do uzyskania wglądu biznesowego w procesy, urządzenia i ludzi, którzy potrzebują wglądu. Architektura i wzorce dużych zbiorów danych Część 1: Wprowadzenie do klasyfikacji i architektury dużych zbiorów Duże problemy z danymi są często skomplikowane do analizy i rozwiązywania. Sama objętość, prędkość i różnorodność danych utrudnia wydobycie informacji i wgląd w biznes. Pierwszym dobrym krokiem jest klasyfikacja problemu dużych zbiorów danych zgodnie z formatem danych, które muszą być przetwarzane, typem analizy, która ma być zastosowana, technikami przetwarzania w pracy i źródłami danych dla danych, których system docelowy jest wymagany. nabywać, ładować, przetwarzać, analizować i przechowywać. Architektura i wzorce dużych zbiorów danych Część 2: Jak sprawdzić, czy rozwiązanie do dużych zbiorów danych jest odpowiednie dla Twojej organizacji W tym artykule opisano podejście oparte na wymiarach w celu oceny rentowności rozwiązania do dużych zbiorów danych. Odpowiadając na pytania badające każdy wymiar, zastosuj to, co wiesz o swoim środowisku, aby określić, czy rozwiązanie do dużych zbiorów danych jest odpowiednie. Uważne przyjrzenie się każdemu wymiarowi daje wskazówki, czy jego czas na ewolucję dużych usług danych. Architektura i wzorce dużych zbiorów danych Część 5: Zastosuj wzorzec rozwiązania do problemu dużych zbiorów danych i wybierz produkty, które chcesz zaimplementować. Korzystając z podejścia opartego na scenariuszu, w tym artykule opisano wzorce rozwiązań, które mogą pomóc w zdefiniowaniu rozwiązania do obsługi dużych zbiorów danych. Każdy scenariusz zaczyna się od problemu biznesowego i opisuje, dlaczego wymagane jest rozwiązanie dużych zbiorów danych. Specyficzny wzorzec rozwiązania (składający się z wzorów atomowych i złożonych) jest stosowany do scenariusza biznesowego. To podejście krok po kroku pomaga zidentyfikować komponenty wymagane do rozwiązania. Na końcu tego artykułu zasugerowano kilka typowych produktów i narzędzi. Pierwsze wyświetlenia się liczą. Zachowaj ostrożność przy wypełnianiu wniosku. Nasza Komisja Rekrutacyjna spotyka się raz w tygodniu, aby ocenić kandydatów. Najlepsi kandydaci mogą się pochwalić kombinacją silnych pracowników akademickich, zainteresowań pozalekcyjnych i pasją do osiągania sukcesów w przyszłej karierze Miejsca w naszych programach są przydzielane na zasadzie "kto pierwszy, ten lepszy". Daj znać w ciągu dziesięciu dni roboczych, jeśli Ci się uda. Żyj, pracuj, studiuj wzmacniacze podróżując za granicę. Nie idź na kompromis. Stań się, ucz się, prowadz, rozwijaj się i rozwijaj w globalnym mieście. Chwytaj dziś i zabezpiecz jutro. Nie idź na kompromis. Doświadczenie na całe życie wzmacnia umiejętności, które pozwolą ci przetrwać całe życie. Poznaj wzmacniacz przyspiesz swoją karierę. Nie idź na kompromis. Odkryj swój potencjalny wzmacniacz na drodze do jego realizacji. Jesteśmy dumni z następujących stowarzyszeń: CI jest przyspieszonym dostawcą usług edukacyjnych. Zapewniamy wciągające empiryczne programy edukacyjne dla studentów, absolwentów i początkujących zmieniaczy kariery. Aktualizacja: zaktualizowałem kod, aby działał z nowym API Oandas. Pobierz tutaj Czas porozmawiać o brokerach, o tym, jak umieścić program w sposób programowy, a co najważniejsze, jak nie dać się oszukać. Broker to nic innego jak firma, która pozwala handlować (kupować lub sprzedawać) aktywa na rynku za pośrednictwem ich platformy. Dla algotradingu bardzo ważne jest: Broker oferuje API, abyśmy mogli składać zamówienia. Możesz mieć konto demonstracyjne, aby uruchomić środowisko pośredniczące i eksperymentować. Spread jest tak mały, jak to tylko możliwe. W naszym przypadku nie dbamy o spread ponieważ w najbliższym czasie nie będziemy robić transakcji o wysokiej częstotliwości. Mimo że brokerzy są regulowani, w ciągu ostatnich kilku lat zdarzały się incydenty, brokerzy złożyli wnioski z powodu pewnych warunków. Bądź ostrożny, jeśli nie ma opinii brokera w Internecie (lub większość z nich jest zła) Jeśli broker oferuje ci szaloną dźwignię (jak 1: 200) Jeśli pośrednik wydaje się być w bardzo dziwnym kraju Co może się zdarzyć jest to, że zaczynasz zarabiać pieniądze i nie jesteś w stanie ich wyciągnąć. Poważnie. Super stresująca sytuacja. Ale przejdźmy do szczęśliwszej notatki, która otwiera konto i umieszcza nasz pierwszy programowy handel. Whooha Używam Oandy jako pośrednika (nie jestem z nimi powiązany) i oferują całkiem przyzwoite API, biblioteki na Github i darmowe konto demo. Po zalogowaniu się na konto demonstracyjne przejdź do Zarządzaj dostępem API. Tam możesz znaleźć klucz API, który będziemy używać w naszym systemie do umieszczania transakcji. UPEWNIJ SIĘ, ŻE NIE DAJESZ UDZIAŁU W TYM KLUCZE. Kod tego jest, a wszystkie inne posty są na github i można go zainstalować i uruchomić dość łatwo. Aktualizacja: Oanda wypuściła nowy (kasujący) silnik wykonawczy o nazwie v20 i wypuścił nowy (ulepszony) interfejs API. Ten post został zaktualizowany w celu użycia nowego API, ale jeśli (z jakiegokolwiek powodu) chcesz sprawdzić stary kod, jest właśnie tutaj. Masz szczęście, że Nawiązywanie połączenia z Oandą wymaga pliku conf - który możesz wygenerować za pomocą skryptu, który zapewnia Oanda lub możesz go sam utworzyć. Dlaczego chcesz tego przede wszystkim, jeśli chodzi o dane uwierzytelniające (i moje pieniądze), wolę wiedzieć wszystko, co się dzieje. I nie lubię konieczności instalowania PyYAML tylko po to, aby przeczytać plik conf. Możesz użyć dowolnej z tych metod. Teraz przygotuj się na zdumienie. Kod jest prosty. Inicjujemy interfejs API: teraz możesz złożyć zamówienie (kup 5000 jednostek EURUSD) Sprawdź, czy aktualna cena jest równie łatwa Bardzo łatwa. Nie martw się, czym jest EURUSD, ile jednostek kupujemy ani jakie jest zlecenie rynkowe. Na razie umieściliśmy nasz pierwszy handel z naszego laptopa i zamierzamy zbudować własny interfejs API do zawierania transakcji. Ekscytujące rzeczy Możesz przeczytać dokumentację Oandas tutaj, aby zobaczyć, co jeszcze możesz zrobić z ich API i znaleźć bibliotekę Python tutaj. Przykłady przykładów są dostępne na stronie github Oandas tutaj. Zaraz potem połączę się z prawdziwym systemem algebrającym LIVE, działającym z mojego RaspberryPI w domu. Będziesz mógł zobaczyć (prawie) końcowy program uruchomiony i lepiej porozmawiać o Forex i strategiach. Jeśli masz więcej opinii, napisz do mnie na jonromero lub zapisz się do newslettera. Outro prawne. To jest samouczek inżynierski dotyczący budowania platformy algotradingowej do eksperymentowania i FUN. Wszelkie sugestie tutaj nie są poradami finansowymi. Jeśli stracisz (lub wszystkie) swoje pieniądze, ponieważ korzystasz z porad handlowych lub wdrożyłeś ten system w produkcji, nie możesz winić tego przypadkowego bloga (i mnie). Ciesz się na własne ryzyko. To jest raczej jak stworzyć własną strategię algotradingową - edycję Ethereum, a nie szybki blog na pieniądze. Jest to również prawdziwy przykład z prawdziwymi zwrotami (i prawdziwymi błędami w produkcji, które kosztują mnie pieniądze), gdzie można zobaczyć, jak rozpoznać możliwości, dlaczego algotrading jest niesamowity i dlaczego zarządzanie ryzykiem może uratować twój tyłek. Dostaję to pytanie prawie codziennie. Jak mogę znaleźć dobrą strategię Jak mogę zbudować własną Czy muszę mieć doktorat z matematyki Statystyka Newsflash: Jeśli mogę napisać strategię, każdy może napisać strategię. Zaufaj mi. Jedyną sztuczką jest poszukiwanie prostego. Aktualizacja: Ten post został przepisany co najmniej pięć razy (jak dramat The DAO eskalował) i jest to doskonały przykład strategii wykonującej pełne koło. Zacząłem angażować się w Ethereum od samego początku, ponieważ bardzo podobało mi się uruchamianie twoich algorytmów na zasadzie blockchain. Kiedy wyszedł TheDAO, przeczytałem wszystko na ten temat i uwielbiałem ten pomysł. Nie musisz rozumieć, czym jest Ethereum, theDAO, blockchain (obiecuję, że będę wędrował po innym poście). Te same pomysły dotyczą Forex, Stocks nawet kule Pokemon. Moje cztery kroki - kapitan oczywiste - system, który ja osobiście mam określony sposób, w jaki pracuję. Krok pierwszy . Zidentyfikuj pomysł. W tym przypadku mam pomysł, że istnieje kilka giełd oferujących tokeny Ethereum i DAO. Co by było, gdyby był arbitraż między tymi krokami. Ręcznie przetestuj ten pomysł. Jeśli coś działa, jestem na czymś. Jedyne, co musiałem zrobić, to wykonać wszystkie kroki ręcznie i zapisać wszelkie opłaty, warunki lub wszystko, co powinno być udokumentowane. Krok trzeci . Automatyzacja Ten algorytm nie jest algorytmem handlu o wysokiej częstotliwości. Istnieje znaczne ryzyko związane z czasem (które można wyeliminować, jak również później), ale to, co zrobiłem, można wykonać ręcznie. Problem polega na tym, że musiałbym spędzić cały czas przed komputerem, sprawdzając, czy jest jakiś warunek arbitrażowy, a jeśli tak, to musiałem działać szybko i bez bałaganu. Aha i musiałem rekrutować pięciu moich znajomych, żeby to skalować. Krótko mówiąc, spędziłem Dzień Prezydenta, pisząc prosty program, który powtórzy wszystkie moje ręczne kroki. Program zawiesił się i nie było więcej niż 100 linii kodu. Jest to etap zbierania danych, w którym widzę, czy istnieje korzyść, którą mogą mi dać algorytmy. Zaletami mogą być: Coś, co jest zautomatyzowane i uruchamiane 1000 razy na sekundę lub 1000 razy równolegle Coś, co myśli szybciej niż ja Coś, co nie ma uczuć, aby zepsuć mój system Jeśli jest co najmniej jeden lub więcej warunków spełnione, będę zacznij budować i przepisywać algo. Krok czwarty. W sumie żartuję i zobaczycie, dlaczego zarządzanie ryzykiem jest bardzo ważne w tym biznesie. Porozmawiajmy trochę o tym, czym był ten arbitraż. Chodzi o to: zastanawiam się, czy Kraken i Shapeshift mają różne ceny za te same aktywa. To klasyczny przypadek arbitrażowy (Kraken i Shapeshift to giełdy). Mógłbym wymienić DAO na ETH na Krakena, przenieść ETH na Shapeshift, wymienić ETH na DAO i odesłać go z powrotem do Krakena, a ze względu na niekonsekwencje cenowe skończyłbym z więcej DAO niż początkowo uruchomiłem Pieniądze bez ryzyka, najlepszy rodzaj pieniędzy . Możesz zarabiać tyle, ile ETHDAO od Krakena DAOETH z ShapeShift gt 1 (opłaty gazowe). Bardzo prosta formuła, słuszna Każdy cykl, był 2 do 10 zwrotem mojego kapitału. Po pewnym czasie zacząłem uderzać w granice Shapeshift i musiałem zrobić to równolegle. Pytanie brzmi: co byś zrobił, gdybyś miał algorytm, który tworzyłby 10 twoich pieniędzy co 20 minut. Najgłupsza rzecz, jaką możesz zrobić, to włożyć w to mnóstwo pieniędzy. Jeśli nie znasz greckiego słowa hybris. uważaj się za szczęściarza. Hybris jest wtedy, gdy myślisz, że jesteś niepokonany, lepszy od bogów. A to jest największe NIE, które możesz zrobić w handlu. Po kilku tygodniach atak został zhackowany. Skradziono 160 milionów dolarów (lub powinienem powiedzieć, zamrożony) i nikt nie wiedział, co się stanie. Dla mnie to się stało, 10 minut przed wejściem na pokład samolotu do Nowego Jorku. Hybris. Albo jak ludzie w USA mówią: Fuck. Byłem inteligentny (szczęśliwy) na tyle, aby mieć dobre nawyki zarządzania ryzykiem (dziękuję Forex). Nigdy, przenigdy, nie ryzykuję więcej niż 2 kapitał, nawet jeśli wydaje mi się, że jest to najlepszy rodzaj transakcji. Na szczęście pieniądze zostały przywrócone i mogłem wycofać moje DAO do Ethereum (ale tak, kupiłem WiFi w locie, aby nadążyć za tym, co się dzieje). Całe to doświadczenie przypomina, że ​​zawsze są rzeczy, których nie można przewidzieć. Rzeczy, nad którymi nie możesz kontrolować. Było to systematyczne ryzyko i nie było sposobu, bym mógł to zobaczyć. Naciśnięcie przycisków i algorytmów budowy nie wystarczy. Właściwe zarządzanie ryzykiem i wiedza o tym, kiedy musisz zażywać pigułkę chłodniczą, jest tym, co może utrzymać cię w grze. W następnym poście opublikuję cały algorytm i przejdę linia po linii. Planuję również omówić nieco więcej oDO i Ethereum. Jeśli nie chcesz przegapić żadnej z tych informacji i uzyskać więcej dodatkowych informacji, zapisz się do newslettera, gdzie mówię o fintech, algorytmach i rynkach. Przy okazji, jeśli chcesz stworzyć własną krypto walutę i dowiedzieć się więcej o Ethereum, mam świetny post z zamieszczonym tutaj kodem. Następny: nurkowanie w programie alterradingowym ETHDAO Jeśli masz więcej opinii, napisz do mnie na jonromero lub zapisz się do newslettera. Outro prawne. To jest samouczek inżynierski dotyczący budowania platformy algotradingowej do eksperymentowania i FUN. Wszelkie sugestie tutaj nie są poradami finansowymi. Jeśli stracisz (lub wszystkie) swoje pieniądze, ponieważ korzystasz z porad handlowych lub wdrożyłeś ten system w produkcji, nie możesz winić tego przypadkowego bloga (i mnie). Ciesz się na własne ryzyko. Uczenie maszynowe i handel to bardzo ciekawy temat. Jest to również temat, w którym można spędzić mnóstwo czasu pisząc kod i czytając dokumenty, a następnie dziecko może pokonać cię podczas gry w Mario Kart. W następnych postach będziemy rozmawiać na temat: Optymalizuj wpisy i wyjścia. To i tylko to może mieć ogromną różnicę w twoim rzucie na bank. Oblicz wielkość pozycji (na wypadek, gdybyś nie lubił kryterium Kelly) Znajdź możliwą korelację pomiędzy różnymi parami (handel parami). Uwielbiam korelację EURUSD i GBPJPY Obliczyć linie oporności wzmacniacza pomocniczego Ale czym jest uczenie maszynowe Algorytmy uczenia maszynowego to algorytmy, w których maszyna może identyfikować wzorce w danych. Yeap, to takie proste. Na przykład znajdź wszystkie zwierzęta na tym zdjęciu i narysuj wokół nich pole. Nazwij też to zwierzę. Szalony, wiem. Jeśli chodzi o handel, możesz sobie wyobrazić, że jest podobny: aby maszyna mogła się uczyć, musisz nauczyć ją, co jest dobre lub złe (uczenie nadzorowane), lub dać jej duży zbiór danych i pozwolić, by stała się dzika (bez nadzoru). Dla identyfikacji obiektów jest to proste, ale co z handlem, rozejrzałem się wokół, aby sprawdzić, czy istnieje program do nauki maszyn, który może zidentyfikować linie SR, ale bez skutku. Postanowiłem więc napisać pierwszy program do nauki maszyn w pythonie, który identyfikuje linie wsparcia i oporu w Pythonie. Kolejny pierwszy Horta Ale jak algorytm może zidentyfikować te obszary? Hoooooow Panie i panowie (i roboty), pozwólcie, że przedstawię was w MeanShift. nienadzorowany algorytm, który jest używany głównie do rozpoznawania obrazów i jest dość trywialny w konfiguracji i uruchomieniu (ale także bardzo wolny). Chodzi o to, że ten algorytm pozwoli mi podzielić moje dane (ticks forex) na obszary, a następnie mogę użyć krawędzi jako linii wsparcia i oporu. Świetny pomysł, ale działa. Analizujemy około 12 milionów punktów danych EURUSD w 2017 r. I kilka miesięcy 2018 r. Linie oporu są umieszczane automagicznie za pomocą algorytmu uczenia maszynowego. To, co jest naprawdę fajne (i upiorne), to to, że algorytm prawie to nabija. Gwoździe to trudne. Robi się naprawdę strasznie, kiedy będziemy używać algorytmu do identyfikowania mikrostruktur i rozpoczynania skalpowania. System jest w stanie przetwarzać wszelkiego rodzaju dane dotyczące czasu (zasoby, rynek walutowy, złoto, cokolwiek) i renderuje interaktywny wykres html (jak na powyższym wykresie) z danymi i wygenerowaną maszynowo SL. Kod jest tutaj, więc zwariuj. Teraz przejdźmy przez kod. Po zebraniu danych należy je przeczytać i wyczyścić. Przygotuj się na magię pand. Usuwamy puste wartości (weekendy), a następnie przeskalujemy dane do 24 godzinnych świeczników (ohcl). To sprawia, że ​​DUŻO łatwiej jest drukować. Pogrupowane dane to dane, które będziemy podawać w algorytmie ml. Następnie przygotowujemy dane, które będziemy wykorzystywać w algo. W następnym poście omówmy, jak jeszcze bardziej usprawnić tę pracę, omówmy bardzo interesujące wyniki (czy algorytm rzeczywiście może przewidzieć przyszłość) i zacznij używać go w naszym własnym handlu. Jeśli chcesz sprawdzić następny artykuł i przeczytać więcej na temat handlu i inwestowania za pomocą algorytmów, zapisz się do newslettera. Następny rozdział: Machine Learning Gone Wild - Korzystanie z kodu Jeśli masz więcej opinii, napisz do mnie na jonromero lub zapisz się do newslettera. Outro prawne. To jest samouczek inżynierski dotyczący budowania platformy algotradingowej do eksperymentowania i FUN. Wszelkie sugestie tutaj nie są poradami finansowymi. Jeśli stracisz (lub wszystkie) swoje pieniądze, ponieważ korzystasz z porad handlowych lub wdrożyłeś ten system w produkcji, nie możesz winić tego przypadkowego bloga (i mnie). Ciesz się na własne ryzyko. Aktualizacja: Post Machine Learning będzie epicki, ale potrzeba czasu, aby ten kod był prezentowalny. Niedźwiedź ze mną, fajne rzeczy nadchodzą (jak czytałeś w biuletynie). Zrzeczenie się: TO NIE JEST PORADY TAX. Co jest naprawdę zaskakujące, to, że większość wniosków w biuletynie są: Użyj narzędzi, aby pomóc Trading Machine Learning w celu optymalizacji transakcji Podatki Pierwsze dwa, mogę zrozumieć. Każdy chce być lepszym handlowcem. Rozumiem. Ale podatki PODATKI To jest twój szczęśliwy dzień. Podatki Forex są bardzo łatwe. Poważnie. Domyślnie (to się nazywa Sekcja 988), wszystkie twoje straty zrekompensują twoje podatki dochodowe bez limitu 3k rocznie. Jest to znacznie lepsze niż handel akcjami, gdzie straty kompensują zyski kapitałowe. Ale co dzieje się z zyskami DLACZEGO WIĘC OTO PIELĘGNACJA Większość inwestorów Forex traci pieniądze (nazywam to opłacaniem czesnego) w pierwszym roku (latach), więc lepiej będzie, jeśli będzie to proste, dopóki nie uzyskasz sprawdzonej i spójnej strategii. Powiedziawszy to, jeśli faktycznie osiągasz zysk, jesteś opodatkowany krótkoterminowym zyskiem kapitałowym (czasami nawet do 40). Rozwiązania, od których zaczniesz zarabiać, to: Zrezygnowanie z sekcji 988 i opodatkowanie w sekcji 1256, gdzie 60 zysków jest opodatkowanych jako zyski długoterminowe, a 40 jako krótkoterminowe (ale teraz straty nie mogą zrekompensować twojego dochodu). Jest to bardzo dobre, gdy zarabiasz pieniądze, bardzo źle, kiedy nie masz. Rozpocznij LLC Dla osób, które dopiero zaczęły eksperymentować z Forex i algotradingiem, zawsze sugeruję im pozostać w sekcji 988 (domyślnie) i kiedy zaczynają zarabiać (konsekwentnie) lub chcą iść na pełny etat, porozmawiaj ze mną :) Poważnie, jest tak wiele rzeczy, że zaczniesz robić inaczej, kiedy przejdziesz od etapu hobby do drugiego dochodu do pracy w pełnym wymiarze godzin, że nie ma powodu, aby nadmiernie optymalizować to. Następny rozdział: Machine Learning Gone Wild Jeśli masz więcej opinii, wyślij mi wiadomość na jonromero lub zapisz się do newslettera. Outro prawne. To jest samouczek inżynierski dotyczący budowania platformy algotradingowej do eksperymentowania i FUN. Wszelkie sugestie tutaj nie są poradami finansowymi. Jeśli stracisz (lub wszystkie) swoje pieniądze, ponieważ korzystasz z porad handlowych lub wdrożyłeś ten system w produkcji, nie możesz winić tego przypadkowego bloga (i mnie). Ciesz się na własne ryzyko. Ostatni raz rozmawialiśmy o Backtestu for-looper (jak uwielbiam je nazywać). Teraz czas, aby zobaczyć jakiś kod Powiedzieliśmy, że mamy coś takiego: python dla każdego elementu readhistoricaldata (): applystrategy () howourstrategydid () Słodko, załadujmy naszą strategię, wczytaj dane historyczne, uruchom nasz algorytm i wydrukuj wyniki Wolę strategię w formacie JSON, która zawiera nazwę strategii i niektóre specyfikacje (np. Ile pestek za stoploss lub takeprofit itp.). W ten sposób, gdy dobrze zaczniemy korzystać z backtestu opartego na zdarzeniach, możemy przekazać strategię za pomocą algorytmu uczenia maszynowego i spróbować zoptymalizować go. Następna linia ładuje nasze dane. Wiem, że ludzie nie lubią marynowania i istnieją inne sposoby ładowania danych (i będziemy mówić o BColz w pewnym momencie), ale na razie, tylko ze mną. Kolejna linia jest oczywista. Przekazujemy dane historyczne naszym algo i otrzymujemy niektóre statystyki do wydrukowania. Skupiamy się nieco na algorytmie i możemy później omówić wykreślanie itp. Magia prostego systemu analizy historycznej Przygotuj się na zdziwienie, jak łatwo jest to zrobić w sposób absurdalny. Krótkie dochodzenia Co się dzieje z tego typu testowaniem historycznym, to 1. prawdopodobnie popełnisz błędy, gdy będziesz chciał użyć tego samego algorytmu 2. Nie będziesz w stanie napisać bardzo złożonej strategii (przynajmniej tak łatwo) 3. Bardzo trudno skalować (w porównaniu do zdarzeń) 4. Musisz mieć swoją symulację i wykonanie w tym samym języku, ALE pamiętaj, że jest to NAJLEPSZY i najszybszy sposób na rozpoczęcie i dowiedzieć się, jak te wszystkie rzeczy działają. Pójdźmy dalej, wykorzystajmy inne dobrze znane backtestery w Pythonie i dodajmy własne wykresy. Jeśli masz więcej opinii, wyślij mi wiadomość na jonromero lub zapisz się do newslettera. Outro prawne. To jest samouczek inżynierski dotyczący budowania platformy algotradingowej do eksperymentowania i FUN. Wszelkie sugestie tutaj nie są poradami finansowymi. Jeśli stracisz (lub wszystkie) swoje pieniądze, ponieważ korzystasz z porad handlowych lub wdrożyłeś ten system w produkcji, nie możesz winić tego przypadkowego bloga (i mnie). Ciesz się na własne ryzyko. Co to jest dobry system algotradingowy bez kilku porządnych strategii do rozmieszczenia Poniżej znajduje się lista strategii, które znalazłem online (lub przesłane do mnie przez handlowców, którzy są w newsletterze). Planuję zaktualizować listę, ponieważ wciąż natrafiam na nowe pomysły. Koncepcja polega na tym, że gdy będziemy coraz bardziej zanurzać się w naszym systemie algotradingowym, pokażę ci, jak kodować i wdrażać te strategie. Wiem na pewno, że większość z nich pracuje z minimalnymi zmianami. Najgorszy scenariusz, będziesz miał system do testowania swoich założeń. Oto lista (i proszę o przesłanie mi jakiejkolwiek innej strategii, która Twoim zdaniem powinna być zawarta): Następnym razem, dzielenie się i omawianie mojego najprostszego (ale najskuteczniejszego) testu historycznego Jeśli masz więcej opinii, wyślij mi pinga na jonromero lub zarejestruj się do biuletyn. Outro prawne. To jest samouczek inżynierski dotyczący budowania platformy algotradingowej do eksperymentowania i FUN. Wszelkie sugestie tutaj nie są poradami finansowymi. Jeśli stracisz (lub wszystkie) swoje pieniądze, ponieważ korzystasz z porad handlowych lub wdrożyłeś ten system w produkcji, nie możesz winić tego przypadkowego bloga (i mnie). Ciesz się na własne ryzyko. Zbudowanie testu historycznego jest w rzeczywistości dość łatwe. Łatwo zepsuć, mam na myśli. Chociaż istnieje mnóstwo doskonałych bibliotek (i dobrze je przechodzimy w pewnym momencie), zawsze lubię robić to samemu, aby je dostroić. Ze wszystkich systemów testów historycznych, które widziałem, możemy założyć, że istnieją dwie kategorie: For-loopers Generatory zdarzeń Dzisiaj, dobrze porozmawiajmy o for-loopers. For-loopery są moim ulubionym typem backtesterów. Są trywialne w pisaniu i bardzo fajnie się rozwijają, ale mają pewne istotne przepływy i niestety większość backtesterów tam jest for-loopers (ps: muszę znaleźć na to lepszą nazwę). Jak działają pętle for Używając pętli for (jak można się domyślić). Jest to coś takiego: bardzo proste prawo Tak działa jeden system analizy historycznej, który uruchamia strategię rozpędu: Jaki jest więc problem Bardzo trudny do skalowania (poziomo) Potrzeba dużej ilości pracy, aby Twoja aplikacja applystrategy () pracowała nad weryfikacją historyczną i produkcja Musisz mieć wszystko w tym samym języku programowania Zapoznaj się z nimi, jeden po drugim. Skalowalność. Kilka tygodni temu eksperymentowałem z parą z algorytmem wspinaczki górskiej, aby zoptymalizować jedną z moich strategii. To wciąż działa. Po dwóch tygodniach. I buduję systemy skalowalne do życia. Dlaczego wciąż działa? Możesz użyć przetwarzania wieloprocesowego. Dyskoteka. producerconsumer (za pomocą ZeroMQ) lub tylko wątki, aby przyspieszyć to, ale niektóre problemy nie są kłopotliwe równolegle (tak, to jest rzeczywisty termin, a nie jedno z moich wymyślonych słów). Ilość pracy, która pozwoli skalować backtestera w ten sposób (szczególnie gdy chcesz zrobić to samo uczenie maszynowe) jest ogromna. Możesz to zrobić, ale jest to zła droga. Produkcja i backtesting w synchronizacji This. Czasy zostały przez mnie pogryzione. Mogę przypomnieć sobie utracone transakcje, w których byłem hm, dlaczego wszedłem do tego handlu lub mój dawny ulubiony DLACZEGO PRZYCZEPAĆ ZATRZYMYŁ SIĘ TERAZ. Czas powstania: wpadłem na pomysł, aby zoptymalizować moją strategię, przeprowadzić analizę historyczną, aby zobaczyć, co się stanie, gdybym mógł powstrzymać transakcję PO transakcji był opłacalny, aby zawsze zabezpieczyć zyski. Backtesting działał jak urok przy 13 wzroście zarobków, a produkcja straciła każdy handel. Rozgryzłem to po tym, jak mój algo stracił 3400 w ciągu kilku godzin (bardzo droga lekcja). Utrzymywanie synchronizacji w aplikacji jest bardzo trudne i staje się prawie niemożliwe, gdy chcesz robić to w sposób rozproszony. I nie chcesz mieć dwóch wersji swojej strategii, które są prawie identyczne. Chyba że masz 3400 do stracenia. Korzystając z różnych języków, uwielbiam Python. I Erlang. I Clojure. A J. i C. Oraz R. I Ruby (nie, właściwie nienawidzę Rubiego). Chcę być w stanie wykorzystać siłę innych języków w moim systemie. Chcę wypróbować strategie w R, gdzie są bardzo dobrze przetestowane biblioteki i za tym stoi ogromna społeczność. Chcę, aby Erlang skalował mój kod, a C - dane. Jeśli chcesz osiągnąć sukces (nie tylko w handlu), musisz mieć możliwość korzystania ze wszystkich dostępnych zasobów bez uprzedzeń. Nauczyłem się mnóstwa rzeczy od spotykania się z programistami R, co do tego, w jaki sposób można łączyć zabezpieczenia i wizualizować je lub dlaczego stosunek Sharpe'a może być kłamstwem. Każdy język ma inny tłum i chcesz, aby jak najwięcej osób wlewało pomysły do ​​Twojego systemu. Jeśli spróbujesz zastosować strategię w innym języku, to powodzenia z (2). Czy jesteś teraz przekonany? Cóż, nie próbuję cię przekonać, ponieważ for-loopers to świetny sposób na przeprowadzenie początkowych testów. Tak to się zaczęło i dla wielu strategii nie wysyłam ich do rurociągu. Lepszym sposobem (abyś mógł spać w nocy) są generatory zdarzeń. Zaraz potem, dzieląc się i dyskutując o moim najprostszym (ale najbardziej udanym) teście wstecznym Jeśli masz więcej opinii, wyślij mi wiadomość do jonromero lub zapisz się do newslettera. Outro prawne. To jest samouczek inżynierski dotyczący budowania platformy algotradingowej do eksperymentowania i FUN. Wszelkie sugestie tutaj nie są poradami finansowymi. Jeśli stracisz (lub wszystkie) swoje pieniądze, ponieważ korzystasz z porad handlowych lub wdrożyłeś ten system w produkcji, nie możesz winić tego przypadkowego bloga (i mnie). Ciesz się na własne ryzyko. Przed uruchomieniem dowolnego systemu algotradingu na żywo, dobrą praktyką jest backtest (to znaczy uruchomić symulację) naszych algorytmów. Pamiętaj, że nie oznacza to, że jeśli twój system zabija go przez ostatnie 5 lat, to będzie to miało zysk, ale jest dobrym wskaźnikiem, że możesz być na czymś. Są cztery rzeczy, które musimy wziąć pod uwagę, gdy wykonujemy naszą analizę historyczną: Jakość danych Jak je ładować efektywnie Jak zbudować nasz system testów historycznych Postaraj się, aby nasza analiza historyczna i nasz system na żywo dzieliły się tak dużą ilością kodu, jak to możliwe Dzisiaj , skupimy się na (1) i (2). W przypadku danych Forex używam GainCapital. Ich dane są w postaci kleszczy. Dla wolnego źródła jest wystarczająco dobre. Kiedyś korzystałem z historycznej usługi danych Oandas, ale wydaje się, że przenieśli ją do produktu premium. Szkoda. Upewnij się, że używasz danych GainCapitals tylko do eksperymentów. Dla każdego innego rodzaju płatnych danych historycznych (ETF, akcje, opcje stc), używam eoddata (mają też pewne historyczne dane na temat rynku forex, ale nie korzystałem z nich). Pozwala pobierać dane przez tydzień i trochę poeksperymentować. Link do danych to ratedata. gaincapital20181120NovemberEURUSDWeek1.zip za pierwszy tydzień listopada 2018. Najpierw musimy rozpakować plik. python gtunzip EURUSDWeek1.zip, a otrzymasz plik 25MB o nazwie EURUSDWeek1.csv. Są to dane na jeden tydzień dla jednej pary walutowej. Możesz sobie wyobrazić ilość danych, które musisz przetwarzać dla wszystkich walut przez ostatnie pięć lat (podpowiedź: dużo). Ale nie martw się, zamierzamy to zoptymalizować. Na razie otwórzmy plik i sprawdźmy. rzeczy, na których nam zależy, to RateDateTime, RateBid i RateAsk. Jak można się domyślić, każda linia ma znacznik czasu i ile wynosi cena do kupienia lub sprzedaży. Formaty pobrane przez inne usługi są bardzo podobne. Istnieje wiele sposobów na załadowanie tych danych do Pythona, ale najkorzystniej, jeśli chodzi o krojenie i manipulowanie danymi, to korzystanie z Pand. Zawsze możemy korzystać z biblioteki csv do ładowania danych (i może być szybsza), ale najpierw musimy przeprowadzić pewne optymalizacje i przetwarzanie, ponieważ zobaczycie, że jest to całkiem łatwe z pandami. Kolejnym wspaniałym narzędziem do ładowania TONY GB bardzo sprawnie i bardzo szybko jest użycie Bcolz. Obejmuje dużo późniejszy post (lub możesz przeczytać podgląd, jeśli zapisałeś się do newslettera Manipulowanie danymi za pomocą Pandy Dane, które pobraliśmy, są zaznaczone, dopóki nie zbudujemy algorytmu UHFT (ultra-high-frequency trading), o wiele bardziej wydajne (pamięć, pamięć i przetwarzanie), aby zgrupować te kleszcze w kilka sekund (lub minut lub godzin w zależności od strategii), co spowoduje zmniejszenie skali pobierania z 25 MB do zaledwie 35 KB, co przekłada się na OGROMNĄ wydajność i zalety pamięci. Pozwala zgrupować wszystkie te dane w ciągu 15 minut, jak czas zakochać się w resample. Problem resampling dataset wygląda następująco: To jest nazywane OHLC (Open High Low Close) pasek co 15 minut. Widać teraz, że kleszcze są pogrupowane w 15-minutowe segmenty, a Ty masz najwyższy i najniższy punkt, który osiągnęła cena podczas tych 15 minut, a także openclose do kupna i sprzedaży. Czyste złoto Nie tylko masz wszystkie potrzebne informacje, ale teraz bardzo szybko je wczytujesz . Ty tylko trzeba zapisać dane: a następnie można ponownie użyć tego pliku 35kb. Możemy napisać prosty algorytm pędu, który sprawdza, czy w ciągu ostatnich 15 minut był ogromny ruch, a jeśli tak, to kup. Zajmiemy się tym w późniejszym poście. Możesz zobaczyć kod jak zawsze na github. Jeśli masz więcej opinii, napisz do mnie na jonromero lub zapisz się do newslettera. Outro prawne. To jest samouczek inżynierski dotyczący budowania platformy algotradingowej do eksperymentowania i FUN. Wszelkie sugestie tutaj nie są poradami finansowymi. Jeśli stracisz (lub wszystkie) swoje pieniądze, ponieważ korzystasz z porad handlowych lub wdrożyłeś ten system w produkcji, nie możesz winić tego przypadkowego bloga (i mnie). Ciesz się na własne ryzyko. Zanim zbudujesz jakiekolwiek systemy algotradingowe, musisz wiedzieć, jak handlować ręcznie. Oznacza to, że musisz samemu stracić pieniądze, zanim obwinisz maszynę. Tak proste jak to. Tak, porozmawiajmy o Foreign Exchange lub Forex, jak nazywają to fajni faceci. Po pierwsze, dlaczego wybieramy Forex do algotradingu Dlaczego nie stajemy się milionerami handlującymi jak wszyscy inni Dlaczego nie kupować Tesli, Amazon, Google'a, Facebooka, Twittera i mieć nadzieję na najlepsze (PS: proszę zapoznać się z prawnym outro na końcu ten post na blogu przed zakupem jakichkolwiek zapasów). Łatwa odpowiedź. Nie możesz wygrać (lub przegrać) pieniędzy wystarczająco szybko, kupując akcje. Forex ma fajne (lub straszne, w zależności od tego, po której stronie monety jesteś) rzecz zwaną dźwignią. Leverage can be 1:10, 1:50, 1:100, 1:200, 1:1000 depending on how suicidal you are or how sketchy your broker is (dont worry, well talk about brokers in the next post). Zobaczmy przykład. We want to place a trade of 1k. The logical thing is that in order to buy something that costs 1k, you need to have in your account 1k, right Nope. You can always get a loan. Oooooooor: Enter leverage. If we have a 1:100 leverage, we can place a trade and control 1k with just 10. For those that failed at math (dont be ashamed, I am one of you), 10 x 100 (leverage) 1,000. That means you can trade big and win big Actually 100 times more big . The catch is that you can actually go 100 times more small . Lets have another example. I just got my bonus (1k) and I want to play on Forex. Without any leverage, I can buy 1,000 Forex units that cost 1 (by the way, there are no Forex units but well talk about this later). How many units can I buy with 1:50 leverage If you answer if 100,000, you did something wrong. The answer is 50,000 (1,000 x 50 leverage). Tam to masz. One of the reasons that we are doing Forex, is because you can lose win big. Well get back to leverage when we start placing trades. There are three more exciting reasons actually that are even more awesome (dare to say awesomer). Forex (almost) never sleeps. The markets are open ALL DAY, six days per week. To be more exact, there is not one market but four and they are overlapping providing the all day effect. Forex is very volatile and there are tons of money moving around (more than 5 trillion per day ). Crazy right No fees on trades. You dont pay 10 per trade like you are doing with stocks. Here you pay the spread which is just a fraction of a cent (again, well talk about this in another post). All these reasons (leverage, all-day, volatility, fees) make Forex the most exciting platform to build and deploy your algorithms. Coming up next, Forex brokers. How not to be scammed before even writing a line of code. If you have more feedback, ping me at jonromero or signup to the newsletter. Legal outro. This is an engineering tutorial on how to build an algotrading platform for experimentation and FUN. Any suggestions here are not financial advices. If you lose any (or all) you money because you followed any trading advices or deployed this system in production, you cannot blame this random blog (andor me). Enjoy at your own risk. To jest to. Every week, I get at least 10 DMs on twitter asking on how to experiment with algotrading, Forex and portfolio analysis and Ive decided that its time to do something about it. Update: Find the posts here . So, I am planning to cover the basics of how to build your own trading platform, write your own strategies and go on vacations while electrons are making you money. Or zeroing your account. Either way, it is going to be fun The majority of the examples are going to be in Python even though there might be parts in Erlang and Ill try to keep it as easy as it can be. Lets talk now about what the final product will look like. We are building a system where you will be able to: Simulate your strategy (this is called backtesting ) Execute your strategy without supervision Alert you via smsemail for trades and errors Be scalable and trivial to deploy new updates Being able to run even from your home (from a raspberrypi for example) I assume this is going to be a total of 20 chapters, give or take. That is a system similar to the one that I am running the last year and includes a UI, sms alerts, backtesting pipeline, continuous delivery and all the cool stuff that us geeks love. All code will be on github and if everything goes well, Ill wrap it up in a book for everyone to enjoy. I have like three chapters almost done, so if you want early access just ping me at - jonromero . These are all the post that have been written up until now. I may addremove post as I get more feedback. I love Forex because: It has enormous amount of data (volume) These data are coming extremely fast (velocity) You need to consider multiple resources when you are building your strategy (variety) My definition of BigData is that you have volume-velocity-variety information and you need to react on it right now (realtime). It is one of the main reasons why I dont like Hadoop (ok, the other is because I dont like Java:). Forex is the best place if you want to start playing with BigData. You have (at least) one data channel, hitting you with data, you need to keep running algorithms on this stream (sometimes doing correlations up to a week) and you need be able to respond very fast. If a garbage collector kicks in or if you need to grab data from a database (even if this DB is in memory - long live Redis) then you will have issues. Thats the reason why most of the trading databases have all their data in the same memory space and have custom languages doing the analysis (like Kdb ). That was the inspiration for LDB. Millions of data sources (mobile phones), hitting your database and calculatingupdating for each one of the requests thousands of counters and running all sorts of algorithms. Per request. In realtime. But lets face it. The vast majority of userscompanies will never have millions (or even thousands) of requests hitting their servers. Thats why I started a new opensource database with codename: HybrisDB. HDB has the following characteristics: Simple to install (no moving parts) Simple to use (pre-defined dashboards) It will be perfect for the 99 of userscompanies but not for the 1 like Facebook or Google (sacrificing Enterprise features) The concept is to have a dashboard, to watch indicators going onoff and then (maybe) connect to a system to place an order. Sounds like an interesting cool hobby project and I still try to decide between using Erlang or Clojure for this. Ping me on twitter if you have any ideas One of my new years resolution was study one of your habits each month and I decided to focus on what activities I am spending my online time. So, I installed RescueTime which is a very cool app that sits on the background and creates reports about which apps and sites you are using the most. And no, it is not sending that info to NSA (you are not that important). Even though I spent most of my time working, writing and communicating, I also spent around 2 hours on average on Facebook (gasp). No biggie. What I hated was that for the majority of times I was scrollingrefreshing for new updates. Like opening your refrigirator every two minutes even though you know it is empty Damn you habits So, spending 2 hours every day (sometimes more) on Facebook, means 60 hours per month or 7 working days . 7 freaking working days each month. 7 days, each day with 8 full hours, to sleep, go out, exercise, write a book, learn something new. What I did was installing StayFocused. a free plugin for your browser that doesnt let you spent more than 10 minutes on specific sites everyday. I zgadnij co. The I am just using facebook to communicate is such a lame excuse as I had no problem communicating with my friends, even by using facebook for 10 minutes. Now, give it a shot and tell me what you built in your spare time

No comments:

Post a Comment