Prosta strategia Krutsingera

Znalazłem go w lipcowym numerze “Futures and Options Magazine”. Jeśli pisze coś Krutsinger, facet, który o systemach wie wszystko, to trudno przejść koło tego obojętnie. Ale powodów było więcej.

System oparty niemal w całości o same ceny więc można jeździć nim bez Amibrokerów i Metastocków, tylko z użyciem kalkulatora i wykresu. I to lubię najbardziej. Co mnie natomiast zaskoczyło to spora trafność jaką Krutsinger prezentuje w symulacjach. Dochodzi nawet do 60-70 % na kontraktach, opcjach i akcjach. Bo system jest również przewidziany na rynek akcji – albo gra się tylko na kupno albo w przypadku sygnału sprzedaży – sprzedaje się akcje by ewentualnie odkupić je taniej. Oczywiście jeśli brać poprawkę na realne transakcje, czyli odejmiemy z tej trafności ze 20 %, to i tak spory kawałek tortu zostaje.

Teoretycznie systemik miał w założeniu, opisywanym przez autora, uprzedzać akcje wchodzenia na pozycje przez wszelkich trendfollowers (grających z trendem) czyli zajmować pozycję zanim oni zaczną się sami tratować na wybiciach. De facto oznacza to, że system stara się wychwycić zmianę trendu u jego zarania. Na to wskazuje sama nazwa – ?PRE-trend reversal system”. Ja widzę to tak po pierwszym kontakcie, że wygląda on niemal jak typowy antytrendowiec: gdy rynek miesza się w horyzoncie, stara się wejść w tzw. swing – krótkoterminowe łapanie falek w górę/dół. Podczas trendów natomiast albo zapowiada jego kontynuację (że tak powiem odwraca korektę przeciwną do bieżącego trendu) albo po prostu odpala odwrót trendu zbyt wcześnie. To nie ma zresztą znaczenia tak długo jak zarabia.

Założenia (setup) do zajęcia pozycji długiej:

1/ Zamknięcie sesji dziś musi być poniżej zamknięcia sesji 2 dni wcześniej.

2/ Dzisiejszy zakres ceny max-min musi być mniejszy niż średnia zakresów z poprzednich 3 sesji. To jest tzw. True Range. Dla 3 sesji liczy się to w ten sposób, że liczymy po kolei różnicę między maksimum a minimum dla każdego dnia, sumujemy wszystkie trzy owe różnice i wyciągamy zwykłą średnią arytmetyczną przez podzielenie tej sumy przez 3.

3/ Dzisiejsze zamknięcie musi wypaść poniżej dzisiejszego otwarcia.

4/ Pozycję zajmujemy jutro zleceniem stop na poziomie zamknięcia dnia dzisiejszego.

Symetrycznie wygląda to dla transakcji na pozycji krótkiej.

Poniższy wykres pokazuje tego typu zawarte transakcje z zachowaniem powyższych warunków. Oczywiście wybrałem je tendencyjnie aby pokazać układ generujący idealną pozycję. Zielona świeczka to dzień wejścia na pozycję długą, czerwona – na krótką. Niebieskie linie wskazują poziom otwarcia pozycji.

krutsinger3.jpg

Logika gry jest mniej więcej taka, że czekamy na chwilowe wyczerpanie trendu i atakujemy w przeciwnym kierunku gdy zmienność maleje.

I teraz najważniejsze czyli zarządzanie ryzykiem. Krutsinger proponuje 2 rodzaje stopów:

1/ SAR (choć ja wolę używać S&R) czyli Stop & Reverse. Zamknięcie pozycji długiej następuje jednocześnie z otwarciem pozycji krótkiej jeśli padnie sygnał jej otwarcia wygenerowany według powyższych 4 punktów (oczywiście symetrycznie zamyka się krótką gdy sygnał pada do zajęcia długiej)

2/ Alternatywnie należy użyć tzw. stop czasowy (Time Based Exit) czyli zamykać pozycje po określonej ilości dni od otwarcia o ile nie padnie wcześniej sygnał zamknięcia pozycji wg. S&R z punktu 1/

Wielkość stopa czasowego jest przez niego dopasowana osobno do każdego rynku, w drodze symulacji na danych historycznych. I tak dla kontraktów na złoto zamykamy pozycję po 3 dniach a dla S&P 500 futures po 49 dniach. Testy były robione na okresie 12 miesięcznym ale zdały egzamin w symulacji na 30 letnich danych (albo jeśli rynek był młodszy to na całość dostępnych danych).

