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
Yahoo! Groups Links
|