PureBytes Links
Trading Reference Links
|
Joe,
Thanks a bunch. More than I bargained for..it'll take me a little
while to digest. I'm familiar with FastTrack crowd. Now just trying
to make switch over to AB without FT and still get some of the
excellent tools I had at FT. Biggest problem is lack of programming
skill.
Thanks very much
Dave
--- In amibroker@xxxxxxxxxxxxxxx, "Joe Landry" <jelandry@xxxx> wrote:
> Dave 9542 -
>
> All of the formulas can be attributed to Brian Stocks author of
FastTools, Ed Gilbert author TRADE and SCRIPTS written by others,
CHEESE CHARTS,
>
> and a local Amibroker guru (who become well know to you in the
weeks ahead as he ramps up a virtual training room) .
>
> There are a few things with this routine that can trip you up
depending on your data base. One is the money market rate, 2) the
>
> assumed risk free interest rates where convention uses 5.4% (man I
wish this were true), 3) the symbol of the Russell 2000 index,
>
> and the window or so called MPT period. The latter are in two
parameters to adjust. I've seen many versions of MPT calculations
and they all present somewhat different values for UI and UPI. All
of the formulas can be attributed to FastTools,
>
> TRADE SCRIPTS, CHEESE CHARTS, and a local Amibroker guru.
>
> You can strip the UI UPI code from this and make your own
exploration routine that doesn't depend on BUY/SELL or the equity
curve.
>
> Best regards
> JOE
>
> // *************************** Function Section to calculate Risk
Free Fixed Rate *********
>
> function Irate(interest_rate)
>
> {
>
> // This gets the log of the daily rate
>
> logbarfactor = log(1 + interest_rate / 100) / 252;
>
> // Force the first bar to 0
>
> logvect = IIf(BarIndex() == 0, 0, logbarfactor);
>
> // Sum the log of the daily gain factors and
>
> // convert back to get equity
>
> return(exp(Cum(logvect)));
>
> }
>
> // General Section
>
> period = 22; // 22 trading days a month
>
> MPT_Period = Param("MPT Period", 252,125,500,5);
>
> IndexSym = ParamStr("Russell 2000 Index Symbol","!rut");
>
> // ------------------------------------MPT Section------------------
------------------
>
> Index = Foreign(IndexSym,"Close");
>
> rfFund = Foreign("FDRXX","C");
>
> riskfree = ((rffund/ Ref(rfFund,-MPT_Period)))^(252);
>
>
> // Correlation coefficient of Equity to the Index
>
> Corr = 100*Correlation(ROC(C,1),ROC(Index,1),MPT_Period);
>
> SDF = StDev(ROC(Close, 1),MPT_Period);
>
> SDI = StDev(ROC(Index, 1),MPT_Period);
>
> RelStDev = SDF/SDI;
>
> // Calculation of Beta -
>
> Beta = Corr * RelStDev/100; // volatily relative to benchmark
>
> NCAlpha = MA(ROC(Close,1),MPT_Period) - RelStDev*MA(ROC
(Index,1),MPT_Period); // noncorrelated Alpha
>
> Alpha = MA(ROC(Close,1),MPT_Period) - Beta*MA(ROC
(Index,1),MPT_Period); // textbook definition
>
> // SHARPE PERFORMANCE INDEX a risk adjusted measure of the
performance of an equity compared to the risk free benchmark standard
rate of return = 5%
>
> SHARPE = ( MA(ROC(C,1),MPT_Period) - MA(ROC(irate
(2.2),1),MPT_Period) )/(SDF);
>
>
> // ----------------------------------- UPI Code --------------------
-------------------
>
> // Retracements from the Highest High Current Draw Down Here using
Monthly Period to cal these numbers.
>
> Cdd = (HHV(C,MPT_Period) - C)/HHV(C,MPT_Period);
>
> // Max draw down
>
> MaxDD = HHV(CDD,MPT_Period);
>
> // Sum of all retracements squared -
>
> R2 = (Sum(Cdd*Cdd,MPT_Period))/(MPT_Period-1);
>
> // Ulcer Index -Cumulative downside volatility of an equity
>
> UI = sqrt(R2);
>
> // Annual compound percentage rate of return
>
> TR = Close/Ref(Close,-MPT_Period); // Total Return for 1 year
>
> ANN = (exp(log(TR))-1); // Annual compounded rate of return
>
> // Ulcer performance index - risk adjusted performance of an
investment.
>
> UPI = (ANN - irate(2.2)/100)/UI; // I have 2.2% here, early
analysts used 5.4%
>
> // ----------------------------- Performance Calculation -----------
-----------------
>
> EndV = ValueWhen(DateNum()==DateNum(),C); // Today's Close
>
> // hardcoded for 2005
>
> BegV = ValueWhen(DateNum()==1050103,Close); // Starts year with Jan
3, 2005 Closing Value
>
> YTD = 100*(EndV-BegV)/BegV;
>
> // --------------------------- Calculate RSI / Stochastics -
Exploration --------------------------------------
>
> slow=LLV(C,21);
>
> shigh=HHV(C,21);
>
> faststoc=EMA(100*(C-slow)/(shigh-slow),13)/2 + RSI(14)/2;
>
> momentum=faststoc-Ref(faststoc,-6); // as used in Cheese3 and FT
>
> momentumchg=((faststoc-Ref(faststoc,-6))/Ref(faststoc,-6))
*100; //as used in Cheese3 and FT
>
> // ---------------------------- Test Section -----------------------
---
>
> xbar = MA(ROC(C,1),MPT_Period);
>
> SumR2 = Sum((ROC(C,1)-xbar)^2,MPT_Period);
>
> Sigma = (SumR2/(MPT_Period-1))^.5;
>
>
>
> Filter =1;
>
>
> AddTextColumn(FullName(),"Name",1.2);
>
> AddColumn(Corr,"Cor Coeff");
>
> AddColumn(Alpha,"Alpha");
>
> AddColumn(NCAlpha,"NCAlpha");
>
> AddColumn(Beta,"Beta");
>
> AddColumn(SDF,"Std Dev");
>
> AddColumn(RelStDev,"RelSD");
>
> AddColumn(Sharpe,"Sharpe");
>
> AddColumn(100*Ann,"ANN");
>
> AddColumn(100*MaxDD,"MDD %");
>
> AddColumn(100*UI,"UI");
>
> AddColumn(UPI,"UPI");
>
> AddColumn(faststoc,"Stoch/RSI",1.2);
>
> AddColumn(momentum,"Mom",1.2);
>
> AddColumn(momentumchg,"Mom-Chg%",1.2);
>
> AddColumn(ROC(C,Period)," 1 mnth");
>
> AddColumn(YTD," YTD");
>
> AddColumn(ROC(C,MPT_Period)," 1 yr ");
>
> ----- Original Message -----
> From: dave9542
> To: amibroker@xxxxxxxxxxxxxxx
> Sent: Thursday, April 14, 2005 2:01 PM
> Subject: [amibroker] Ulcer Index and Ulcer Performance Index
>
>
>
>
> Newby needs help.
>
> I am interested in code that allows me to look at Ulcer Index and
> Ulcer Performance Index for individual issues. Marcin was good
enough
> to point me to code written by Ken Close and then modified by TJ
but
> I still cannot get it to work. When run in Explore I'm told
> that "variable Buy is used without being initialized".
>
> Is it enough to place "Buy = 1" as first line in code or does
this
> distort results?
>
> Here's code
>
> Filter = Buy OR Sell;
> Eq=Equity(0,0);
> Per = 252;
> Per2 = 40;
> Cdd = (HHV(Eq,Per2) - Eq)/HHV(Eq,Per2);
> MaxCdd = HHV(Cdd,252)*100;
> R2 = (Sum(Cdd*Cdd,Per))/Per;
> UI = 100*sqrt(R2);
> Gain = Eq/Ref(Eq,-Per);
> ANN = 100 * ((Gain^(252/Per)) - 1);
> UPI = (ANN - 0.054)/UI;
> AddColumn(MaxCdd,"MaxCdd",1.2);
> AddColumn(ANN,"ANN",1.2);
> AddColumn(UPI,"UPI",1.3);
> AddColumn(ANN/MaxCdd,"ANN/dd",1.3);
>
> Thanks
> Dave
>
>
>
>
>
>
>
>
>
> Please note that this group is for discussion between users only.
>
> To get support from AmiBroker please send an e-mail directly to
> SUPPORT {at} amibroker.com
>
> For other support material please check also:
> http://www.amibroker.com/support.html
>
>
>
>
>
> --------------------------------------------------------------------
----------
> Yahoo! Groups Links
>
> a.. To visit your group on the web, go to:
> http://groups.yahoo.com/group/amibroker/
>
> b.. To unsubscribe from this group, send an email to:
> amibroker-unsubscribe@xxxxxxxxxxxxxxx
>
> c.. Your use of Yahoo! Groups is subject to the Yahoo! Terms of
Service.
------------------------ Yahoo! Groups Sponsor --------------------~-->
In low income neighborhoods, 84% do not own computers.
At Network for Good, help bridge the Digital Divide!
http://us.click.yahoo.com/EpW3eD/3MnJAA/cosFAA/GHeqlB/TM
--------------------------------------------------------------------~->
Please note that this group is for discussion between users only.
To get support from AmiBroker please send an e-mail directly to
SUPPORT {at} amibroker.com
For other support material please check also:
http://www.amibroker.com/support.html
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/amibroker/
<*> To unsubscribe from this group, send an email to:
amibroker-unsubscribe@xxxxxxxxxxxxxxx
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|