piątek, 15 października 2010

Moja własna strategia :)

Witam serdecznie,

dzisiaj nie będę komentował bieżących wydarzeń z rynku ale przedstawię wam moją malutką strategię wysokiego prawdopodobieństwa opartą na statystyce. Aby zachęcić do dalszego czytania dodam, że podana strategia może dać ponad 75% prawdopodobieństwa wygranej z rynkiem, a w niektórych przypadkach ponad 95%! Udostępniam ją całkowicie za darmo, moja jedyna prośba to poinformowanie znajomych o istnieniu tego bloga!

Podstawowym problemem niektórych oscylatorów jest to, że zakładają one rozkład normalny cen akcji podczas gdy taki rozkład nie jest adekwatny do rynku. W mojej strategii posłużę się wstęgami boillingera oraz transformatą fishera aby stworzyć logiczny i statystycznie poprawnie systemik.

  • Zamieniamy rozkład cen akcji na rozkład normalny za pomocą transformaty Fishera oraz procesu normalizacji - czyli mówiąc po ludzku robimy oscylator stochastyczny z cen i zamieniamy go na rozkład normalny.
  • Na znormalizowany rozkład cen akcji rzucamy wstęgi boillingera i sprawdzamy co się dzieję przy przebiciu dwu-krotności odchylenia standardowego zarówno przy górnej wstędze jak i przy dolnej.
  • Logika, która stoi za systemem jest bardzo prosta - jeżeli transformata Fishera przebije wstęgę boillingera taka obserwacja jest bardzo nietypowa i może oznaczać zachwianie równowagi na rynku. Takie odstępstwo może być bardzo szybko utemperowane powrotem do wstęg lub ogromną pompą w dotychczasowym kierunku.
Wykorzystanie metod statystycznych jest raczej rzadko nagłaśniane, a właśnie takie strategie wydają się być naukowo poprawne.  No ale do rzeczy.

 Testy przeprowadzam na S%P500 futures, jednak nic nie stoi na przeszkodzie aby ten system sprawdzić na innych giełdach i papierach. Wykorzystuję wstęgę 14-okresową. Tak to wygląda w praktyce:

Ten "ostry" oscylator to właśnie znormalizowany kanał cenowy przemielony przez transformatę. Wstęgi są zaznaczone na kolor zielony.

Rozważę 6 strategii z wykorzystaniem podanych narzędzi. Dlaczego? O tym poniżej, w raportach.

  • Przebicie górnej wstęgi przez transformatę
    • Strategia po przebiciu gdy dzień jest wzrostowy
    • Strategia po przebiciu gdy dzień jest spadkowy
  • Przebicie dolnej wstęgi przed transformatę
    • Strategia po przebiciu gdy dzień jest wzrostowy
    • Strategia po przebiciu gdy dzień jest spadkowy
Cały raport do pobrania poniżej:

Link #1
Link#2
Link#3

Dla tych, którzy chcą więcej wiedzieć o transformacie Fishera i metodach statystycznych polecam bossę oraz literaturę tam zawartą. Większość kodów do amibrokera jest umieszczonych na stronie amibroker.com, zapraszam do eksperymentowania i dzielenia się opiniami! Poniżej zamieszczam kod AFL z transformatą i wstęgami. Jeżeli zajdzie potrzeba mogę przeprowadzić podobną analizą na WIG20, WIG20 Futures oraz Akcje WIG20.

function InverseFisher(array)
{
  e2y = exp(2 * array);
  return (e2y - 1)/(e2y + 1);
}

function Normalize(array, arraylen)
// Figure 1.7 on p. 7
{
  MaxH = HHV(array, arraylen);
  MinL = LLV(array, arraylen);
  Value1[0] = array[0];  // Initialize as array

  for(i = 1; i < BarCount; i++)
  {
     Value1[i] = .5 * 2 * ((array[i] - MinL[i]) / (MaxH[i] - MinL[i]) - .5) +
.5 * Value1[i-1];
     if (Value1[i] > .9999) Value1[i] = .9999;
     if (Value1[i] < -.9999) Value1[i] = -.9999;
  }
  return Value1;
}

function Fisher(array)
// Figure 1.7 on p. 7
{
  F = array;
  F = .25 * log((1+ array)/(1 - array)) + .5 * Ref(F, -1);
  return F;
}

Med = (H+L)/2;

// Fisher Transform
FisherXform = Fisher(Normalize(Med, 10));
Plot(FisherXform, "Fisher Transform", colorRed, styleLine);
//Plot(Ref(FisherXform, -1), "", colorBlue, styleLine);
PlotGrid(2);
PlotGrid(-2);

_SECTION_BEGIN("Bollinger Bands");
P = ParamField("Price field",-1);
Periods = Param("Periods", 15, 2, 300, 1 );
Width = Param("Width", 2, 0, 10, 0.05 );
Color = ParamColor("Color", colorCycle );
Style = ParamStyle("Style");
Plot( BBandTop( P, Periods, Width ), "BBTop" + _PARAM_VALUES(), Color, Style );
Plot( BBandBot( P, Periods, Width ), "BBBot" + _PARAM_VALUES(), Color, Style );
_SECTION_END();

4 komentarze:

  1. Witam
    Czy mógłbyś mi napisać w jaki sposób doładować dane do harmonic analyzer i skąd najlepiej je pobrać? Czy harmonic analyzer można połączyć z amibrokerem?
    Pozdrawiam

    OdpowiedzUsuń
  2. Cześć,

    szerzej na temat importowania danych do HA pisałem tutaj:

    http://wig-pl.blogspot.com/2010/09/harmonic-patterns-ciag-dalszy.html

    HA jest bardzo wybredny jeżeli chodzi o przyjmowanie danych zewnętrznych. Sprawę możesz załatwić automatycznie przez skrypt a Amibrokerze lub ręcznie pobierając dane ze stooq.pl. Ściągasz to, co cię interesuję i wrzucasz do folderu

    c:\\Users\\NazwaUżytkownika\\haData

    Nie podepniesz HA do Amibrokera (rozumiem, że chodzi o dostarczanie danych intra do HA? ), ponieważ Analyzer przyjmuję tylko eSignal (pisałem kiedyś w tej sprawie do supportu). Również możesz zapomnieć o ładowaniu danych intra w formacie CSV do HA. Niestety, każdy program ma swoje plusy i swoje minusy.

    Pozdrawiam

    OdpowiedzUsuń
  3. Cześć

    Dziękuję za wyczerpującą odpowiedź.

    Pozdrawiam

    OdpowiedzUsuń
  4. Czy dałoby radę podać kod do MetaTradera?

    Jak wygląda strategia na konraktach na WIG20?

    Wygląda to bardzo ciekawie :)

    OdpowiedzUsuń