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.
|