Sari la conținut
Postat

De cateva luni ma joc pe EUR/CHF si am inceput sa observ anumite pattern-uri. Asa ca am scris rapid un prototip de strategie ca sa vad daca doar mi se pare mie, sau chiar e ceva acolo. O rulare a ei pe tick-uri de la MB Trading:

 

D:\Work\Framework\bin\system\ec>ipy system.py
Loading D:\Work-BIG\Generated\TickDelta\MB Trading\EUR_CHF.vel
Filtering ticks
Tue, 06 Sep 2011, 08:20:00 -> Fri, 16 Dec 2011, 11:00:01
10,588,519 ticks
 
BUY   Tue, 06 Sep 2011, 08:20:01   1.20378 1.20425   profit:  0
SELL  Tue, 06 Sep 2011, 08:20:26   1.20612 1.20626   profit: 18
BUY   Tue, 06 Sep 2011, 08:20:26   1.20614 1.2064    profit:  0
BUY   Tue, 06 Sep 2011, 08:20:26   1.20568 1.2062    profit:  0
...
SELL  Fri, 16 Dec 2011, 08:15:41   1.22503 1.22524   profit: 21
BUY   Fri, 16 Dec 2011, 10:53:51   1.22285 1.22298   profit: 17
 
1,652 orders

Modelul a tranzactionat de 1600 de ori in 3 luni (aproape o data pe ora in medie), cu un profit frumusel. Dar sunt niste probleme - simularea nu e tocmai corect efectuata. Strategia foloseste ordine limita, si daca pretul sare peste cateva din ele, cele intermediare nu se executa cum ar trebui.

 

Asa ca am inceput sa rescriu simulatorul, si sa implementez un limit order book ca la carte, plus o suita de teste unitare care sa-i verifice functionalitatea. Momentan nu am nevoie de viteza si voi face totul in Python, dar daca timpul pt o rulare va depasi 10 minute (acum dureaza cam 20 sec), probabil voi rescrie in C++/CLI.

 

Sper sa termin order book-ul in cateva zile, si sa nu am surpriza ca nu mai e profitabila strategia Posted Image

 

Pe final, cateva posturi cu idei despre cum se implementeaza un LOB "industrial strength" de unde m-am inspirat:

http://www.quantcup....tlimitorderbook

http://tr8dr.wordpre.../hf-simulation/

  • Răspunsuri 19
  • Citiri 42k
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Featured Replies

Postat

Cred ca una dintre problemele mari din trading este ca nici un pattern sau vreo strategie nu va functiona la fel pentru o perioada lunga de timp. Ca sistemul sa fie de incredere ar trebui un backtesting pe cel putin 5 ani(de preferat 10) dpmdv, altfel risti sa dai de un "datamining streak", o perioada in care sistemul e profitabil dar care este o exceptie.

 

Sunt convins ca stii deja lucrurile astea asa ca intrebarea mea este urmatoarea: ai testat aceste patternuri pe istoric pe o periaoda lunga de timp? chiar si 3 ani de backtesting mi s-ar parea prea putin pentru a avea incredere in rezultatele unei abordari.

Postat

Cred ca una dintre problemele mari din trading este ca nici un pattern sau vreo strategie nu va functiona la fel pentru o perioada lunga de timp. Ca sistemul sa fie de incredere ar trebui un backtesting pe cel putin 5 ani(de preferat 10) dpmdv, altfel risti sa dai de un "datamining streak", o perioada in care sistemul e profitabil dar care este o exceptie.

 

Sunt convins ca stii deja lucrurile astea asa ca intrebarea mea este urmatoarea: ai testat aceste patternuri pe istoric pe o periaoda lunga de timp? chiar si 3 ani de backtesting mi s-ar parea prea putin pentru a avea incredere in rezultatele unei abordari.

 

daca testezi pe h15 sau pe daily diferenta este mare in numar de tranzactii mai precis de 96 de ori mai putine tranzactii pentru acelasi interval de timp. una e sa ai 60 de tranzactii pe daily in 10 de ani si alta este sa ai de 5760 tranzactii pe m15. din cele 2 testari unul este mult mai relevant decat celalalt. pe de alta parte backtestingul si cum se face are loc de idei mai multe si nu este batut in cuie.
Postat

cred ca ai dreptate: un test de 60 de tranzactii daily pe 10 ani poate sa nu fie prea relevant, dar piata se poate comporta atat de diferit de la un anotimp la altul, de la un an la altul incat parerea mea este ca indiferent de time frame un backtesting relevant ar trebui facut pe o perioada suficient de lunga de timp.

 

