[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [amibroker] Re: to HERMAN: N100 Correlation table



PureBytes Links

Trading Reference Links




Hello,
 
The code is written in ineffective way because it calls 
Foreign for CURRENT security while it is not necessary at all.
Also it performs two loops when only one is 
needed.
 
More efficient version is here:
 
Filter<FONT 
color=#000000> = Status<FONT 
color=#000000>("LastBarInTest"<FONT 
face="Courier New">); list = <FONT 
color=#0000ff>GetCategorySymbols( <FONT 
color=#000000>categoryWatchlist, <FONT 
color=#ff00ff>0 ); 
AddTextColumn<FONT 
color=#000000>(Name<FONT 
color=#000000>(),"Correlation"<FONT 
color=#000000>,1.0<FONT 
face="Courier New">); Ticker1= <FONT 
color=#0000ff>Name(); 

for<FONT 
color=#000000>( Col=0; 
(Ticker2=StrExtract( List, 
Col))!= ""<FONT 
face="Courier New">; Col++) {    Var2 = 
Foreign<FONT 
color=#000000>(Ticker2,"C"<FONT 
face="Courier New">);    Corr = <FONT 
color=#0000ff>Correlation( <FONT 
color=#000000>C, Var2, <FONT 
color=#ff00ff>8 ); 
   Color = IIf<FONT 
color=#000000>(Corr>0, 
colorBrightGreen, 
IIf(Corr<<FONT 
color=#ff00ff>0, <FONT 
color=#000000>colorRed,<FONT 
color=#000000>colorWhite<FONT 
color=#000000>));    Color = <FONT 
color=#0000ff>IIf(Ticker1==Ticker2, <FONT 
color=#ff00ff>1, 
Color);    AddColumn<FONT 
color=#000000>( Corr, Ticker2, 1.3<FONT 
color=#000000>, 1<FONT 
face="Courier New" color=#000000>, Color); } 
 
Hope this helps.
 
Best regards,Tomasz Janeczkoamibroker.com
<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="jpg00367.jpg" 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.


Attachment: Description: ""