{ Indicator: _SharpeRatio.RS Description: Simplified indicator to Calculate a single SR value, for use with scanner. Divides a time period into segments, and calculates price gain in percent for each segment. If logarithmic growth is occuring, each segment will have a similar percentage gain. Radarscreen: LOAD ADDITION DATA MUST BE SET TO AT LEAST = [Offset + SegLength*MaxList(Segments1,Segments2) + 3] Note: When RiskFreeReturn is > 0, the graph of sharpe ratio using this formula may appear to exhibit some instability, abruptly changing values from plus to minus values. This is because of the modification of the formula where the sign of the RiskFreeReturn flips from positive to negative according to whether the AvgRR (Average rate of return) is a positive number or a negative. This modification allows the forumla to be used to screen for both potential longs and potential shorts, correctly adjusting the sign of the RiskFreeReturn accordingly. However, when using this calculation as a measure of performance, rather than for comparing potential long investments to potential short investments, it will be more useful to assume a RiskFreeReturn = 0. This will remove any apparent "unstable" behavior in the sharpe ratio signal. Author: Mark J. Krisburg Last Modified: 12/16/10 original version 07/17/11 calculate only when LastBarOnChart is reached. Calculation on other bars will Not be of use in Radarscreen indicator. 09/20/11 Add Length column before sharpe ratio } Inputs: Price(avgprice), SegLength(1), // use = 1 for weekly or monthly monthly charts, = 5 for daily charts (1 week) or = 22 (1 month) SegsPerYear(251), // = 52 if SegLength = 5 on Day Chart(1 week), = 12 if SegLength = 1 on Monthly Chart Segments(80), Offset(0), RiskFreeReturn(0), // annualized risk free return in percent. ShowMultiColor(false); Vars: Intrabarpersist bool LastBar(false), avgRR(0), // average return rate for 'Segments1' segments sdRR(0), // standard deviation of return rates intrabarpersist annRR(0), // annualized rate of return = RR * 12 (1 segment = 1 month) annSD(0), // annualized standard deviation of returns = sdRR * 12 (1 segment = 1 month) excessRR(0), // excess return = annualized rate of return - risk free return intrabarpersist SR(0); // Sharpe Ratio = Excess return / annualized standard deviation of returns Once (_LastBarOnChart) begin LastBar = true; end; If LastBar and BarStatus(1) = 2 then begin // prevent calculation every tick, even if Update every tick selected by mistake value1 = _SharpeRatio(Price, SegLength, SegsPerYear, Segments, RiskFreeReturn, Offset, avgRR, sdRR, annRR, annSD, excessRR, SR); Plot1(Segments, "Len"); Plot2(Offset, "Off"); Plot3(SR, "SR"); plot4(AbsValue(SR), "Abs SR"); If ShowMultiColor then begin Switch SR begin Case > 2: SetPlotBGcolor(3, green); SetPlotColor(3, black); Case > 1: SetPlotBGColor(3, darkgreen); Case < -2: SetPlotBGColor(3, red); Case < -1: SetPlotBGColor(3, darkred); end; end; end;