Fixup
/*P_RandomPriceSeries*/
//Use as a Scan to create PseudoRandomPriceSeries
//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 [email protected], "brian_z111" <brian_z...@...> 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.
>