[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Re: Custom Metric - How to calculate R-squared of equity curve?



PureBytes Links

Trading Reference Links



Sorry,

Forgot that the rich text editor fails when using Google Chrome.

What I tried to say was that you can push Howard's code inside the custom backtester to get your value. When working with a single symbol it should be the same thing (though I note that it is not for some unknown reason). When working with a portfolio it will be for the entire portfolio.


Buy = Month() != Ref( Month(), -1
);
Sell = BarsSince( Buy ) >= 10
;
Buy = ExRem( Buy, Sell
);
Sell = ExRem( Sell, Buy
);

e =
Equity(1
);
Refline =
Cum( 1
);
rsquared =
Correlation( e, Refline, 21 ) ^ 2
;

Plot( C, "C", colorBlack, styleCandle
);

shape =
Buy * shapeUpArrow + Sell * shapeDownArrow
;
shapecolor =
IIf( Buy, colorGreen, colorRed
);

PlotShapes
( shape, shapecolor );
Plot( e, "e", colorGreen, styleLine | styleLeftAxisScale
);
Plot( Refline, "refline", colorBlue, styleLine | styleOwnScale
);
Plot( rsquared, "rSqr", colorRed, styleLine | styleOwnScale
);

// Added these lines
Plot( Foreign( "~RSQ", "X" ), "RSQ", colorDarkRed, styleDashed | styleOwnScale
);

SetCustomBacktestProc( ""
);

if ( Status( "action" ) == actionPortfolio
)
{
    bo =
GetBacktesterObject
();
    bo.Backtest();

    e =
Foreign( "~~~Equity", "C"
);
    refline =
Cum( 1
);
    rsquared =
Correlation( e, refline, 21 ) ^ 2
;
    bo.AddCustomMetric(
"R-Squared", LastValue
( rsquared ) );

    
AddToComposite( rsquared, "~RSQ", "X", atcFlagDefaults | atcFlagEnableInPortfolio | atcFlagEnableInBacktest
);
}

Mike


--- In amibroker@xxxxxxxxxxxxxxx, "sfclimbers" <sfclimbers@xxx> wrote:
>
>
> --- In amibroker@xxxxxxxxxxxxxxx, "ramoncummins" ramoncummins@
> wrote:
> >
> > Hi Howard, thanks for your reply.
> >
> > However, the reason I want to use the custom backtester is so that the
> r-squared metric appears as a column in the system statistics when I
> analysis a portfolio of individual stocks (say the S&P 500 for example)
> - this would allow me to find the best equity curves quickly.
> >
> > Any further input would be greatly appreciated!
> >
> > Ramon
> >
> >
> > --- In amibroker@xxxxxxxxxxxxxxx, Howard B howardbandy@ wrote:
> > >
> > > Hi Ramon --
> > >
> > > You do not need custom backtester to get the statistic you want.
> Try this
> > > code:
> > >
> > > ///////////////////////
> > >
> > > // EquityRsqr.afl
> > > //
> > > Buy = Month() != Ref( Month(), -1 );
> > > Sell = BarsSince( Buy ) >= 10;
> > >
> > > Buy = ExRem( Buy, Sell );
> > > Sell = ExRem( Sell, Buy );
> > >
> > > e = Equity();
> > >
> > > Refline = Cum( 1 );
> > >
> > > rsquared = Correlation( e, Refline, 21 ) ^ 2;
> > >
> > > Plot( C, "C", colorBlack, styleCandle );
> > > shape = Buy * shapeUpArrow + Sell * shapeDownArrow;
> > > shapecolor = IIf( Buy, colorGreen, colorRed );
> > > PlotShapes( shape, shapecolor );
> > >
> > > Plot( e, "e", colorGreen, styleLine | styleLeftAxisScale );
> > > Plot( Refline, "refline", colorBlue, styleLine | styleOwnScale );
> > >
> > > Plot( rsquared, "rSqr", colorRed, styleLine | styleOwnScale );
> > >
> > > /////////////////////
> > >
> > > Thanks,
> > > Howard
> > >
> > > On Mon, Aug 31, 2009 at 3:12 PM, ramoncummins ramoncummins@xxxxx:
> > >
> > > >
> > > >
> > > > Hi there
> > > >
> > > > I am trying to calculate the r-squared value of my equity curve
> using the
> > > > custom backtester (this is a measure of goodness of 'fit' -
> basically so I
> > > > can test for a nice smooth equity curve).
> > > >
> > > > The generic r-squared formula is :
> > > >
> > > > r-squared = Correlation(array1, array2, periods) ^ 2
> > > >
> > > > However I don't know what arrays to pass this equation. One of the
> arrays
> > > > will need to be the equity curve and the other just a counter type
> array -
> > > > like barindex(). Any help very much appreciated, my experience
> using the
> > > > custom backtester is very limited!
> > > >
> > > > cheers
> > > >
> > > > Ramon
> > > >
> > > >
> > > >
> > > >
> > >
> >
>



__._,_.___


**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

TO GET TECHNICAL SUPPORT send an e-mail directly to
SUPPORT {at} amibroker.com

TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/





Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required)
Change settings via email: Switch delivery to Daily Digest | Switch to Fully Featured
Visit Your Group | Yahoo! Groups Terms of Use | Unsubscribe

__,_._,___