nu ma pricep dar probabil hft asa se face cu backtesting pe istoric recent, insa trebuie monitorizat atent si oprit din timp in caz ca sistemul nu mai da aceleasi rezultate. revin totusi cu aceasi idee, piata se va modifica constant si trebuie tot timpul sa te adaptezi. poate unii reusesc sa faca asta dar eu personal nu m-as baza pe cele 6000 de tranzactii facute intr-o perioada scurta de timp pentru ca de maine lucrurile s-ar putea sa fie cu totul altcumva. daca sistemul are rezultate bune pe ultimele 3 luni dar nu si pe ultimele 6 luni chiar ti-ai pune banii la lucru cu el? eu nu

Postat
  • Autor

Daca as avea un sistem profitabil cu 6000 tranzactii in ultimele 3 luni, l-as pune la lucru. Pt ca ai timp suficient sa te opresti din tranzactionare pana ii dispare edge-ul. De ex, dupa 1000 de tranzactii in care nu prea mai ai profit.

 

Cei pe care ii stiu ca fac HFT, in fiecare luna cauta noi strategii si le modifica sau le retrag pe cele care nu mai functioneaza.

 

BTW, strategia pe care o testez e puternic influentata de acel prag minim de 1.2 pe EUR/CHF. Nici nu are sens sa testez cu date de inaintea introducerii lui.

Postat

cred ca ai dreptate: un test de 60 de tranzactii daily pe 10 ani poate sa nu fie prea relevant, dar piata se poate comporta atat de diferit de la un anotimp la altul, de la un an la altul incat parerea mea este ca indiferent de time frame un backtesting relevant ar trebui facut pe o perioada suficient de lunga de timp.

 

nu ma pricep dar probabil hft asa se face cu backtesting pe istoric recent, insa trebuie monitorizat atent si oprit din timp in caz ca sistemul nu mai da aceleasi rezultate. revin totusi cu aceasi idee, piata se va modifica constant si trebuie tot timpul sa te adaptezi. poate unii reusesc sa faca asta dar eu personal nu m-as baza pe cele 6000 de tranzactii facute intr-o perioada scurta de timp pentru ca de maine lucrurile s-ar putea sa fie cu totul altcumva. daca sistemul are rezultate bune pe ultimele 3 luni dar nu si pe ultimele 6 luni chiar ti-ai pune banii la lucru cu el? eu nu

 

nu cred ca trebuie neaparat istoric recent. cred ca una din solutii ar fi ca sa testezi un sample mare de tradeuri ex 500-700 pentru fiecare an in parte daca sistemul genereaza atatea semnale. pentru mine eu am testat 1500 de tranzactii pentru ani diferiti dealungul a 10 ani pe forex h1 si pe istoric daily la bursa am testat dow jones din 1930 pana astazi si s&p din 1950 pana astazi. din punctul meu de vedere pietele dealungul timpului au un factor comun si nu se schimba cine stie ce. ce se schimba si e de domeniul evidentei este volatilitatea si din punct de vedere al graficelor am vazut ca pe bursa 1900 erau foarte multe bare de indecizie(dojiuri) . dar si asa sistemele au functionat corect.

o adaugire referitor la cazul de fata. majoritatea fondurilor de investitii care au in prezentare ca tehnica de trade modele matematice am vazut ca nu prea au rezultate ba unele chiar au si pierderi. siteul este iasg.com. se poate face search in functie de mai multi parametrii. un lucru la care mi-a folosit a fost sa vad cate fonduri sunt discretionare si cate sistematice iar concluzia este de 50/50.

Editat de lamishto

Postat

Daca as avea un sistem profitabil cu 6000 tranzactii in ultimele 3 luni, l-as pune la lucru. Pt ca ai timp suficient sa te opresti din tranzactionare pana ii dispare edge-ul. De ex, dupa 1000 de tranzactii in care nu prea mai ai profit.

 

Cei pe care ii stiu ca fac HFT, in fiecare luna cauta noi strategii si le modifica sau le retrag pe cele care nu mai functioneaza.

 

BTW, strategia pe care o testez e puternic influentata de acel prag minim de 1.2 pe EUR/CHF. Nici nu are sens sa testez cu date de inaintea introducerii lui.

 

robotul asta se incadreaza in categoria hft?

cam cu ce RR lucreaza?

Postat
  • Autor

Poate fi considerat HFT. Dar nu e ULLDMA (Ultra Low Latency Direct Market Access).

 

