R (backtesting techniki spread trade). Przykładowe zastosowanie

# R – backtesting strategii „spread trade” (bez uwzględnienia prowizji)

# importowanie biblotek i funkcji

require(quantmod)
require(PerformanceAnalytics)
getSymbols(‘^GSPC’)
getSymbols(‘^DJI’)

# wstępne obliczenia

closeGSPC=Cl(GSPC)
closeDJI=Cl(DJI)

ilorazG= (closeGSPC[2:length(closeGSPC)]/1416.6)*100
ilorazD= (closeDJI[2:length(closeDJI)]/12474.52)*100

roznica_D_G = ilorazD – ilorazG
############################################################

funkcja1 <- function(roznica_D_G) {
wynik <- c()
i<-1
while (i < (length(roznica_D_G))) {
wynik[i] <- sum(roznica_D_G[1:i+1])
i<-i+1
}
return(wynik)
}
funkcja1(roznica_D_G)
roznica=funkcja1(roznica_D_G)

funkcja1 <- function(roznica) {
wynik <- c()
i<-1
while (i < (length(roznica))) {
wynik[i+2] <- ( roznica[i+1] – roznica[i] )
i<-i+1
}
return(wynik)
}
funkcja1(roznica)
jr=funkcja1(roznica)

# teraz jr (w przyblizeniu) = roznica_D_G – ale zapisane w WEKTORZE

############################################################

funkcja1 <- function(jr) {
wynik <- c()
i<-1
while (i < (length(jr))) {
wynik[i+1] <- ( jr [i+1]  – jr[i] )
i<-i+1
}
return(wynik)
}
funkcja1(jr)
jr2=funkcja1(jr)

#############################################################################
# możliwości generowanie dziennych sygnałów (do inwestowania zgodnie lub odwrotnie do spreadu)

longSMA <- SMA(roznica_D_G, 40)
shortSMA <- SMA(roznica_D_G, 39)

signals <- Lag(ifelse(shortSMA < longSMA, -1, 1))
returns <- jr2 * signals

#############################################################################
# rosnąca suma wyników z inwestowania (returns)

funkcja1 <- function(returns) {
wynik <- c()
i<-41
while (i < (length(returns)+1)) {
wynik[i] <- sum(returns[41:i])
i<-i+1
}
return(wynik)
}
funkcja1(returns)
r=funkcja1(returns)
############################################################################3
# Budowanie najważniejszego wskaźnika inwestycji. Obrazującego #charakterystyke (historycznego) ryzyka – OBSUNIĘCIA KAPITAŁU ( bez #stosowania reinwestycji)
# b – całkowity kapitał (zainwestowany + zyski)

b=200 + r
b[1:40]=200

funkcja1 <- function(b) {
wynik <- c()
i<-1

while (i < (length(b)+1)) {
wynik[i] <- (200-(b[i]-min(b[i:length(b)]))) / 200
i<-i+1
}
return(wynik)
}
funkcja1(b)
o=funkcja1(b)
##########################################################################
# generowanie autorskiego sygnału do inwestowania opartego na wartościach obsunięcia  kapitału

so = Lag(ifelse(o > 0.99, 1, -1))

##########################################

returns2 <- returns * so

funkcja1 <- function(returns2) {
wynik <- c()
i<-41
while (i < (length(returns2)+1)) {
wynik[i] <- sum(returns2[41:i])
i<-i+1
}
return(wynik)
}
funkcja1(returns2)

# wykresy

plot(funkcja1(returns2), type=”h”) # strategii po modyfikacji
lines(r, type=”s”, col=”red”) # przed modyfikają

##############################################

WNIOSEK:

Modyfikując strategie inwestycyjną (w oparciu o sygnały generowane na podstawie wskaźników obsunięcia kapitału) ponad 15-krotnie można podnieść jej końcowy wynik finansowy także ponad 15-krotnie, przy jednoczesnym zmniejszeniu maksymalnego obsuniecia kapitału poniżej 1%, przy kącie nachylenia (krzywej rentowności) zbliżonej do 45 stopni.

 

 

 

Technika „odwrotności”, kontynuacja, cz. 2

