PureBytes Links
Trading Reference Links
|
hi herman,
thank you very much for posting
this beautiful code.
thanks also to DT for helping
out.
i have noted though that when
applying the code to a watchlist that has a hundred or more stocks in it,
amibroker crashes. with watchlists of up to 99 constituents it works fine, one
more and amibroker gives a "CSysException". i already sent my bug report to
tomasz.
could someone please verify this?
could this be
code-inherent?
thanks,
dirk
<BLOCKQUOTE
>
----- Original Message -----
<DIV
>From:
Herman vandenBergen
To: <A title=amibroker@xxxxxxxxxxxxxxx
href="">amibroker@xxxxxxxxxxxxxxx
Sent: Friday, November 28, 2003 10:24
AM
Subject: RE: [amibroker] Re: to HERMAN:
N100 Correlation table
<FONT face=Arial color=#0000ff
size=2>Very nice DT, thanks! I'll be using that frequently. Below is
what the Correlation matrix, with help from the list, developed into.
<FONT
face=Arial>// Exploration to create Correlation
matrix
<FONT
color=#0000ff><FONT
color=#ff0000>Buy=<FONT
color=#ff0000>Sell=<FONT
color=#ff0000>Short=<FONT
color=#ff0000>Cover=<FONT
color=#ff00ff>0<FONT
color=#000000>; <FONT
color=#ff0000>Filter =
Status(<FONT
color=#ff00ff>"LastBarInTest"<FONT
face=Arial>); list = <FONT
color=#0000ff>GetCategorySymbols( <FONT
color=#ff0000>categoryWatchlist,
2<FONT
face=Arial> ); <FONT
color=#ff0000>for(
NumTickers=0;
(StrExtract( list,
NumTickers )) != ""<FONT
size=2>; NumTickers++ );
AddTextColumn<FONT
color=#000000>(Name<FONT
color=#000000>(),"Ticker"<FONT
color=#000000>,1.0<FONT
size=2>); <FONT
color=#ff0000>for(
Col=0<FONT
face=Arial>; Col<NumTickers; Col++)
{ Ticker1 = <FONT
color=#0000ff>Name<FONT
color=#000000>(); Ticker2 = <FONT
color=#0000ff>StrExtract<FONT
face=Arial>( list, Col); Var1 =
Foreign<FONT
color=#000000>(Ticker1,<FONT
color=#ff00ff>"C"<FONT
color=#000000>); Var2 = <FONT
color=#0000ff>Foreign(Ticker2,<FONT
color=#ff00ff>"C"<FONT
color=#000000>); Test = <FONT
color=#0000ff>Correlation( Var1, Var2,
8<FONT
face=Arial> ); Color =
IIf<FONT
color=#000000>(Test>0<FONT
color=#000000>, <FONT
color=#ff0000>colorBrightGreen,
IIf<FONT
color=#000000>(Test<0<FONT
color=#000000>, <FONT
color=#ff0000>colorRed,
<FONT
color=#ff0000>colorWhite<FONT
size=2>)); Color
= IIf<FONT
color=#000000>(Ticker1==Ticker2, <FONT
color=#ff00ff>1<FONT
color=#000000>, Color); <FONT
color=#0000ff>AddColumn( Test, Ticker2,
1.3, <FONT
color=#ff00ff>1,
Color); }
<FONT face=Arial
size=2>
<IMG alt="" hspace=0
src="" align=baseline
border=0>
<FONT face=Arial color=#0000ff
size=2>
<FONT face=Tahoma
size=2>-----Original Message-----From: DIMITRIS TSOKAKIS
[mailto:TSOKAKIS@xxxxxxxxx]Sent: November 28, 2003 1:46
PMTo: amibroker@xxxxxxxxxxxxxxxSubject: [amibroker]
Re: to HERMAN: N100 Correlation
tableHerman,There is no need to write the 100
tickers. If they belong to WL10, thenlist = GetCategorySymbols(
categoryWatchlist, 10 );tickerlist="";for( i = 0; ( sym =
StrExtract( list, i ) ) != ""; i++
){tickerlist=tickerlist+sym+",";}Title=tickerlist;The
advantage is that you don't have to correct the code after any N100
change, it is done automatically as soon as you correct WL10.Note also
that StrExtract() needs a "comma-separated list of items", that's
why the above +",". The result will have a "," at the end, but this is
not a problem.Dimitris Tsokakis--- In amibroker@xxxxxxxxxxxxxxx,
"Dave Merrill" <dmerrill@xxxx> wrote:> I've lost track of
the original context, but could you do this even more> easily by
iterating through the tickers in a known watchlist?> >
Dave> > this is actually the "data" type statement
I have been looking for....> wanted to store individual
thresholds in some easy way - this is easier than> a file system
:-)> > herman>
-----Original Message-----> From: Tomasz
Janeczko [mailto:amibroker@xxxx]> Sent:
November 28, 2003 7:37 AM> To:
amibroker@xxxxxxxxxxxxxxx> Subject: Re:
[amibroker] Re: to HERMAN: N100 Correlation table> >
> Hello,>
> It would be shorter to write this that
way:> > TickerList =>
"AAPL,ADBE,ADCT,ALTR,AMAT,AMG,AMZ,APCC,APOL,BBBY,BEAS,BIIB,BMET,BRCD,BRCM,CD>
WC,CEPH,"+> >
"CHIR,CHKP,CHRW,CIE,CMCSA,CMVT,COST,CPWR,CSCO,CTAS,CTXS,DELL,DISH,DLTR,EBAY,>
ERICY,ERTS,"+> >
"ESRX,EXPD,FAST,FHCC,FISV,FLEX,GEZ,GILD,GTX,HGSI,HSIC,IACI,ICOS,ITC,ITU,IVG,>
JDSU,JPR,KLAC,"+> >
"LAMR,LLTC,LCR,MCHP,MEDI,MERQ,MLM,MST,MOLX,MSFT,MXIM,TAP,VDA,VLS,XTL,ORCL,PA>
YX,PCAR,PDCO,"+> >
"PETM,PIXR,PSFT,PTE,QCOM,QLGC,RFMD,ROST,RYAAY,SAM,SBUX,SEBL,SIAL,SDK,SPS,SPL>
S,SPOT,SSCC,"+>
"SUW,SYMC,TEVA,TLAB,VRS,VRTS,WFMI,XLX,XRAY,YHOO";>
> Ticker = StrExtract( TickerList, n
);> > Hope this helps.>
> Best
regards,> Tomasz
Janeczko>
amibroker.com> ----- Original
Message -----> From: dirk
schreiber> To:
amibroker@xxxxxxxxxxxxxxx> Sent:
Thursday, November 27, 2003 9:58
PM> Subject: Re: [amibroker] Re:
to HERMAN: N100 Correlation table> >
> hi nand,>
> the #include file was posted by
herman before, it goes like this:>
> // Include
file> Ticker
=> WriteIf(n==0 ,
"AAPL",> WriteIf(n==1 ,
"ADBE",> WriteIf(n==2 ,
"ADCT",> WriteIf(n==3 ,
"ALTR",> WriteIf(n==4 ,
"AMAT",> WriteIf(n==5 ,
"AMGN",> WriteIf(n==6 ,
"AMZN",> WriteIf(n==7 ,
"APCC",> WriteIf(n==8 ,
"APOL",> WriteIf(n==9 ,
"BBBY",> WriteIf(n==10 ,
"BEAS",> WriteIf(n==11 ,
"BIIB",> WriteIf(n==12 ,
"BMET",> WriteIf(n==13 ,
"BRCD",> WriteIf(n==14 ,
"BRCM",> WriteIf(n==15 ,
"CDWC",> WriteIf(n==16 ,
"CEPH",> WriteIf(n==17 ,
"CHIR",> WriteIf(n==18 ,
"CHKP",> WriteIf(n==19 ,
"CHRW",> WriteIf(n==20 ,
"CIEN",> WriteIf(n==21 ,
"CMCSA",> WriteIf(n==22 ,
"CMVT",> WriteIf(n==23 ,
"COST",> WriteIf(n==24 ,
"CPWR",> WriteIf(n==25 ,
"CSCO",> WriteIf(n==26 ,
"CTAS",> WriteIf(n==27 ,
"CTXS",> WriteIf(n==28 ,
"DELL",> WriteIf(n==29 ,
"DISH",> WriteIf(n==30 ,
"DLTR",> WriteIf(n==31 ,
"EBAY",> WriteIf(n==32 ,
"ERICY",> WriteIf(n==33 ,
"ERTS",> WriteIf(n==34 ,
"ESRX",> WriteIf(n==35 ,
"EXPD",> WriteIf(n==36 ,
"FAST",> WriteIf(n==37 ,
"FHCC",> WriteIf(n==38 ,
"FISV",> WriteIf(n==39 ,
"FLEX",> WriteIf(n==40 ,
"GENZ",> WriteIf(n==41 ,
"GILD",> WriteIf(n==42 ,
"GNTX",> WriteIf(n==43 ,
"HGSI",> WriteIf(n==44 ,
"HSIC",> WriteIf(n==45 ,
"IACI",> WriteIf(n==46 ,
"ICOS",> WriteIf(n==47 ,
"INTC",> WriteIf(n==48 ,
"INTU",> WriteIf(n==49 ,
"IVGN",> WriteIf(n==50 ,
"JDSU",> WriteIf(n==51 ,
"JNPR",> WriteIf(n==52 ,
"KLAC",> WriteIf(n==53 ,
"LAMR",> WriteIf(n==54 ,
"LLTC",> WriteIf(n==55 ,
"LNCR",> WriteIf(n==56 ,
"MCHP",> WriteIf(n==57 ,
"MEDI",> WriteIf(n==58 ,
"MERQ",> WriteIf(n==59 ,
"MLNM",> WriteIf(n==60 ,
"MNST",> WriteIf(n==61 ,
"MOLX",> WriteIf(n==62 ,
"MSFT",> WriteIf(n==63 ,
"MXIM",> WriteIf(n==64 ,
"NTAP",> WriteIf(n==65 ,
"NVDA",> WriteIf(n==66 ,
"NVLS",> WriteIf(n==67 ,
"NXTL",> WriteIf(n==68 ,
"ORCL",> WriteIf(n==69 ,
"PAYX",> WriteIf(n==70 ,
"PCAR",> WriteIf(n==71 ,
"PDCO",> WriteIf(n==72 ,
"PETM",> WriteIf(n==73 ,
"PIXR",> WriteIf(n==74 ,
"PSFT",> WriteIf(n==75 ,
"PTEN",> WriteIf(n==76 ,
"QCOM",> WriteIf(n==77 ,
"QLGC",> WriteIf(n==78 ,
"RFMD",> WriteIf(n==79 ,
"ROST",> WriteIf(n==80 ,
"RYAAY",> WriteIf(n==81 ,
"SANM",> WriteIf(n==82 ,
"SBUX",> WriteIf(n==83 ,
"SEBL",> WriteIf(n==84 ,
"SIAL",> WriteIf(n==85 ,
"SNDK",> WriteIf(n==86 ,
"SNPS",> WriteIf(n==87 ,
"SPLS",> WriteIf(n==88 ,
"SPOT",> WriteIf(n==89 ,
"SSCC",> WriteIf(n==90 ,
"SUNW",> WriteIf(n==91 ,
"SYMC",> WriteIf(n==92 ,
"TEVA",> WriteIf(n==93 ,
"TLAB",> WriteIf(n==94 ,
"VRSN",> WriteIf(n==95 ,
"VRTS",> WriteIf(n==96 ,
"WFMI",> WriteIf(n==97 ,
"XLNX",> WriteIf(n==98 ,
"XRAY",> WriteIf(n==99 , "YHOO" ,
"">
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))>
))))))))))))))))))))))))))))));>
>
dirk> ----- Original
Message -----> From:
nkis22> To:
amibroker@xxxxxxxxxxxxxxx>
Sent: Thursday, November 27, 2003 5:16
PM> Subject:
[amibroker] Re: to HERMAN: N100 Correlation table> >
> Will appreciate
very much to see the #include AFL
please> thanks in
advance> nand>
> > > > > > >
> --- In
amibroker@xxxxxxxxxxxxxxx, dirk schreiber
<tianatrading@xxxx>>
wrote:> > hello
herman,>
>> > after
playing around with your code a little bit, i realized
that> it is not
showing a COMPLETE "heat list" of the n100. by
"splitting> up" the
100 stocks into two groups of 50, one for the x-axis and
the> other for the
y-axis, we can't get the whole picture. the first>
stock> (AAPL) has its
correlation only measured against stocks
50-99(JDSU->
YHOO), but not for example against ADBE or
ADCT.> > thanks to
posting your code i am beginning to understand the
logic> of looping
better, so i just changed some numbers to have the loop>
go> through ALL
possible combinations. it takes slightly longer
(instead> of
50*50=2500 it's 100*100=10000 calculations) and of course it
has> quite a lot of
duplicate results, but i think it is the only way
to> calculate all
correlations.> >
also, i changed the code from absolute to relative
correlation,>
which gives different
results.>
>> > what do
you think?>
>> >
dirk>
>>
>>
>> > //
Exploration N100 relative Correlation
table>
>> >
Buy=Sell=Short=Cover=0;>
>> > StkNum =
Status("StockNum");>
>> > Filter =
Status("LastBarInTest") AND StkNum <
100;>
>> >
AddTextColumn(Name(),"Ticker",1.0);>
>> >
SetOption("nodefaultcolumns",1);>
>> > n =
StkNum;>
>> > #include
<NtoN100Ticker.afl>>
>> > Ticker1 =
Ticker;>
>> > C1 =
ROC(Foreign(Ticker1,"C"),1);>
>> >
for(m=1;m<=99;m++)>
>> >
{>
>> >
n=m;>
>> > #include
<NtoN100Ticker.afl>>
>> > Ticker2 =
Ticker;>
>> > C2 =
ROC(Foreign(Ticker2,"C"),1);>
>> > Corr =
Correlation(C1, C2, 8
);>
>> > Color =
IIf(Corr>0.7,8,4); // Add colors to make a heat
map>
>> >
AddColumn(Corr,Ticker,1.3,1,Color);>
>> >
}>
>>
>>
> ----- Original Message
----->
> From: Herman
vandenBergen>
> To:
amibroker@xxxxxxxxxxxxxxx>
> Sent: Wednesday, November 26, 2003 11:43
PM> >
Subject: RE: [amibroker] to TOMASZ: how to loop through a
list> of tickers
?>
>>
>>
> A slight oversight in my previous code, you CAN list
tickers by> name
(no string array needed) in the left most column with
the> slightly
different code below. Here is a fragment of the
table.> Include
file can be found in previous
post.>
>>
>>
>>
> // N100 Correlation
table> >
Buy=Sell=Short=Cover=0;>
> StkNum =
Status("StockNum");>
> Filter = Status("LastBarInTest") AND StkNum <
50;> >
AddTextColumn(Name(),"Ticker",1.0);>
> n = StkNum;>
> #include
<NtoN100Ticker.afl>>
> Ticker1 =
Ticker;> > C1 =
Foreign(Ticker1,"C");>
>
for(m=50;m<=99;m++)>
>
{>
>
n=m;>
> #include
<NtoN100Ticker.afl>>
> Ticker2 =
Ticker;>
> C2 =
Foreign(Ticker2,"C");>
> Corr = Correlation(C1, C2, 8
);>
> Color = IIf(Corr>0,8,4); // Add colors
to make a heat
map>
>
AddColumn(Corr,Ticker,1.3,1,Color);>
>
}>
> -----Original
Message-----> >
From: dirk schreiber
[mailto:tianatrading@xxxx]>
> Sent: November 27, 2003 2:03
AM> > To:
amibroker@xxxxxxxxxxxxxxx>
> Subject: [amibroker] to TOMASZ: how to loop
through a list
of> tickers
?>
>>
>>
> i'm a bit surprised to see
that noone is answering my>
call.>
> so may i ask you
directly, tomasz, if what i asked
is> possible and if
you could indicate me the right way to
code> this
??>
>>
> thank
you,>
>>
>
dirk>
>>
> -----
Original Message
----->
>
From:
dirk
schreiber>
> To:
amibroker@xxxxxxxxxxxxxxx>
> Sent: Monday, November 24, 2003
12:14
PM>
> Subject: Re: [amibroker] how to
loop through a list
of> tickers
?>
>>
>>
> noone
???>
> i'll try again: as
an example, is it possible
to> calculate all
correlations of the stocks constituting
the> nasdaq100 in
one scan?>
> my code below will
explore the correlations of
IBM> with> the
other 99 constituents of my nasdaq100
watchlist. is there>
a> way in afl to tell
amibroker to first calculate
these> correlations
for one stock, then go to the next and do the>
same> there and so
forth, so that i could find out the 10
highest> correlations
within the nasdaq100 for example
??>
> i have tried many ideas but
i am stuck
(haven't>
mastered the new loop formulas very well
yet)
...>
>>
> any help would be
greatly appreciated, maybe
this> procedure
would interest other amibroker users as
well.>
>>
> thanks
in
advance,>
>>
>
dirk>
>>
>> >
pair="IBM";>
>> >
x=Foreign(pair,"C");>
>> >
y=C;>
>> >
xpc=ROC(x,1);>
>> >
ypc=ROC(y,1);>
>> >
Graph0=Correlation(xpc,ypc,20);>
>> >
Graph1=Correlation(xpc,ypc,200);>
>> >
Filter=Graph0>0.7 AND
Graph1>0.5;>
>> >
AddColumn(Graph0,"Cor20",1.2);>
>> >
AddColumn(Graph1,"Cor200",1.2);>
>> >
AddColumn(Graph0+Graph1,"total",1.2);>
>> >
Buy=0;>
>>
>>
>>
>>
>>
>
----- Original Message
----->
>
From: dirk
schreiber>
> To:
amibroker@xxxxxxxxxxxxxxx>
> Sent: Thursday,
November 20, 2003 6:56
PM>
> Subject: [amibroker]
how to loop through a
list of> tickers
?>
>>
>>
>
hello,>
>>
> this is my
first
post.>
> i have been working my
way into the ideas
behind> pair
trading, reading the interesting posts
by yuki a
few> months ago and
writing some code.>
> here is where i'm
stuck: when i
calculate>
correlation, price ratio and other things like
beta ratio
it> is my
understanding that when scanning my database i can
only> compare one
stock at a time with the rest of my universe.
--is>
it possible to calculate all
correlations between all
stocks> in one
scan?? i know that with big
groups this would
mean> millions
of calculations, but for a
group like the n100
this> should be
possible?>
> can this be done by
some sort of
loop?>
> i searched the mailing
list archive and found
only> one hint by DT,
talking about maybe using
something like>
Status("STOCKNUM") == 0 , but
i could not work that
out> ....>
>>
> any help
is
appreciated,>
> thanks
in
advance,>
>>
>
dirkSend
BUG REPORTS to bugs@xxxxxxxxxxxxxSend SUGGESTIONS to
suggest@xxxxxxxxxxxxx-----------------------------------------Post
AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx (Web page: <A
href="">http://groups.yahoo.com/group/amiquote/messages/)--------------------------------------------Check
group FAQ at: <A
href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Your use of Yahoo! Groups is subject to the <A
href="">Yahoo! Terms of Service.
Yahoo! Groups Sponsor
ADVERTISEMENT
Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
Do you Yahoo!?
Attachment:
Description: "Protect your identity with Yahoo! Mail AddressGuard"
|