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

RE: [amibroker] Re: Historical volume filtering



PureBytes Links

Trading Reference Links




Mornin' 
Al,
 
My first email for the day 
and I haven't had my cuppa yet!
 
I get my data from CSI 
Unfair Advantage.   To my knowledge, it is the only data supplier that 
provides both actual and backadjusted prices and volume.    I 
convert the CSI data to MetaStock format, placing the actual close in the open 
interest column.   It is possible to "squeeze" other data into the 
open interest column such as earnings, dividends, etc., but I'm not at the 
moment.   Since open interest is an integer field, I multiply the 
actual close by 100 before placing it in the field.   If I was writing 
some AFL to filter price and volume, I might say something 
like:
 
BuyOK = OI > 100 and 
Volume > 200000;       // 100 = 
$1
ShortOK = OI > 600 and 
Volume > 300000;    //  600 = $6
 
I'm afraid that I don't 
understand your question about segmenting stocks.   I simply have 
actual and backadjusted prices all in the O,H,L,C,V and OI fields in the 
MetaStock data.
 
As to your first question, 
I came up with something that works for scaling the turnover filter.   
It is the most basic solution and the mathematicians would be quite critical of 
it.... but it works:
 
LB = 
BarIndex()-245;
SPXVol = 
Foreign(".SPX","Volume",fixup=1);
CurrentSPXVolAvg = 
MA(SPXVol,245);
BaseSPXVolAvg = 
Ref(MA(SPXVol,245),-LB);
VolRatio = CurrentSPXVolAvg 
/ BaseSPXVolAvg;
MinTurnover = 100000 * 
(VolRatio / 3);
 
The above basically 
calculates the 245-day moving average of S&P volume at any point in the data 
and compares it to the 245-day moving average in the first year of 
data.   That ratio then gets divided by three (arbitrary) and 
multiplied by 100000.   The effect is, in 1985 I would be filtering 
with a minimum turnover of $100,000 and currently about 
$500,000.
 