Od dnia 18.04.2012 obserwuję parę EUR/GBP (buy) i do niej syntetycznie stworzoną nie wprost odwrotnie GBP/EUR (sell). W tym czasie zaobserwowałem niewielkie zmiany wahań całego portfela sięgające od -60 zł do + 60 zł, przy marginie 1348 zł i około 20 zł kosztów otwarcia wszystkich transakcji.

Portfel składa się z pozycji po 0,1 lota otwartych na: EUR/GBP buy; EUR/USD sell, GBP/USD buy. (Odejściem w mianowniku syntetycznej pary od zasady otwarcia wielkości pozycji jako iloczynu pozycji otwartych w liczniku i wartości EUR/GBP – nazywam umownie odwrotnością nie wprost)

Przy akceptowalnym poziomie ryzyka wynoszącego 5% i przy dłuższych obserwacjach mogę wypróbować (wirtualnymi środkami) na tym portfelu strategie inwestycyjną spread trading.

Założenia co do otwierania i zamykania pozycji można ustalić różne. np. (nie uwzględniając punktów swapowych, które działają niekorzystnie na wypracowany wynik portfel) przy – 60 otwieramy buy na parze syntetycznej oraz sell na EUR/GBP. a przy + 60 analogicznie na odwrót.

W zależności od wartości przyjętych tych umownych punktów odniesień oraz zmienności tych par (mieszczącej się w przyjętym kanale i jednocześnie częstszej – tym wyższe powinny być potencjalne zyski) wyniki strategi będą się bardzo różniły.

Przy uwzględnieniu pierwotnych zasad mogą zawierać się w przedziale od 3% do 7 % zysku w skali miesiąca.

………………………….

Poniżej podaje wyniki jakie wypracowały moje portfele

Wczoraj po 18. ; i dziś (10.05.12) po 11. oscylowały wokół wartości (w zł):

P 1 – strata 107 ; 152

P 2 – zysk 70 ; 123

P 3 – zysk 200 ; 173

P 4 (mikro loty) – zysk 330 ; 300

P 5 – 146; 136 (zdjęcie poniżej)

– cel portfela: osiąganie wyników podczas umacniania się $ albo Euro, z niewielkim udziałem zabezpieczenia z uwzględnieniem wysokiego akceptowalnego ryzyka (np. 100% lub 50%) ale jednocześnie charakteryzującym się z dużo wyższym potencjałem zysku od poprzednich portfeli (ponad 45% zysku w 3 dni.)

P 5 - wynik inwestycyjny po 3 dniach

Technika „odwrotności”, kontynuacja

Próbując znaleźć jak najbliższe odzwierciedlenie syntetycznej pary usd/eur by móc zarabiać dzięki technice „odwrotności” z dostępnych instrumentów stworzyłem portfel który uznałem jako tylko a jednocześnie aż fundament do zbudowania wspomnianej techniki.

Na wszystkich poniżej wymienionych instrumentach dnia 02 maja 2012 roku otworzyłem pozycje buy:

ftnote10 1 lot; fbund10 0,9 lota; feu50 0,1 lota; fus30 0,1 lota

Margin wyniósł 8075 zł, ze względu na brak możliwości otwarcia akurat na tym rachunku demo mikro lotów.

Zysk wypracowany przez ten portfel po godzinie 12. dnia 08.05.12 oscylował wokół 2200 zł.

Jednak ten portfel w mojej ocenie jest narażony na duże ryzyko w postaci jednoczesnych odpływów kapitałów z rynków: kasowego i obligacji, USA i UE (oraz dodatkowo braku zmiany wartości pary EUR/USD).

Dlatego należy się zastanowić, na jakim instrumencie powinno się dodatkowo otworzyć pozycje buy do którego trafia ten odpływ kapitału?

A może zastosować inną analogię?

Z moich wstępnych obserwacji zauważyłem iż „rykoszetem” wspomnianego odpływu dostaje się min. surowcom i metalom szlachetnym. Dlatego warto dodatkowo otworzyć dla potrzeb przyszłych badań niewielką pozycje sell np. … na złoto.

……………………..

Wracając do wcześniej otwartych portfeli podaje wypracowane ich wyniki:

P 1 (otwarty 30.04.12) strata w wysokości 162 zł

P 2 (otwarty 02.05.12 po godz. 10.) zysk 35 zł