RR-ul e variabil de la trade la trade, dar e sub-unitar. Adica risca mai mult decat castiga. In schimb are o probabilitate foarte mare de castig.

 

Intre timp am terminat de implementat order book-ul, cel putin o varianta minimala. Acum il testez. Am creat si un DSL (domain specific language) pt asta:

 

http://dl.dropbox.com/u/190212/public/test_dsl.png

  • 2 săptămâni mai târziu...
Postat

Am mai gasit o chestie de genul intr-un grup de specialitate pe Linkedin:

 

There are winning systems that are given for free. But we are swimming in an ocean of trading systems and the systems that call the attraction those are the systems that are well marketed and spammed all over the net. Oh yes I have an example of that. It was about one system that was very simple. Using level 1 of technical analysis Posted Image.

 

It was based on the particular market conditions in the eur/chf. However the system was only for short term situation.

The idea was that the market action on eur/chf has become very antipersistent simultaneously at many time frames. By antipersistent I mean that the fractal dimension was above 1.5 all the time. And that is not natural for the Forex market. It is an anomaly. (Fractal market hypothesis)

The system was designed to take very few profits, and as the market was anti-persistent that is the logic thing to do. The stop was defined according to the fundamental data. It was the swiss central bank decision that it would not tolerate prices below 1.20

http://www.snb.ch/en...20110906.en.pdf

The result is history now but this was was made out of sample. The system doubled the account in a few days. I mean all the people I know we were just watching this and not believing this.

And yes sometimes some shares something important (the expert was designed by vgc, just giving credits). In the case it was a free money machine he even posted the settings all you had to do it make it rock and roll.

Great people want to share things for free (I do not mean stat arbitrage they are selfish by nature LOL).

But are we sure that we can recognize when you have pearls on the sand? If we can how much time we have to do that, not much really, as we are busy with our own research and ideas.

Even if there is, and there is a released information we are in an ocean of information and we just can't evaluate everything.

http://www.myfxbook....roswissy/177505

  • 1 an mai târziu...
Postat
  • Autor

M-am apucat din nou de lucru la robot.

 

Acum vreau sa termin back-tester-ul, sa extrag toate tranzactiile mele reale pe EUR/CHF de la FXCM, si apoi sa le trec prin back-tester. La final back-tester-ul ar trebui sa-mi arate aceiasi suma in cont ca si cea din contul real.

 

Testele unitare din poza de mai jos trec, dar vreau sa-l confirm si cu date reale pe tick-uri reale.

 

test_dsl_2.png

Postat
  • Autor

O prima simulare la o strategie ffff simpla pe EUR/CHF. Doar profitul net este calculat momentan, nimic altceva, dar avand in vedere specificul monedei...

 

Poate reusesc sa cuplez lista de executii la R si sa le analizez cu quantmod.

D:\Work\Framework\bin\system\ec>ipy system.py

Building simple ticks
SOURCE: LOADING E:\Work-BIG\Generated\TickDelta\FXCM Demo\EUR_CHF.vel
SOURCE: 80,975,699 ticks, quote_digits=5, quote_increment=1

Filtering ticks before 2011-09-06 08:20:00+00:00
SAVING E:\Work-BIG\Generated\Clean\Event\FXCM Demo_EUR_CHF.dat

Loading FXCM Demo_EUR_CHF.dat
06.09.2011 08:20:00
18.08.2013 23:59:41
21,942,670 ticks

level_size=20 points
unit_quantity=100,000
bid_level_count=25


2011-09-06 08:20:00 1.2038 [0/21,942,670]