I hope that answers your 
questions... now for that cuppa.
<BLOCKQUOTE 
>
  -----Original 
  Message-----From: Al Venosa 
  [mailto:advenosa@xxxxxxxxxxxx]Sent: Saturday, June 21, 2003 8:44 
  AMTo: amibroker@xxxxxxxxxxxxxxxSubject: Re: [amibroker] 
  Re: Historical volume filtering
  Hi, Chuck:
   
  I sure hope you got an answer to your volume adjusting question. I was 
  unable to help you on this. If you did, I'd be most interested in the findings 
  and resultant code. Meanwhile, I have a question to your post below. Where do 
  you get data that have NOT been split-adjusted? Don't all data vendors 
  split-adjust their prices and volumes? And, how do you use it for a stock that 
  has undergone numerous splits over the years? Do you segment your data set for 
  each split period and filter on that data segment? I didn't think you were an 
  individual stock trader but rather a basket trader. So, if DELL, for example, 
  which was 9 cents in 1988, was part of your basket of stocks, how do you 
  filter your basket, which includes DELL in it and many other stocks that split 
  their shares all at different times? Thanks.
   
  Al Venosa
  <BLOCKQUOTE 
  >
    ----- Original Message ----- 
    <DIV 
    >From: 
    <A title=chuck_rademacher@xxxxxxxxxx 
    href="">Chuck Rademacher 
    To: <A title=amibroker@xxxxxxxxxxxxxxx 
    href="">amibroker@xxxxxxxxxxxxxxx 
    Sent: Saturday, June 21, 2003 12:40 
    AM
    Subject: RE: [amibroker] Re: Historical 
    volume filtering
    
    <FONT face=Arial color=#0000ff 
    size=2>Whew... at last someone asked the question.
    <FONT face=Arial color=#0000ff 
    size=2> 
    <FONT face=Arial color=#0000ff 
    size=2>Phsst asked me:   <FONT face="Courier New" color=#000000 
    size=3>if you really use non-split adjusted data, how do you account for 
    stock splits in yourbacktest results where a 2 for 1, or 3 for 2, or 4 
    for 5 stock split has occurred. For example if your system generates a trade 
    when the stock price is at 50, and a 2 for 1 split occurs dropping the price 
    to 25 (reducing your position by one-half), how in the heck do you account 
    for the price reduction which did not REALLY account for a loss in your 
    'real life account' but which devasted your backtest 
    results?
    <FONT face=Arial color=#0000ff 
    size=2><FONT face="Courier New" color=#000000 
    size=3> 
    <FONT face=Arial color=#0000ff 
    size=2>
    <FONT face=Arial color=#0000ff 
    size=2>I've actually commented on this previously, but I always felt like 
    the explanation got lost in the shuffle.
    <FONT face=Arial color=#0000ff 
    size=2> 
    <FONT face=Arial color=#0000ff 
    size=2>For filtering purposes, I use ACTUAL prices and ACTUAL volumes.  
    To me, anything else is a waste of time.   I've given hundreds 
    examples on this board, but I will give some here for 
    completeness:
    <FONT face=Arial color=#0000ff 
    size=2> 
    <FONT face=Arial color=#0000ff 
    size=2>DELL was actually trading at $9.12 on 19880817.   I'm sure 
    you are showing a price of $0.09 or somthing similar in your 
    data.
    <FONT face=Arial color=#0000ff 
    size=2> 
    <FONT face=Arial color=#0000ff 
    size=2>YHOO was actually trading at $33.00 on 19960412.   I'm sure 
    you are showing a price of $2.75 or something similar in your 
    data.
    <FONT face=Arial color=#0000ff 
    size=2> 
    <FONT face=Arial color=#0000ff 
    size=2>Volumes, as shown in most data vendor's databases are off by the same 
    magnitude.
    <FONT face=Arial color=#0000ff 
    size=2> 
    <FONT face=Arial color=#0000ff 
    size=2>How can anyone possibly use backadjusted prices and/or volumes for 
    filtering?
    <FONT face=Arial color=#0000ff 
    size=2> 
    <FONT face=Arial color=#0000ff 
    size=2>Now, to answer your direct question.   While I use actual 
    prices and volumes for filtering, I use backadjusted prices for all trading 
    calculations.  As you suggest, that's the only way to compensate for 
    splits, dividends, cash payouts, etc. when calculating indicators and/or 
    profit and losses once you actually trade the stock.
    <FONT face=Arial color=#0000ff 
    size=2> 
    <FONT face=Arial color=#0000ff 
    size=2>Here again, the accuracy of the data is paramount.  Many stocks 
    are backadjusted to the point where most data suppliers might show a stock 
    trading for $0.10 for almost a month.   Two decimal digits simply 
    isn't accurate enough.   My database carries eight decimal digits 
    for the backadjusted data.   That way, I can see that a stock went 
    from 0.10000000 to 0.10600000 to 0.10900000, etc.    These 
    are huge moves that disappear in the data of most data 
    vendors.
    <FONT face=Arial color=#0000ff 
    size=2> 
    <FONT face=Arial color=#0000ff 
    size=2>Are you aware, for instance, that VectorVest rounded backadjusted 
    prices to the nearest ten cents in some of its early data?   It's 
    bad enough that the data is stored with only two decimal digits, but to the 
    nearest ten cents?    Useless.
    <FONT face=Arial color=#0000ff 
    size=2> 
    I 
    hope that answers your question and I'm relieved that someone actually asked 
    it.   I'm afraid that I can not apologise for being so pedantic 
    when it comes to the accuracy of data.
    <FONT face=Arial color=#0000ff 
    size=2> 
    
    <FONT face=Arial color=#0000ff 
    size=2> 
    <FONT face=Arial color=#0000ff 
    size=2> 
    <BLOCKQUOTE 
    >
      <FONT face="Times New Roman" 
      size=2>-----Original Message-----From: Phsst 
      [mailto:phsst@xxxxxxxxx]Sent: Saturday, June 21, 2003 12:24 
      AMTo: amibroker@xxxxxxxxxxxxxxxSubject: [amibroker] 
      Re: Historical volume filteringChuck,I've 
      been keeping 'grandkids on steroids' today, so I am a 
      littlepunch-drunk. I've read all the posts on this thread and have a 
      coupleof comments.Your database goes back to '85. As I relate 
      to my own situation, myaverage Positionsize in '85 was only a fraction 
      of my Positionsizetoday. I've been backtesting since the late 80's, 
      and have used VOLUMEfor two (2) purposes... (1) to gauge price action, 
      and (2) to gaugeliquidity as it related to MY POSITION SIZE. On the 
      second count, asmy personal positionsize increased, so did the average 
      volume in themarkets. As mentioned in subsequent posts on this 
      subject, I've filtered bothmy backtests and my actual trades based 
      upon a volume multiple of myPositionsize as opposed to x# of shares 
      traded per day, irrespectiveof price.You and I have both 
      stated that we backtest based upon 'fixed positionsize'. And yet other 
      people are not able to relate to that. They seemto think that everyone 
      'compounds' their trades on a daily basisdepending upon their account 
      size growth or demise as a direct resultof trading results. The truth 
      (for me)  is a compromise... As myaccount size grows(whether thru 
      trade profits or savings) I graduallyincrease my Positionsize, but it 
      is not directly proportional totrading success.So in my mind, 
      increases in actual market trading volume are justabout proportional 
      to increases in my own account size, and aretherefore a 
      'non-issue'.Another issue for me is your multiple posts relating 
      to preferingnon-split adjusted data.Every time you've 
      mentioned your preference for 'non-split adjusteddata', I've chosen to 
      ignore the subject rather than to open it up asan issue.But it 
      is time to ask the crucial question... if you really usenon-split 
      adjusted data, how do you account for stock splits in yourbacktest 
      results where a 2 for 1, or 3 dor 2, or 4 for 5 stock splithas 
      occurred. For example if your system generates a trade when thestock 
      price is at 50, and a 2 for 1 split occurs dropping the price to25 
      (reducing your position by one-half), how in the heck do youaccount 
      for the price reduction which did not REALLY account for aloss in your 
      'real life account' but which devasted your backtest results?Just 
      curious.Phsstgroups.com, "Chuck 
      Rademacher" <chuck_rademacher@x> wrote:> I was about to send 
      this email to "b", but I would welcome comments from> anyone else 
      interested in such historical work.> > At the risk of having 
      some of you ask why it matters, my backtesting> generally goes back 
      to 1985.    Just yesterday, I posted a messageto 
      this> group saying that I always use one set of parameters across 
      allstocks and> across all timeframes.   One of the 
      downsides of this approach(perhaps) is> that volume has changed 
      over time.   I suppose that one could argue that> 
      volatility changes over time as well.   Volatility, however, 
      goesthrough> cycles and volume just keeps growing.> 
      > The question that I have involves volume filtering.   
      To me, it isessential> that volume filters be applied to actual 
      volume and not backadjustedvolume.> My concern, however, is 
      that if I apply a filter requiring an average of> 300,000 shares, I 
      don't get very many hits back in the late 80's andearly> 
      90's.> > I have a solution in mind and would appreciate some 
      input ordialogue on the> subject.    It seems to 
      me that volume filtering should be based on some> percentage of the 
      total volume of all NYSE stocks (for instance).   I> 
      haven't done my homework yet, but let's say that the average 
      volumetoday is> ten times more than it was in 1985.   
      If I decide to filter today at300,000> shares, wouldn't it make 
      sense to filter based on 30,000 shares in1985.   I> 
      can probably answer that question myself by saying that I don'tthink 
      30,000> would be an adequate filter in 1985.   But I 
      could scale it from100,000 to> 300,000 progressively between 
      1985 and 2003 based on mathematicalequation.> > You may 
      ask why backtesting to 1985 (or any other date) is important.> 
      There are dozens of reasons, but the most important reason to me is 
      that> prospective investors in any funds that I manage want to see 
      how aproposed> system would have performed over a statistically 
      meaningful periodof time.> You can argue about the relevance of 
      such information, but THEYEXPECT TO> SEE IT.   For 
      the record, I also think that it is very important.> > I 
      welcome comments from anyone with an interest or knowledge in 
      thisarea.Send 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. 
      Send 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. 
    Send 
  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












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.