P 3 (otwarty 02.05.12 po godz. 11.) zysk 135 zł

P 4 (uznaniowo mikro loty) zysk 220 zł

Złożoność istoty rozłożenia ryzyka

Obrazek

Dnia 17 maja 2011 roku badając wzajemny wpływ zmian cen instrumentów CFD  zbudowałem portfel. Zdjęcie obrazujące jego skład oraz wypracowany wynik na dzień 07.05.2012 zamieściłem poniżej.

Portfel 1 - wynik za okres 17.05.11 - 07.05 12

Dodam że na przestrzeni ostatniego roku wykazywał się dużą zmiennością, gdyż najwyższy wynik jaki wypracował to około 42000 zł zysku, (czyli prawie  500%).

W moim zamyśle portfel ten miał mi tylko posłużyć do dalszych badań. Dnia 09 lutego 2012 roku w oparciu o te badania i obserwację innych instrumentów stworzyłem z 24 CFD drugi portfel, który cechował się niską zmiennością (około 10% – obserwowalnej) i wysokim zyskiem w stosunku do tej zmienności bo sięgającym prawie 100% w niecałe 3 tygodnie. Jednak jest to za krótka próba czasowa by wyciągać na jej podstawie dalekowidzące wnioski.

Po tym czasie rachunek demo na którym stworzyłem ten drugi portfel został usunięty z poziomu platformy transakcyjnej. Próbując odtworzyć jego skład na nowych rachunkach demo okazało się, że już nie istniej kilka instrumentów które wchodziły w skład tego drugiego portfela, a dodatkowo wprowadzono limity co do ilości otwartych pozycji.
Oczywiście, że najlepiej jest przechowywać loginy i hasła w plikach. Jednak wyższą efektywność badań  daje możliwość płynnego przechodzenia między kilkunastoma rachunkami.
Widząc, że rachunki które trzymałem na platformie ponad rok nie zostały skasowane wyciągnąłem wniosek, że kolejne również nie zostaną usunięte przynajmniej w ciągu kilku miesięcy od ich otwarcia. Jak widać wyciągnąłem błędny wniosek. Jednak zabezpieczyłem się i na tą ewentualność w postaci zdjęcia składu drugiego portfela, którego zamieściłem poniżej.

Portfel 2 - wynik za okres 09.02.12 - 28.02.12

Jak można zaobserwować obszar badań co do dywersyfikacji ryzyka wydaje się być niewyczerpalny.  Jednak do końca nie jest to prawdą, ale o tym opiszę później.

Budowanie strategii inwestycyjnej opartej o przepływ pieniądza, cz. 2

Nawiązując do mojego ostatniego wpisu podaje wartość portfela który (o 13.45) po dwóch dniach handlu wyniósł – 55 zł (strata 55 PLN), dlatego też zmodyfikowałem wyjściowy portfel tworząc drugi którego wynik po 3 godzinach handlu wyniósł 23 zł (zysk 23 PLN).

Wszystkie pozycje otwarłem w wysokości 0,01 lota. Na wszystkich instrumentach niżej wymienionych (oprócz jednego eur/usd – sell) gram na wzrosty:

usd/pln: usd/jpy; usd/chf; usd/cad; fus500; ftnote10.

Margin wyniósł mnie około 2000 zł (wirtualnych) z dźwignią finansową 1:100

Ten nowo stworzony portfel w mojej ocenie powinien być bardziej ryzykowny, ze względu na mniejszy poziom zabezpieczenia w razie odpływu kapitału z rynków finansowych USA. Dlatego też akceptowalny poziom ryzyka ustaliłem na poziomie 50% (strata do 50%, czyli do 1000 zł – dla potrzeb badań wirtualnych).

Jeśli nie będę miał racji co do poziomu tego ryzyka to portfel powinien pokazywać na moją korzyść systematyczną rentowność.

Do tego testu założyłem możliwość reinwestowania, która umożliwi generowanie dodatkowych zysków.

Stratę zaś umownie (nie w aplikacji) ustaliłem jako mechanizm Stop Lossu kroczącego (Trailing Stop), w ten sposób, aby po każdym podwojeniu kapitału np. co kwartał (możliwym do osiągnięcia z założenie ze względu na wysokie ryzyko) stan rachunku w razie osiągnięcia ww. straty akceptowalnej wnosił, dla przykładu: po 1 Q – 50%, po 2 Q – strata = 0 zł, po 3 Q – zysk 100 %, po 4 Q – zysk 800 % po 5 Q 1600 %, itd.

