Hi Brian,

Interesting topic.

Mandelbrot (seen one fractal, seen em all) has some excellent discussion 
on synthetic data in his book "The (Mis)Behaviour of markets". He uses
a multifractal approach to producing simulated markets. The price
behaviour produced by his approach looks identical to real price data and
is not "psuedo random" in the ordinary sense.

I think you'd like the book, it's very approachable, and all the maths
is hidden away in the back.

Z




________________________________
From: brian_z111 <[email protected]>
To: [email protected]
Sent: Thursday, 18 June, 2009 3:46:20 PM
Subject: [amibroker] Re: Benchmarking





Fixup

/*P_RandomPriceSeri es*/

//Use as a Scan to create PseudoRandomPriceSe ries
//Select Current symbol and All quotations in AA, select basetimeframe in AA 
Settings
//It will also create the series if used as an indicator (add the appropriate 
flag to ATC)
// but this is NOT recommended as it will recalculate them on every refresh.
//Indicator mode is good for viewing recalculated curves (click in whitespace)
//Do not have the indicator code uncommented while running the scan
//CommentOut the Scan code before using the indicator code.

N = 100;//manually input desired Number - used in Scan AND Indicator mode

///SCAN///// ///////// ///////// ///////// ///////// ///////// ///////// 
////////

Buy=Sell=0;

for( i = 1; i < N; i++ ) 

{ 

VarSet( "D"+i, 100 * exp( Cum(log(1 + (Random() - 0.5)/100)) ) ); 
AddToComposite( VarGet( "D"+i ),"~Random" + i,"X",1|2|128) ;
//Plot( VarGet( "D"+i ), "D"+i, 1,1 ); 
//PlotForeign( "~Random" + i,"Random" + 1,1,1);
} 

/*
////PLOT//// ///////// ///////// ///////// ///////// ///////// ////

//use the same period setting as for the Scan

for( i = 1; i < N; i++ ) 

{ 

PlotForeign( "~Random" + i,"Random" + i,1,1);

} 

*/

////OPTIMIZE/ ///////// ///////// ///////// ///////// ///////// ///////// ////

//use the filter to run on Group253 OR add ~Random + i PseudoTickers to a 
Watchlist and define by AA filter

//fast = Optimize( "MA Fast", 1, 1, 10, 1 ); 
//slow = Optimize("MA Slow", 4, 4, 20, 1 ); 

//PositionSize = -100/P;
//Buy = Cross(MA(C,fast) ,MA(C,slow) );
//Sell = Cross(MA(C,slow) ,MA(C,fast) );

//Short = Sell;
//Cover = Buy;

--- In amibro...@yahoogrou ps.com, "brian_z111" <brian_z111@ ...> wrote:
>
> Following recent discussions on benchmarking and using rule based systems to 
> engineer returns to meet 'clients' profiles i.e.Samantha' s MA(C,10) example, 
> I did some follow up R&D with the intent of expanding the examination a 
> little further via a zboard post.
> 
> I may, or may not, get around to that so in the meantime I decided I would 
> share a couple of things while they are still topical.
> 
> I made up some quick and dirty randomly generated eq curves so that I could 
> optimise MA(C,10) on them (out of curiosity).
> 
> Also, out of curiosity, I decided to see how the example signal/filter code 
> that I made up, as the study piece for Yofas topic on benchmarking, would 
> actually perform.
> 
> Buy = Ref(ROC(MA(C, 1),1),-1) < 0 AND ROC(MA(C,1), 1) > 0 AND ROC(MA(C,10) 
> ,1) > 0;
> Sell = Cross(MA(C,10) ,C);//no thought went into this exit and I haven't 
> tried any optimization of the entry or the exit
> 
> By chance I noticed that it outperformed on one or two of the constituents of 
> the ^DJI (Yahoo data ... 2005 to 2009) and to the naked eye the constituents 
> all seem to be correlated to a fair extent over that time range.
> 
> Also, to the naked eye, it outperforms on randomly generated stock prices 
> around 50% of the time and the outperformnce doesn't appear to be correlated 
> to the underlying(I haven't attempted to find an explanation for this).
> 
> Here is the code I used to make up some randomly generated 'stocks'.
> 
> As we would expect it produces, say, 100 price series with a concatenated 
> mean of around zero (W/L = 1 and PayoffRatio == 1) etc.
> When plotted at the same time ... individual price series are dispersed 
> around the mean in a 'probability cone' ... in this case it is a relatively 
> tight cone because the method doesn't introduce a lot of volatility to the 
> series.
> 
> /*P_RandomEquity* /
> 
> //Use as a Scan to create PseudoRandom Equity curves
> //Current symbol, All quotations in AA, select basetimeframe in AA Settings
> //It will also create the curves if used as an indicator (add the appropriate 
> flag to ATC)
> // but this is NOT recommended as it will recalculate them on every refresh.
> //Indicator mode is good for viewing recalculated curves (click in whitespace)
> //CommentOut the Scan code before using the indicator code.
> //Don't use a very large N or it will freeze up indicator scrolling etc
> 
> n = 100;//manually input desired number - used in Scan AND Indicator mode
> 
> ///SCAN///// ///////// ///////// ///////// ///////// ///////// ///////// 
> ////////
> 
> 
> Buy=Sell=0;
> 
> for( i = 1; i < n; i++ ) 
> 
> { 
> 
> VarSet( "D"+i, 100 * exp( Cum(log(1 + (Random() - 0.5)/100)) ) ); 
> AddToComposite( VarGet( "D"+i ),"~Random" + i,"X",1|2|128) ;
> //Plot( VarGet( "D"+i ), "D"+i, 1,1 ); 
> //PlotForeign( "~Random" + i,"Random" + 1,1,1);
> } 
> 
> /*
> ////PLOT//// ///////// ///////// ///////// ///////// ///////// ////
> 
> //use the same number setting as for the Scan
> 
> 
> for( i = 1; i < n; i++ ) 
> 
> { 
> 
> PlotForeign( "~Random" + i,"Random" + i,1,1);
> 
> } 
> 
> 
> ////OPTIMIZE/ ///////// ///////// ///////// ///////// ///////// ///////// ////
> 
> //use the filter to run on Group253 OR add ~Random + i PseudoTickers to a 
> Watchlist and define by AA filter
> 
> 
> //fast = Optimize( "MA Fast", 1, 1, 10, 1 ); 
> //slow = Optimize("MA Slow", 4, 4, 20, 1 ); 
> 
> //PositionSize = -100/P;
> //Buy = Cross(MA(C,fast) ,MA(C,slow) );
> //Sell = Cross(MA(C,slow) ,MA(C,fast) );
> 
> //Short = Sell;
> //Cover = Buy;
> 
> I also stumbled on this, which seems to have some relevance:
> 
> http://www.scribd. com/doc/6737301/ Trading-eBookCan -Technical- Analysis- 
> Still-Beat- Random-Systems
> 
> 
> It contains a link to a site that has a free download of some RNG produced 
> datasets.
> 
> There hasn't been much discussion on using synthetic data in the forum ... 
> Patrick recommended it for testing? OR benchmarking? ... Fred is against 
> using it ("If we knew enough about the characteristics of the data, in the 
> first place, to be able to create synthetic data then we would know enough to 
> design trading systems to exploit the data's profile anyway", OR something 
> like that).
> 
> I was titillated enough by my first excursion into benchmarking with 
> synthetic data to bring me back for some more.
>


   


      Access Yahoo!7 Mail on your mobile. Anytime. Anywhere.
Show me how: http://au.mobile.yahoo.com/mail

Reply via email to