Wyniki na wybranych rynkach podaję niżej. Wielkości pozycji dla kontraktów to zawsze tylko 1 sztuka. Niestety nie napisano nic na temat prowizji oraz maxDD w procentach co psuje nieco efekt więc podaję tylko szczątkowe statystyki z artykułu:

S%P 500 futures

Roczna stopa zwrotu: 4,84 %

Trafność: 62,67%

Profit factor 1,58

(profit factor = sumaryczny zysk/sumaryczna strata)

NASDAQ 100 futures

Roczna stopa zwrotu: 17,34 %

Trafność: 61,04%

Profit factor 1,68

GOOGLE

Roczna stopa zwrotu: 18,72 %

Trafność: 61,22%

Profit factor 1,85

(W akcje zainwestowano 100 tys $ i chyba za każdym razem 100% dostępnych środków szło w transakcje; w przypadku Google  system był na pozycji tylko przez 35% czasu a mimo to wygenerował niezłe zyski)

S&P 500 ETF (SPY – Spiders)

Roczna stopa zwrotu: 10,16 %

Trafność: 67,83%

Profit factor 1,82

Nie robiłem jeszcze głębszych testów. Przeglądnąłem tylko pobieżnie układy świec na wykresach i dość sceptycznie patrzę na możliwości tego systemu. Ale ponieważ ocena wizualna może być myląca dlatego póki co zaufałem autorowi ze względu na jego renomę. Gdyby ktoś chciał  się w to pobawić to mam jedną sugestię: w artykule nie ma nic o tym jak wchodzić na pozycję jeśli rynek otwiera się poza ceną zamknięcia z poprzedniego dnia (gdy setup spełnia warunki podane wyżej); przypatrzyłem się więc wykresowi, który załączył Krutsinger (poniżej go wklejam – źródło to oczywiście ?Futures and Options Magazine); wygląda na to, że jeśli rynek otwiera się poza zasięgiem poziomu poprzedniego zamknięcia to pozycję otwiera się już NA OTWARCIU kolejnej sesji. Wygląda to w praktyce tak, że jeśli np. cena instrumentu na zamknięciu wczoraj wynosi 2500 a dziś rynek jest gotowy do otwarcia pozycji długiej to mamy 2 alternatywy:

A/ jeśli rynek otwiera się rano poniżej 2500 to czekamy aż urośnie i stopem otwieramy pozycję long (kupujemy) na poziomie 2500

B/ jeśli rynek otwiera się rano powyżej 2500 to otwieramy pozycję long już na otwarciu.

krutsinger2.jpg

Powodzenia

–*Kathay*–

[Głosów:0    Średnia:0/5]