Należy pamiętać, że są to tylko założenie a w rzeczywistości inwestycja może się zakończyć ze stratą 50% po kilku dniach. Jednak wszystkie te założenia są po to, aby ze sobą współgrały dla bardziej efektywnej pracy portfela i co się z tym wiąże a jest najważniejsze, dla jasnego obrau ryzyka.

Budowanie strategii inwestycyjnej opartej o przepływ pieniądza

Pewnego dnia zastanawiając się od jakich czynników jest uzależniona zmienność wartości współczynnika korelacji między dwiema „podobnymi” instrumentami pochodnymi doszedłem w swych myślach do innej strategii inwestycyjnej opartej na przepływie strumieni pieniężnych na rynkach finansowych.

Zastanawiałem się czy, oczywistą rzeczą jest, że środki ze sprzedaży jednego aktywu powinny być ulokowane w innym aktywie lub w innych aktywach?

Do końca nie jest to takie oczywiste, ponieważ część konsumentów lubi przetrzymywać środki pieniężne „w skarpecie” wydając ich tylko część. Dlatego te trzymane środki pieniężne nie trafiają do gospodarki, a przez to i ją nie pobudzają, czyli nie wywierają wpływu na wzrost cen towarów i usług oraz na stan zatrudnienia w gospodarce, przez ujemny wpływ na rozwój handlu.

Brak płynności na rynkach jest bardziej tragiczny w skutkach dla gospodarki jako całości niż duża zmienność cen.

Wychodząc jednak z założenia, że to inwestorzy i gracze którzy lubią grać na instrumentach pochodnych mają największy udział w ich dokonanych volumenach, a przez to mają wpływ na ich cenę zadałem sobie pytanie, czy można niezależnie od koniunktury na rynku finansowym cały czas w niewielkim stopniu ale systematycznie pomnażać swój majątek? Bo tak naprawdę, czy słowo koniunktura na rynkach derywatów istnieje?

Przecież zawsze możemy obstawiać wzrosty jak i spadki cen tych instrumentów, w zależności tylko od brokera i płynności rynku no i oczywiście od zasobności naszego portfela.

Te dwa ostanie pytania coraz bardziej będą przybierały na znaczeniu ze względu na ilość rosnących rodzajów ww. instrumentów. W chwili obecnej szacować można, że wszystkich rodzajów instrumentów pochodnych notowanych na całym świecie jest ponad 10000. Aby móc odpowiedzieć na ww. pytania należy zacząć intensywnie badać strukturę przepływu strumieni pieniężnych między derywatami np. dotyczących tylko jednego wybranego kraju.

Za pomocą rachunków demonstracyjnych (gdzie operuje się wirtualnymi środkami) otwartych chociażby u polskich brokerów możemy zbudować dla naszych przyszłych badania małe „laboratorium”. Na jednym z moich „laboratorium” otworzyłem portfel, który dla potrzeb badań może być modyfikowany (gdy wynik na rachunku osiągnie stratę 10%). Ze względu na brakujących u brokera do moich założeń kilku instrumentów pochodnych skład jego jest ograniczony do:

1) usd/hkd buy 0,01 lota; 2) fus100 buy 0,01 lota; 2) eur/usd buy 0,01 lota; 4) ftnote10 buy 0,05 lota; 5) fus500 buy 0,01 lota; 6) usd/jpy sell 0,01 lota; 7) usd/pln buy 0,01 lota

Na dzień 30.04.2012 roku wirtualnego kapitału potrzebnego do badań przeznaczyłem w wysokości 2500 zł z dźwignią około 1:20 (gdyż margin wyniósł mnie 501,80 zł na rachunku – 1:100) W mojej ocenie w każdej strategi inwestycyjnej najważniejsze powinny być dwie zasady:

systematyczność, czyli cierpliwe konsekwentne realizowanie swoich założeń inwestycyjnych (nie wolno modyfikować swojego algorytmu podczas trwania inwestycji, jeśli chce się go zmienić najlepiej otworzyć następną inwestycję)

