niedziela, 25 stycznia 2009

Sztuka bezkontekstowa i sztuka algorytmiczna

Natknąłem się przypadkowo na interesujący program graficzny - Context Free - narzędzie służące do tworzenia algorytmicznej grafiki.

Używa się go w niestandardowy sposób, mianowicie nie rysuje się nic na ekranie, ani na kartce - zamiast tego zadaniem artysty jest stworzenie opisu grafiki w specjalnym języku programowania. Pomysł ten jest krewniakiem idei muzyki algorytmicznej, o której pisałem przy okazji omawiania csound'a . Przypomniałem sobie o swoich starych eksperymentach z tworzeniem algorytmicznej grafiki bezpośrednio w języku C: oto wizerunek "tęczowej planety" i fragment kodu programu, który go narysował. Dość złożony obraz powstaje w wyniku działania tak prostej funkcji !

#define tfi(x) (0.5*(x+1))

float calc_color( float x, float y, int rgb )
{
        float d, K;

        d = (x-0.4) * (y-0.3) - 0.04;

        if ( d < 0 ) 
                K = 0;
        else if ( d < 0.03 ) {
                K = 1 - (0.03 - d)/0.03;
        }
        else
                K = 1;

        switch ( rgb ) {
                case 0:
                        return K * tfi(sin( 41 * x*y ));
                case 1:
                        return K * tfi(cos( 13 * x ));
                default:
                        return K * tfi(cos( 28 * y ));
        }
}

poniedziałek, 12 stycznia 2009

Więc czy da się przewidywać kursy walut na forexie ?

Dane historyczne są dostępne w sieci, wyposażmy się więc w jakieś narzędzie (dla mnie najwygodniejszy jest bash i awk, ale równie dobrze może być to Excel) i popróbujmy prostych eksperymentów. Badając dane pary EURCHF z ostatnich kilku lat (moje dane były pobrane z rosyjskiego portalu forexite, próbkowane z rozdzielczością minutową) widzimy, że każdy ruch w jedną stronę poprzedza ruch w przeciwną stronę - ta obserwacja jest słuszna z dość dużym prawdopodobieństwem ! Prawdopodobieństwo to wynosi około 62 % dla danych minutowych. Dla danych próbkowanych 2 razy rzadziej analogiczna wielkość to 59 % Ogólnie rzecz biorąc, im dłuższe okresy badamy, tym ta korelacja (albo ściślej rzecz ujmując - antykorelacja) jest słabsza. Przybliżone wielkości prawdopodobieństwa "odbicia" dla pary EURCHF w zależności od długości ruchu przedstawia zestawienie:
 1    0.622234
 2    0.595226
 5    0.570834
10    0.557971
20    0.543762
60    0.538403
Widzimy, że dla długich okresów badana wielkość upodabnia się do danych losowych, dla których oczywiście prawdopodobieństwo to wynosi 50 %. Podobieństwo dotyczy oczywiście tylko tego jednego aspektu, należy pamiętać, że nasz eksperyment jest zbyt prosty, żeby w ogólności rozstrzygnąć o charakterze badanego procesu. Czy można jednak jakoś wykorzystać te zależności ? Okazuje się, że nie, że to za mało. Średnia względna wielkość ruchu ceny w zależności od wielkości kroku w badanych okresach wygląda tak:
 1      0.000158347
 2      0.000164155
 5      0.00024643
10      0.000328186
20      0.000444261
60      0.000738944
Zakładając, że broker zabiera nam 1 pips prowizji w postaci spread'u, co stanowi około 0.000066 wartości pozycji, mamy następujący średni profit na tak zaprognozowanej transakcji:
 1     -2.72892e-05
 2     -3.47364e-05
 5     -3.10888e-05
