PureBytes Links
Trading Reference Links
|
Oops Joe, not Fred,
Damn, old age. Losing it
Dave
----- Original Message -----
Sent: Friday, April 15, 2005 9:07
AM
Subject: Re: [amibroker] Re: Ulcer Index
and Ulcer Performance Index
Thanks again Fred
I was at this past year's Clearwater conference
and am waiting for Richard to get up to speed. Wish him a speedy
recovery.
Your file works fine, now I gotta figure out all
the pieces. This reminds me of the spreadsheet capability in FT which I used
quit a bit and was hoping to replicate in AB. It's too bad there isn't a way
to make it more "interactive" with the watch list, i.e. ranking the watch list
as the results of say Explore can be ranked by clicking on a column
heading. Being a visual guy, clicking through the various curves in some
rank order like UI gave an intuitive sense for the change in the numbers. I'd
have an index or another issue on the same screen for comparison.
Thanks again for your help
Dave
----- Original Message -----
Sent: Friday, April 15, 2005 5:35
AM
Subject: Re: [amibroker] Re: Ulcer
Index and Ulcer Performance Index
Dave
There's a neat package in the Clearwater FT
Monitor Conference CDs for 2005 written by Bill Barnard
that bridges the a lot of the gaps between FT
and Amibroker, except TRADE, and provides the UI UPI metrics
plus others. You even get the black
(ugh!) screens and all the conventions of
FT(red for buy and green for sell)
The CDs have not been released yet but due to
be released any month now. Although
conf was in Feb, the coordinator Richard Boroff was
under the weather for a while but is back at it
now I believe.
Write me if you have questions about the
Explorer. Tell me what database you have and I
could clip the just the UI UPI section from it.
JOE
----- Original Message -----
Sent: Thursday, April 14, 2005 8:47
PM
Subject: [amibroker] Re: Ulcer Index
and Ulcer Performance Index
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.
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
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
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
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
|
|