trzymanie ryzyka w „stalowych ryzach”, jeśli np. przyjmiemy akceptowalną stratę na poziomie 20 % zainwestowanego kapitału to tych założeń trzymamy się do końca, nawet jeśli mielibyśmy już pierwszego dnia inwestycji stracić te 20%.

Dla potrzeb moich badań akceptowalne ryzyko przyjmuje na poziomie 10% z 2500 zł wirtualnych czyli 250 zł także wirtualnych. Po wyżej tego poziomu strat zamknę bieżący i otworze nowy zmodyfikowany portfel. Koszt otwarcia portfela wyniósł mniej niż 1% z wcześniej wspomnianych 2500 zł.

W miarę swoich możliwości będę publikował stan rachunku.

Anomalie na rynkach finansowych? cz. 2 forex- swap

Analizując rynek forex zastanawiałem się nad jeszcze inną techniką zarabiania z jak najmniejszym akceptowalnym ryzykiem niewielkich ale systematycznych kwot.

Zastanawiałem się czy istnieje gdziekolwiek na świecie taka różnica między dwoma pośrednikami na rynku forex w naliczaniu punktów swapowych za trzymanie pozycji przez „noc”, aby można było na niej zarabiać.

Porównując tabele punktów swapowych różnych specjalistów i MM odkryłem ww. różnicę między: Ironfx (ironfx.com – specjalista) a XTB (xtb.pl z Polski – pierwotnie MM)

tylko przy jednym sposobie ustawieniu pozycji i to tylko na jednej parze walutowej USD/MXN:

Aby sprawdzić czy faktycznie istniej taka różnica należałoby otworzyć 2 pozycje na 2 rachunkach demo po jednej u każdego z brokerów:

na XTB pozycje krótką 0,1 lota (krótką sprzedaż, czyli obstawiamy spadki i na spadkach zarabiamy , zaś na wzrostach tracimy)

zaś na Ironfx pozycje długą 0,1 lota (gramy na wzrosty).

Czyli na zamianie kursu tej pary walutowej nie zarobimy bo jeśli u jednego brokera zarobimy to tyle samo powinniśmy stracić u drugiego, lecz teoretycznie powinniśmy zarobić na upływie czasu .

Czas powinien być naszym sprzymierzeńcom, bo im dłużej trzymamy raz otwarte pozycje to tym więcej powinniśmy zarabiać, ale do czasu zamian naliczania punktów swapowych u tych pośredników.

Bowiem może się tak okazać, że zamiast zarabiać po pewnym czasie zaczniemy systematycznie tracić ze względu na to, że jeden z brokerów zmienił na naszą nie korzyść naliczanie tych punktów.

Jednak może się też okazać analogicznie na odwrót, że zaczniemy systematycznie jeszcze więcej zarabiać.

Poniżej zamieszczam linki do tabel w których są aktualne wartości punktów swapowych naliczane przez (aktualne na dzień 24.04.2012):

 XTB: http://www.xtb.pl/regulacje/swapy

 Ironfx: http://www.ironfx.com/en/trading-products/forex

Różnica między pozycją krótką na parze USD/MXN otwartą w XTB, a pozycja długą otwartą przez Ironfx wynosi: 2,665 (stan na dzień 24.04.2012)

 Proszę jednak pamiętać iż łączne koszty transakcji mogą wynieść około 280 pipsów. (czyli u nas 280 pipsów wyrażone w MXN),

Poniżej zamieszam adres tabeli widełek wahań wartości spread-ów (należy je zsumować, gdyż na rachunku demo dla naszego przykładu otwieramy dwie pozycje):

http://www.ironfx.com/en/trading-products/forex

http://www.xtb.pl/regulacje/specyfikacja-instrumentow-finansowych-spready/cfd-staly-spread

 Zaś naliczanie punktów swapowych odbywa się w walucie bazowej, czyli u nas w USD.

Z moich obserwacji jednak wynika, że brokerzy niezbyt często zmieniają naliczanie ww. punktów swapowych (nawet przez rok.).

Drodzy czytelnicy zachęcam do dodawania swoich komentarzy, co do opłacalności i sensu takiej transakcji, także w formie obliczeń.

Pozdrawiam gorąco

