b130 dev2 - randomize history data

I still can't understand these results which lookslike this - original EQ curve vs. EQ curves from MC test which are holding together but all of them has different direction versus original strategy



in dev2 was made some changes, but how could this be right?


what exatly does this MC test doing, because by randomize params i imagine, that HIGH and LOW of the candles are shifted up or down in some probability and with some amount of pips


so the results should be different EQ curves, because the candle for every MC run should be different...but they are not


with original settings 20/10/20/10 from 216 strats everyone is passed


here is used 50/50/50/50


i really dont understand what we are seeing in this test...

Attachments
random data.jpg
(198.15 KiB)
  • Votes +4
  • Project StrategyQuant X
  • Type Bug
  • Status Refused
  • Priority Normal

History

h
#1

hankeys

29.11.2020 18:24

Task created

h
#2

hankeys

29.11.2020 18:25
Voted for this task.
f
#3

fm663

29.11.2020 18:41
it looks like there were slippage added to the MC test.
h
#4

hankeys

29.11.2020 19:08
by my opiniont it works strange - maybe the change of OHLC is made only once - so there is made only 1 different datafeed and for every MC run the change of volatiliy is made on the same candles...because of that every MC run goes with the same direction
b
#5

bentra

29.11.2020 19:30


As Marc says this code is exposed. 



public void modifyData(IRandomGenerator rng, TickEvent tickEvent, double globalATR) { double dblProbability = ((double) Probability/ 100.0d); if(rng.probability(dblProbability)) { // we should change this price double ask = tickEvent.getAsk(); double bid = tickEvent.getBid(); double spread = ask - bid; int change; if(relativeMaxChange <= 0) { change = rng.nextInt(MaxChange); } else { change = rng.nextInt(relativeMaxChange); } double dblChange = ((double) change)/ 100.0d; double priceChange = 2 * globalATR * dblChange; bid = (rng.nextInt(2) == 0 ? bid + priceChange : bid - priceChange); tickEvent.setBid(bid); tickEvent.setAsk(bid + spread); } }


something like:

On each tick
-Get bid and ask of original data
-Change bid randomly +/- based on % of a long term ATR.
-ask is now same as bid plus the spread
-return the new bid and ask for the rest of the functions.

This will create violent choppy ticks and increase volatility especially with numbers as high as 50% of ATR. 

Bias for limit orders combined with tight TP and far away SL.
Bias against stop order entries and tight SL.

The code is exposed so we can change the algo. 



b
#6

bentra

29.11.2020 19:30
Voted for this task.
MF
#7

Mark Fric

30.11.2020 09:35

Status changed from New to In progress

MF
#8

Mark Fric

01.12.2020 13:26

Status changed from In progress to Refused

I don't see any obvious mistake in the algorithm. I think the screenshot you posted is telling us that the strategy was fitted to the original data. 


When you change the data in MC tests the performance becomes much worse.

b
#9

bentra

05.12.2020 02:06
k
#10

Karish

06.12.2020 00:51
Voted for this task.

Votes: +4

Drop files to upload

or

choose files

Max size: 5MB

Not allowed: exe, msi, application, reg, php, js, htaccess, htpasswd, gitignore

...
Wait please