2011-09-06 08:20:03 EXECUTED LIMIT BUY  100,000 at   1.248 id=25 tag=24                 -4398    100,000 @ 1.2480
2011-09-06 08:20:03 EXECUTED LIMIT BUY  100,000 at   1.246 id=24 tag=23                 -8597    200,000 @ 1.2470
2011-09-06 08:20:03 EXECUTED LIMIT BUY  100,000 at   1.244 id=23 tag=22                -12596    300,000 @ 1.2460
2011-09-06 08:20:03 EXECUTED LIMIT BUY  100,000 at   1.242 id=22 tag=21                -16395    400,000 @ 1.2450
2011-09-06 08:20:03 EXECUTED LIMIT BUY  100,000 at    1.24 id=21 tag=20                -19994    500,000 @ 1.2440
2011-09-06 08:20:03 EXECUTED LIMIT BUY  100,000 at   1.238 id=20 tag=19                -23393    600,000 @ 1.2430
2011-09-06 08:20:03 EXECUTED LIMIT BUY  100,000 at   1.236 id=19 tag=18                -26592    700,000 @ 1.2420
2011-09-06 08:20:03 EXECUTED LIMIT BUY  100,000 at   1.234 id=18 tag=17                -29591    800,000 @ 1.2410
2011-09-06 08:20:03 EXECUTED LIMIT BUY  100,000 at   1.232 id=17 tag=16                -32390    900,000 @ 1.2400
2011-09-06 08:20:03 EXECUTED LIMIT BUY  100,000 at    1.23 id=16 tag=15                -34989  1,000,000 @ 1.2390
2011-09-06 08:20:03 EXECUTED LIMIT BUY  100,000 at   1.228 id=15 tag=14                -37388  1,100,000 @ 1.2380
2011-09-06 08:20:03 EXECUTED LIMIT BUY  100,000 at   1.226 id=14 tag=13                -39587  1,200,000 @ 1.2370
2011-09-06 08:20:03 EXECUTED LIMIT BUY  100,000 at   1.224 id=13 tag=12                -41586  1,300,000 @ 1.2360
2011-09-06 08:20:03 EXECUTED LIMIT BUY  100,000 at   1.222 id=12 tag=11                -43385  1,400,000 @ 1.2350
2011-09-06 08:20:03 EXECUTED LIMIT BUY  100,000 at    1.22 id=11 tag=10                -44984  1,500,000 @ 1.2340
2011-09-06 08:20:03 EXECUTED LIMIT BUY  100,000 at   1.218 id=10 tag=9                 -46383  1,600,000 @ 1.2330
2011-09-06 08:20:03 EXECUTED LIMIT BUY  100,000 at   1.216 id=9 tag=8                  -47582  1,700,000 @ 1.2320
2011-09-06 08:20:03 EXECUTED LIMIT BUY  100,000 at   1.214 id=8 tag=7                  -48581  1,800,000 @ 1.2310
2011-09-06 08:20:03 EXECUTED LIMIT BUY  100,000 at   1.212 id=7 tag=6                  -49380  1,900,000 @ 1.2300
2011-09-06 08:20:03 EXECUTED LIMIT BUY  100,000 at    1.21 id=6 tag=5                  -49979  2,000,000 @ 1.2290
2011-09-06 08:20:03 EXECUTED LIMIT BUY  100,000 at   1.208 id=5 tag=4                  -50378  2,100,000 @ 1.2280
2011-09-06 08:20:03 EXECUTED LIMIT BUY  100,000 at   1.206 id=4 tag=3                  -50577  2,200,000 @ 1.2270
2011-09-06 08:21:15 EXECUTED LIMIT BUY  100,000 at   1.204 id=3 tag=2                  -51750  2,300,000 @ 1.2260
2011-09-06 08:23:50 EXECUTED LIMIT BUY  100,000 at   1.202 id=2 tag=1                  -57024  2,400,000 @ 1.2250
2011-09-06 08:25:58 EXECUTED LIMIT SELL 100,000 at   1.204 id=49 tag=1                 -50423  2,300,000 @ 1.2250
2011-09-06 08:28:28 EXECUTED LIMIT BUY  100,000 at   1.202 id=50 tag=1                 -56632  2,400,000 @ 1.2240
2011-09-06 08:38:34 EXECUTED LIMIT SELL 100,000 at   1.204 id=51 tag=1                 -50292  2,300,000 @ 1.2240
2011-09-06 09:16:00 EXECUTED LIMIT BUY  100,000 at   1.202 id=52 tag=1                 -55663  2,400,000 @ 1.2231
2011-09-06 09:37:57 EXECUTED LIMIT SELL 100,000 at   1.204 id=53 tag=1                 -50046  2,300,000 @ 1.2231
2011-09-06 14:02:13 EXECUTED LIMIT BUY  100,000 at   1.202 id=54 tag=1                 -55296  2,400,000 @ 1.2222
2011-09-06 16:48:36 EXECUTED LIMIT SELL 100,000 at   1.204 id=55 tag=1                 -49960  2,300,000 @ 1.2222
2011-09-06 18:10:04 EXECUTED LIMIT SELL 100,000 at   1.206 id=48 tag=2                 -45288  2,200,000 @ 1.2222

2011-09-06 19:00:38 1.205 [100,000/21,942,670]