Adam.

Anomalie na rynkach finansowych? cz. 1 forex

Pewnego dnia myśląc nad strategią inwestycyjną, która niwelowałaby skutki kryzysu finansowego  na świecie, a na której można było systematycznie zarabiać z niewielkim akceptowalnym ryzykiem (5% strat z dźwignią finansowa max. 1:100), wpadłem na pomysł ODWROTNOŚCI.

Jeśli wspólnymi siłami znajdziemy instrumenty finansowe (lub ich koszyk) kwotowanych w tej samej walucie (lub stworzymy ich wspólny mianownik), których zależność procentowa zmian wyniesie stałe  -1, to znajdziemy odpowiedź jak systematycznie zarabiać.

Współczynnik korelacyjny α (alpha) między np. dwoma instrumentami powinien wynosić (- 1)  i na przestrzeni ostatnich kilku lat jego wartość nie powinna się zmieniać.

Akceptowalna wartość zmienność tego współczynnika zależy od dźwigni finansowej i od częstotliwości powrotu jego wartości do -1

Wiele jest instrumentów finansowych, które sprawiają tylko wrażenie takiej korelacji np. USD/PLN i WIG20. Zagrożeniem są mimo że krótkie, lecz gwałtowne zmiany wartości wspomnianego współczynnika α.

Podejmując próbę znalezienia tego współczynnika pochyliłem się nad stworzeniem syntetycznego odwrotnego instrumentu finansowego do wyjściowego, który tracił by (-50%), podczas gdy zyskiwałby wyjściowy instrument (+100%)

Analizując rynki finansowe a zwłaszcza forex na rynku OTC, zainteresowała mnie różnica jaką zaobserwowałem na kontraktach CFD opartych na parach: EUR/GBP , EUR/USD i GBP/USD.

Różnica wynikająca z odjęcia wartości pary:

EUR/GBP od wartości tej samej pary syntetycznie stworzonej prze zemnie: (wartość EUR/USD podzielona przez wartość GBP/USD)

powinna wynieść 0 ,

a czasami przyjmuje wartość zbliżona do -1 lub +1 pipsa (czwarte miejsce po przecinku (jedna dziesięciotysięczna) na rynku forex nazywane jest pipsem).

Zaś jeszcze inna różnica: EUR/GBP – (EUR/PLN podzielone przez GBP/PLN) = już kilka pipsów.

Mam teraz gorąca prośbę do wszystkich programistów, aby w dowolnym języku może to być MQL4 skompilowanym w MT4 stworzyli dla nas wskaźnik obrazujący równicę między tymi dwoma parami.

Jeśli chodzi o mnie wskaźnik ten posłuży mi do dalszych badań, abym rozwijał mój algorytm do tworzenia bardziej złożonych instrumentów syntetycznych i indeksów.

Możemy sprawdzić na rachunku demo czy para syntetyczna odpowiada parze wyjściowej.

W tym celu otwieramy np. :

1) pozycję długą (czyli gramy na wzrosty) na parze EUR/GBP 10 lotów,

2) na EUR/USD krótką (obstawiamy spadki)10 lotów,

3 GBP/USD 8,16 lotów – długą.

Środki jakie należałoby zaangażować aby sprawdzić na rachunku demo powyższe obliczenia wynoszą (na dzień 23.04.2012) około 130 tys. zł

Zysk z rachunku w ciągu dnia nie powinna się zmieniać (może oscylowac od – 4000 zł do – 2000 zł). (Należy jednak uwzględnić koszty transakcji około 3000 zł (na dzień 23.04.2012) i punktów swap-owych (naliczanych za trzymanie pozycji przez noc))

Cena ustalana po BID (po ofercie kupna) pary EUR/GBP ustala wartość przez jaką należy pomnożyć ilość lotów wystawionych na poprzednich parach. Wynik równa się ilości wystawionych lotów na GBP/USD.

W chwili obecnej na rachunkach inwestycyjncyh u polskich MM można stworzyć kilka syntetycznych par EUR/GBP.

Jeśli pomyliłem się w swoich obliczeniach, to proszę o wasze w formie komentarza.

Bardo dziękuję za przeczytanie niniejszego wpisu i proszę o cenne uwagi.

Gorąco pozdrawiam

Adam