36 Komentarzy

  1. myst

    "4/ Pozycję zajmujemy jutro zleceniem stop na poziomie zamknięcia dnia dzisiejszego."
    Na rysunku widzę raczej zajmowanie pozycji według ceny otwarcia dnia poprzedniego. Ale poza tym wszystko jasne.

  2. kathay

    oczywiście ! zmęczenie 🙁 dzięki, już poprawiam. Wizualna inspekcja jest rzeczywiście niewiarygodna …Kolejny powód dla którego programy komputerowe mają ogromne znaczenie

  3. Mike

    @kathay

    Symetrycznie wygląda to dla transakcji na pozycji krótkiej."

    możesz coś o tym więcej? Czy to znaczy, ze ""??

  4. Mike

    coś sie wycięło… dopisze

    .."" (gdyby znów wycięło znaki : "mniejsze od" na "większe od")

  5. kathay

    OK, wpiszę całość dla krótkiej zaznaczając różnice:
    1/ Zamknięcie sesji dziś musi być powyżej zamknięcia sesji 2 dni wcześniej.

    2/ Dzisiejszy zakres ceny max-min musi być mniejszy niż średnia zakresów z poprzednich 3 sesji. To jest tzw. True Range. Dla 3 sesji liczy się to w ten sposób, że liczymy po kolei różnicę między maksimum a minimum dla każdego dnia, sumujemy wszystkie trzy owe różnice i wyciągamy zwykłą średnią arytmetyczną przez podzielenie tej sumy przez 3.

    3/ Dzisiejsze zamknięcie musi wypaść powyżej dzisiejszego otwarcia.

    4/ Pozycję zajmujemy jutro zleceniem stop na poziomie zamknięcia dnia dzisiejszego.

  6. appfunds

    Tytułem uzupełnienia polecam książkę Joe Krutsingera po polsku :Systemy transakcyjne. Sekrety mistrzów

    Dobra lektura na wakacje. Nie za ciężka, a można sporo się dowiedzieć.

  7. GiełduGiełdu

    @KatHay
    A czy sprawdzałeś na FW20?

    Pozdrowienia,
    GiełduGiełdu

  8. kathay

    nie miałem jeszcze czasu… jak potestuję na pewno nie omieszkam się podzielić wnioskami 🙂

  9. ogryzek

    @kathay

    A może by tak wędkę a nie rybę? Przybliżyć metodologię, rzucić pomysł a ludzie niech sami testują? Bo gotowym systemem przetestowanym przez kogoś innego można sobie jedynie krzywdę zrobić. Nawet jeśli jest dobry.

  10. kathay

    dobry pomysł – no ale właśnie tak teraz zrobiłem 🙂
    na testy nie będę miał czasu przez najbliższy miesiąc więc każdy ma szansę się wykazać

  11. RLEW

    @kathay
    może lepiej by było streścić Twoją wiedzę i wydać ją w formie nowej pozycji książkowej, obejmującą troszke dokładniej tematykę profesjonalnego tradingu niż to było ujęte w "Kontrakty terminowe w praktce" Pana Grzegorza Z., brakuje takiej polskojęzycznej biblii dla nowych traderów, z chęcią bym ją nabył… myślałeś o tym ?

  12. kathay

    Książka zrobi sie powoli sama na tym blogu o ile pociągnę go ze 2 lata 🙂
    A tak serio to jest na nią sponsor nie ma jednak czasu ani zacięcia.

  13. HDK

    No to w ramach czynu społecznego wklepałem pod ami. Starałem się żeby było czytelnie, ale za poprawność nie ręczę… Na dziennym interwale wyniki niezbyt, ale na godzinowym jak ktoś ma refleks i czas (a najlepiej jeszcze 2,50 PLN prowizji za kontrakt ;-)) – całkiem ok. Oczywiście to tak w najprostszej wersji.

    //——————–Warunki dla sprzedaży tak jak w artykule
    s1=CRef(C,-2);
    b3=C>O;
    //———Zebrne razem:
    ssignal=s1 AND s2 AND s3;
    bsignal=b1 AND b2 AND b3;
    //————-Ceny zawierania transakcji – jeżeli mamy otwarcie ponad poziomem stopa to otwieramy pozycję na otwarciu.
    SellPrice=ShortPrice=IIf(ORef(C,-1),O,Ref(C,-1));

    //————–Warunek sprzedaży/kupna = wczoraj sygnał uruchomiony stop.
    Sell=Short=Ref(ssignal,-1) AND (L=BuyPrice);

    //————-Wykresy pomocnicze———————-
    PlotOHLC(Open,High,Low,Close, "Price", colorBlack, styleCandle );
    Plot(BuyPrice, "Buyprice",colorGreen);
    Plot(SellPrice,"Sellprice",colorRed);
    PlotShapes( IIf( Buy, shapeUpArrow , shapeNone ), colorGreen );
    PlotShapes( IIf( Short, shapeDownArrow, shapeNone ), colorRed );

  14. Mike

    @HDK
    napisać a wkleić na ten blog, to prawie.. a prawie to wielka różnica. Zobacz uważnie, czy to co napisałeś zgadza się z tym co tu widać.
    wrzuć gdzieś na serwer plik afl i podaj linka.

  15. HDK

    Faktycznie… coś albo formatowanie bloga obcięło albo źle wkleiłem. Link: http://www.ogawy.iq.pl/magazyn/prereversal.afl

  16. GiełduGiełdu

    @HDK
    A jakie otrzymałeś wyniki systemu na FW20 dla prowizji łącznej 16 zł?
    Mógłbyś wrzucić parę wykresów i danych odnośnie liczby transakjci itp.

    Nie bardzo mam teraz czas kodować, a chętnie bym poznał wyniki.

    Prowizja 2.5 zł nie jest taka niemożliwa, wystarczy zobaczyć na interactivebrokers.com (prowizja łączna K S na kontrakty FESX o wartośco około 110 000 zl wynosi 4 Euro).

    Pozdrowienia,
    GiełduGiełdu

  17. Mike

    Teraz Ok.
    HGK,
    trzeba dodać hierarchię sygnałów wg dodatkowego parametru (dla rynku akcji). W prostym systemie, wybiera spółki najwyższe alfabetycznie i w zależnosci od zadanej liczby czy wielkości pozycji w AA, nie daje przeglądu skutecznosci.

    Coś takiego można dodać:

    Filter (równasie) Volume (większe) Percentile( Volume, 100, 70 );

    Wielkość 70 przykładowa.

    Dla W20 straszna wtopa.

  18. GiełduGiełdu

    @Mike
    Straszna wtopa? to brzmi itneresująco. Być może wystarczy korzystać z przeciwnych sygnałow?
    GiełduGiełdu

  19. HDK

    @Giełdugiełdu – Mam akurat taki wykres kontynuacyjny fw20 na ostatnie dwa lata 01.2006-02.2008. Na dziennym to wtopa prawie 50% więc nie ma co kombinować. Na godzinowym przy prowizji 8 PLN przy braku lewarowania niecałe 80% (http://www.ogawy.iq.pl/magazyn/prerev.png). Inaczej ujmując troszkę ponad 3k punktów /kontrakt. Niestety maxdd w pierwszym wypadku ponad 20% więc sporo, na kontrakt to wychodzi ponad 900 pkt. To co mnie osobiście zniechęca do eksperymentowania z tym systemem, to fakt że tak naprawdę zarabia w podobnych okresach co dobre trendfollowery. Mam jeszcze przy okazji pytanie – skoro wspomniałeś o ib. Szukam jakiejś opcji żeby nie ograniczać się do naszej gpw, ib wygląda atrakcyjnie, tylko dla mnie jest problemem rozmiar pozycji, czy jest jakiś mniejszy instrument niż mini DJ z mnożnikiem 5$? Nie daje mi to zbytniego pola do zarządzania pozycją. Jakieś rady?

  20. HDK

    @Mike ja pod kątem futów patrzyłem, więc troszkę to chyba inaczej wtedy wygląda.

  21. GiełduGiełdu

    @HDK
    Myślę, że nie ma problemu, ponieważ IB ma mnóstwo futures na akcje. Jednie trzeba przekalkulować na ile się to opłaca, żeby nie stracić korzystnego stosunku cena punktu /prowizja (u na 6).

  22. GiełduGiełdu

    (u na 6) tzn. u nas ten stosunek 6)

  23. jk

    Coś jest chyba nie tak z tym kodem:


    Założenia (setup) do zajęcia pozycji długiej:
    1/ Zamknięcie sesji dziś musi być poniżej zamknięcia sesji 2 dni wcześniej.

    a u Ciebie jest:

    //—————Warunki dla poz d?ugiej
    b1=C>Ref(C,-2);

    czyli trochę jakby odwrotnie…


    3/ Dzisiejsze zamknięcie musi wypaść poniżej dzisiejszego otwarcia.

    a u Ciebie jest:

    b3=C>O;

    czyli też jakby odwrotnie…

    Albo ja już zgłupiałem…

    Pozdrawiam

  24. HDK

    @jk racja! – odruchowo założyłem że wyżej (przyzwyczajenie do gonienia za trendem) i szczerze mówiąc zmienienie tego nie poprawia wyników, na dziennym wychodzimy co prawda na plus ale bardzo mizerny a na godzinowym zdecydowanie gorzej. Tak czy inaczej dzięki za słuszną uwagę.

  25. kathay

    Wydaje mi się, że trzeba by potestować oba stopy osobno by zobaczyć z którego rodzi się więcej wartości dodanej. Ja osobiście nie lubię stopa czasowego ale być może ma on znaczenie dla wydobycia impetu z szybkich rynków.
    Podejrzanie spora wyszła mu ta trafność dlatego zwróciłem na nią uwagę.

  26. Kysiek

    nie rozumiem jednego
    3/ Dzisiejsze zamknięcie musi wypaść poniżej dzisiejszego otwarcia.
    czyli czarna swieca a na obrazku wejscie jest na bialej swiecy

  27. jacek

    Mam jeszcze mala sugestie odnosnie implementacji systemu w kwesti sredniej zakresu ceny max-min z n-dni. Otoz z tego co zrozumialem w opisie Kathay’a, nie jest to w tej sytuacji True Range w rozumieniu definicji Pana Wilder’a (
    http://stockcharts.com/help/doku.php?id=chart_school:technical_indicators:average_true_range_a), gdzie owszem moze byc to min-max, przy zalozeniu, ze nie wystepuja jednak luki miedzy swiecami. W poprzednich kodach zrodlowych widzialem implementacje z ATR’em. ATR to z definicji Wilder’a najwieksza wartosc z:
    * biezacy High minus biezacy Low
    * bezwgledna wartosc biezacego High minus poprzedni Close
    * bezwgledna wartosc biezacego Low minus poprzedni Close
    Innymi slowy zamiast wykorzystania ATR, mozna zaimplementowac wlasny “true range” dla n-dni bez uwzglednienia tych luk. W AmiBroker mozna to zrobic np. tak:

    function TR(numOfDays) {
    result = 0;
    if (numOfDays <= BarCount) {
    for( bar = 0; bar numOfDays) {
    temp = 0;
    for(i = 0; i < numOfDays; i++) {
    temp += (H[tempBar] – L[tempBar]);
    tempBar–;
    }
    result[bar] = temp / numOfDays;
    }
    }
    }
    return result;
    }

    Oczywiscie to tylko dodatkowy element, ktory mozna uwzglednic przy pracy nad implementacja opisanej strategi Krutsingera.

  28. jacek

    … przepraszam, za formatowanie kodu 🙂 Niestety wciecia zostaly usuniete, ale jesli zrobic to samemu, to wyglada wszystko duzo prosciej 🙂

  29. jacek

    oj, kod wyglada niestety tak, ze nie tylko wciecia zostaly usuniete — przepraszam za gapiostwo 🙂 nie mam teraz pod reka serwera gdzie moglbym go wywiesic, wiec prosze pisac swoje maile, jesli ktos jest zainteresowany, a podesle kod bezposrednio.

  30. jacek

    OK, kod implementacji mozna odszukac tutaj –> http://lempart.eu.interia.pl/myTrueRange.afl

    Raz jeszcze sorki, za ilosc spamu 🙂

  31. kathay

    Krutsinger liczył minimum i maximum samej sesji bez uwzględniania luk.
    ATR natomiast luki uwzględnia. Z tym, że można go liczyć na 2 czy 3 sposoby.
    IMHO z lukami czy bez – niewiele to zmienia 🙂

  32. jacek

    No tak — faktycznie w tym przypadku uwzglednienie luk nie wprowadza wielkiej roznicy 😉
    BTW, nieco z innej beczki, mam pytanie do Kathay’a: czy bardzo niepokojaca powinna byc sytuacja w przypadku systemu, ktory swietnie sprawdza sie np. na jednym rynku futures, a na innym juz nie (i to nawet przy zmianie parametrow). Dodam, ze na rynku, gdzie system ma dobre wyniki, przechodzi z powodzeniem testy walk-forward. Z gory dziekuje za opinie.

  33. kathay

    Ja bym się tym nie martwił. IMHO szukanie systemu optymalnego na wszystkie rynki to mrzonka w świecie niestacjonarności. Zauważ jak wiele systemów komercyjnych o wysokich ratingach jest przeznaczona tylko na wybrany rynek lub kilka wyselekcjonowanych rynków

  34. jacek

    No tak, brzmi rozsadnie. Z drugiej strony jesli system dziala bez zarzutu na futures FW20, calkiem przyzwoicie na DAX i FTSE, a na S&P to juz walka o to by byc nad kreska, to czy wciaz nie jest to powod do niepokoju Twoim zdaniem?

  35. kathay

    Raczej nie. Ale musiałbym jeszcze znać samą podbudowę systemu, ile w niej zależy od dynamiki rynku. Rynki mają niejednakowy rytm, stopień efektywności itd.

  36. stalmar20

    Czy sprawdzał ktoś metodę Krutsingera na forexie? Jeżeli tak to z jakim skutkiem. Dzięki.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Proszę podać wartość CAPTCHA: *