2011-09-07 04:08:40 EXECUTED LIMIT BUY  100,000 at   1.204 id=57 tag=2                 -50543  2,300,000 @ 1.2214
2011-09-07 06:02:00 EXECUTED LIMIT SELL 100,000 at   1.206 id=58 tag=2                 -45000  2,200,000 @ 1.2214
2011-09-07 06:51:21 EXECUTED LIMIT BUY  100,000 at   1.204 id=59 tag=2                 -49883  2,300,000 @ 1.2207
2011-09-07 07:04:07 EXECUTED LIMIT SELL 100,000 at   1.206 id=60 tag=2                 -44800  2,200,000 @ 1.2207

...........................

2013-08-07 13:31:19 EXECUTED LIMIT BUY  100,000 at    1.23 id=1596 tag=15              146989  1,000,000 @ 1.2333
2013-08-12 08:08:27 EXECUTED LIMIT SELL 100,000 at   1.232 id=1597 tag=15              149190    900,000 @ 1.2333
2013-08-13 07:23:08 EXECUTED LIMIT SELL 100,000 at   1.234 id=1592 tag=16              150983    800,000 @ 1.2333
2013-08-13 12:10:05 EXECUTED LIMIT SELL 100,000 at   1.236 id=1591 tag=17              152592    700,000 @ 1.2333
2013-08-13 13:11:37 EXECUTED LIMIT SELL 100,000 at   1.238 id=1590 tag=18              153994    600,000 @ 1.2333
2013-08-13 14:10:44 EXECUTED LIMIT BUY  100,000 at   1.236 id=1601 tag=18              152716    700,000 @ 1.2337
2013-08-14 05:30:07 EXECUTED LIMIT SELL 100,000 at   1.238 id=1602 tag=18              154199    600,000 @ 1.2337
2013-08-14 05:52:59 EXECUTED LIMIT SELL 100,000 at    1.24 id=1579 tag=19              155394    500,000 @ 1.2337
2013-08-14 06:35:12 EXECUTED LIMIT SELL 100,000 at   1.242 id=1552 tag=20              156395    400,000 @ 1.2337

2013-08-14 07:10:58 1.2415 [21,800,000/21,942,670]

2013-08-14 14:27:38 EXECUTED LIMIT BUY  100,000 at    1.24 id=1605 tag=20              155489    500,000 @ 1.2349
2013-08-15 10:08:59 EXECUTED LIMIT SELL 100,000 at   1.242 id=1606 tag=20              156595    400,000 @ 1.2349
2013-08-15 14:10:02 EXECUTED LIMIT BUY  100,000 at    1.24 id=1607 tag=20              155670    500,000 @ 1.2360
2013-08-15 14:25:11 EXECUTED LIMIT BUY  100,000 at   1.238 id=1604 tag=19              154686    600,000 @ 1.2363
2013-08-15 17:36:18 EXECUTED LIMIT BUY  100,000 at   1.236 id=1603 tag=18              153494    700,000 @ 1.2363
2013-08-15 17:44:51 EXECUTED LIMIT BUY  100,000 at   1.234 id=1600 tag=17              152016    800,000 @ 1.2360
2013-08-15 17:58:38 EXECUTED LIMIT SELL 100,000 at   1.236 id=1611 tag=17              153750    700,000 @ 1.2360

2013-08-16 01:00:43 1.2361 [21,900,000/21,942,670]

2013-08-16 06:31:04 EXECUTED LIMIT SELL 100,000 at   1.238 id=1610 tag=18              155175    600,000 @ 1.2360
2013-08-16 07:32:47 EXECUTED LIMIT BUY  100,000 at   1.236 id=1613 tag=18              153866    700,000 @ 1.2360
2013-08-16 12:42:22 EXECUTED LIMIT BUY  100,000 at   1.234 id=1612 tag=17              152447    800,000 @ 1.2357
2013-08-18 23:17:36 EXECUTED LIMIT SELL 100,000 at   1.236 id=1615 tag=17              154185    700,000 @ 1.2357

executed order count:     1,591
pending buy  order count: 18
pending sell order count: 7

closed profit: 154,010
open profit:   14
total profit:  154,024

traded volume: 159,100,000

net position at end: 700,000 @ 1.2357

Editat de gigi

Alătură-te conversației

Poți posta acum și să te înregistrezi mai târziu. Dacă ai un cont, autentifică-te acum pentru a posta cu contul tău.

Vizitator
Răspunde la acest subiect...

Navigare recentă 0

  • Nici un utilizator înregistrat nu vede această pagină.

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.