10     -2.79495e-05
20     -2.71165e-05
60     -9.24467e-06
Profit jest ujemny dla każdego z badanych przedziałów, co więcej, widać, że w zakresie małych ruchów jest prawie stały, spread równoważy prawie zysk związany z przewidywalnością ruchu, a więc można uznać, że jest to przewidywalność NIEZNACZĄCA, niwelowana przez prowizje. Nie powinniśmy jednak się poddawać ! Wykryty przez nas autentyczny fakt, polegający na MOŻLIWOŚCI przewidywania ruchów cen, którą można EKSPERYMENTALNIE UDOWODNIĆ powinien nas zachęcić do dalszych samodzielnych badań. W kolejnych odcinkach postaram się opisać, do czego ja doszedłem, w jaki sposób, a także jak używałem awk'a i jednolinijkowców do super ekstremalnie szybkiego programowania i obliczania różnych statystyk i prawdopodobieństw.

piątek, 2 stycznia 2009

Handel walutami - czy trendy istnieją

Od paru lat, na skutek upowszechnienia internetowych platform transakcyjnych, handel walutami na rynku międzynarodowym dostępny jest dla każdego, kto jest podłączony do sieci. FOREX zyskuje coraz większą popularność w kręgach domorosłych spekulantów ze względu na niskie koszty transakcji (rzędu 0.01 % !) i dostępne wysokie lewary (nawet do 200 x ). Każdy, kto chce rozpocząć przygodę z forexem powinien jednak najpierw zapoznać się ze specyfiką tego rynku, w przeciwnym razie szybko straci wszystkie zainwestowane środki. W tym artykule chcę pokazać, jak złudne są nasze przekonania co do natury kursów walut. Obalę mit o wyraźnych trendach , które rzekomo widoczne są gołym okiem na wykresach kursów. Poniżej przedstawiam wykres notowania pary EUR/USD na przestrzeni kilku lat: Końcowe załamanie to objaw obecnego kryzysu funansowego, który przerwał wyraźny trend rosnący Euro w stosunku do dolara amerykańskiego. Każdy widzi ten trend, a ja teraz pokażę, że to złudzenie. W tym celu wygeneruję sztuczne dane i pokażę ich wykresy. Poniżej przedstawiam pięć zestawów danych całkowicie losowych. Program generujący startuje z jedynki i losowo mnoży ją lub dzieli przez tę samą wartość (krok) równą 1.001. Skrypt, który wygenerował te dane wygląda tak:
awk 'BEGIN { x=1; p=1.001; 
     for (i=0; i<27783; i++) { 
        if (rand() < 0.5) x *= p; else x /= p; print x }
     }'
27783 to liczba punktów pierwotnego wykresu - chcę uzyskać dane tej samej długości. Oto, co uzyskuję: Wygenerowany wykres również zawiera wyraźny trend . Jedyne wyjaśnienie tego faktu to przypadek, albo złudzenie. Wygenerujmy więc kolejne cztery przebiegi czasowe i obejrzyjmy: Oprócz być może pierwszego z powyższych czterech sztucznie wygenerowanych wykresów, wszystkie posiadają odcniki wyraźnego trendu . Tłumaczy się to tym, że umysł ludzki cechuje skłonność do dopatrywania się porządku nawet tam, gdzie go wcale nie ma. Czy więc dane finansowe , takie jak notowania FOREXU czy giełdy, są nieprzewidywalnymi ciągami losowymi ? Czy więc cała analiza techniczna jest równoważna próbom znalezienia systemu wygrywania w totolotka ? Nawiasem mówiąc są tacy, którzy wierzą w systemy totolotka i nawet tacy, którzy je sprzedają ! W środowiskach akademickich do niedawna panowało przekonanie o efektywności rynków i co za tym idzie o niemożliwości przewidywania kursów. Od ostatnich kilku (czy też kilkunastu) lat pojawiają się jednak prace (znajdziemy je względnie łatwo używając http://scholar.google.com ) dostarczające solidnych argumentów zwolennikom analizy technicznej. Jedno jest pewne : dzisiejszy trader nie obejdzie się bez komputera, podstawowej umiejętności programowania i podstawowej znajomości statystyki matematycznej. O swoich dokonaniach na polu handlu FOREXOWEGO - o próbach znalezienia solidnych teoretycznych podstaw do praktycznego zarabiania pieniędzy - postaram się napisać w kolejnych postach.