: for prices under $5.00 per share eachbox represents $0.25 or one quarter of a point. Between $5 and $20, each box is $0.50 or a halfa point. Above $20 and below $100, a box has a one-point value, and above $100, boxes are 2points each.In order to develop extensions and adjustments to the original scale one needs to take a brieflook into the history of point-and-figure. When you do this, it becomes clear that during thedevelopment of the system – when the majority of stocks traded between 15 and 60 dollars –the chartists did the only logical thing, namely to approximate a logarithmic scale, withoutcomplicating the charting excessively. The result is the original classic scale, as described aboveand shown in the table below:Table 6.1 – the US classic scale for stocks
From
to
Box Size
0
–
5
0.25
5
–
20
0.5
20
–
100
1
100
–
>100
2
The scaling for the early point-and-figure traders was finding the balance between mathematicalrobustness and fast calculability. The same principle is applied in order to produce a similarstaggered scale as the original scale for stocks and stock indices trading between 0.50 (anunfortunate Dotcom) and 40,000 (a Nikkei during its glory days). We describe this in detail inthe appendix covering technical details. We call this standard scaling.
224
Technical Notes
We have also seen that classical US box sizes work well for Continental European stocks,denominated in Euros. UK stocks which trade in the hundreds of pence can be – howevercumbersome – scaled with the same scale, box sizes being simply adjusted by a division. Thismeans that for manual charting one can simply divide the UK price in pence by ten and use theUS scale. In this manner you would treat a 615p stock like a $61.5 stock, therefore transformingthe $1 box into a 10p box. Then, just to make the point clear, if the stock fell to 150p you woulduse a 5p box size as the US system implies 50 cents a point.Logarithmic point-and-figure charts
The idea of using smaller box sizes for prices in lower ranges and bigger boxes for prices inhigher ranges is correct and logical. But any scaling system that is different from a reallogarithmic scale has arbitrarily chosen levels where box sizes change, box sizes which are notproportional and generate therefore discontinuities. This is best described by the followingexample, based on the US scale.A stock which trades in the range of $21 to $25 has box sizes of about 5% in contrast to a stockthat trades in the $95 range which has a box size of about 1%. The three box reversal of the $21stock would need a move of 15%, whereas the reversal for the $95 stock would need only a 3%move. In order to resolve that problem, mathematically correct logarithmic scaling wasintroduced. Nowadays, thanks to computer technology, it is easy to produce logarithmic scaledcharts, and because the technique is so simple and accurate, most analysts use them. In thelogarithmic p&f chart the reversals are always defined by the same percentage move,irrespective of the actual price level of the stock.Modifying box-sizes
Last but not least, you can modify box sizes to cater for different levels of volatility or differenttypes of securities. We have done a lot of research on the subject of scaling of p&f charts andwe are confident about our recommendations. One could obviously complicate the issue ofscaling a lot. But what we want to present in this book are the results of our research andexperience in the most comprehensive and pragmatic way.The standard system which we use – that is, an extension to the US classic scaling – is a goodapproximation to a mathematically perfect logarithmic scaling. It is shown in the table overleaf,with two types of box size, one for stocks with a normal volatility and one for stocks with a lowvolatility.
225
The Complete Guide to Point-and-Figure Charting
Table 6.2 – Standard scaling
to
Normal VolatilityBox Size
LowVolatilityBox Size
1
1.4
0.02
0.01
1.4
2.9
0.05
0.02
2.9
6
0.1
0.05
6
14
0.2
0.1
14
29
0.5
0.2
29
60
1
0.5
60
140
2
1
140
290
5
2
290
600
10
5
600
1400
20
10
1400
2900
50
20
2900
6000
100
50
6000
14000
200
100
from
Standard
The standard system has quite a few advantages, but most of all it is easy to apply. Used in theway that we use it, it comes quite close to the mathematical correctness of logarithmic scaling,but has the advantage of generating user-friendly price levels.When using other than constant box sizes from a standard p&f software package you have tomake sure that you understand the general concept of how the computer calculates them. It maygive you some reassurance to know that we have invested quite a lot of time testing the scalingdone by the software packages we recommend. Be aware – some software or chart services uselinear percentage charts, whereby they simply divide the trading range into equal boxes. That isof course the easiest way to scale with a computer, but it is fundamentally flawed and mostimportantly, it means that each and every time the stock makes a new high or low the box sizeschange, which makes such charts unusable in the long run.
226
Technical Notes
In the two following examples you will see the difficulties of charting securities with a big spanin prices. Big price intervals are typical for long-term charts or volatile stocks (like thetechnology sector). But even an index of a mature stock market, like the Hang Seng in ourexample, can have price moves that make the application of increasing box sizes a must.Chart 6.1 – Scaling of the Hang Seng [^HIS]^HSI / 3 box rev, / 1997.01.02 to 2002.01.071800017500170001650016000155001500014500140001380013600134001320013000128001260012400122001200011800116001140011200110001080010600104001020010000980096009400920090008800860084008200800078007600740072007000
......................|.........................|.................|..3.X.X...|...........|18000......................|.........................|.................|X.XOX4X9..|...........|17500_________________________________________________________________X_XOXOXO7O_______________17000.........8............|.........................|................X1XOXO.OXO..|...........|16500.........XO...........|.........................|................COXO...OXOX.1...........|16000.........7O...........|.........................|................XO2....OXOXOX3..........|15500.......6.XOX..........|.........................|................XO.....O6OBOXO..........|15000_______XOXOXA____________________________________________7_______X______5XA_OCO___________14500.X.....XOX9XO.........|.........................|........XO....X.X|.....OX..O|O..........|14000.XOX...XO.OXO.........|.........................|........XO..X.XOX|.....OX...|O..5.X.....|13800.XOXOX.X..OXO.........|.........................|....X.X.XOX.X9XOX|.....O....|O..XOXO....|13600.XO2OX3X..OXO.........|.........................|....XOXOXOXOXOXOB|..........|O..XO6O....|134001_O_OXOX__OXO________________________________________XO5OXOXOXO_OX____________O__XO_O_____13200....O.O5..O.O.........|.........................|..X.XO.OXO8OX..OX|..........|OX.X..O....|13000......OX....O.........|.........................|..XOX..OXO.OX..OX|..........|OX4X..O....|12800......OX....O.........|.........................|..XOX..OX..O...AX|..........|OXOX..7....|12600......OX....O.........|.........................|..XO...OX......OX|..........|O.OX..O....|12400______4X____O______________________________________X____O6______O_______________O___O_____12200......O.....O.........|.........................|..X....O.........|..........|......8....|12000............O......X..|..........X..............|..X..............|..........|......O..X.X11800............O....X.XO.|........3.X4.............|..X..............|..........|......O..COX11600............O....XOXO.|........XOXO.............|..X..............|..........|......O..XO111400____________O____XOXO__________XOXO________________4________________________________O__XO_11200............OX...XOXO.|....X.X.XOXO.............|..X..............|..........|......9..X.|11000............OXO..BOCOX|....XOXOXO.O..........X..|X.X..............|..........|......O..X.|10800............OXOX.XOXOX1....XOXOX..O..........XC.|XOX..............|..........|......OX.B.|10600............OXOXOXOXOXO....XOXO...O........B.XOX|XOX..............|..........|......OXOX.|10400____________OXOXOXOXO_O____XOX____5________XOXOX1XOX________________________________OXOX__10200............OXOXO.OX..O....XO.....O........XOXOXOXO3..............|..........|......OAOX.|10000............O.OX..OX..O....X......O........XO.O.O.OX..............|..........|......OXO..| 9800..............OX..O...O..X.X......O........X....|.OX..............|..........|......OX...| 9600..............OX......O..XOX......O........X....|.OX..............|..........|......OX...| 9400______________OX______OX_XOX______O________X______2_________________________________OX____ 9200..............OX......OXOXO2......O........X....|.................|..........|......O....| 9000..............O.......OXOXO.......67.......X....|.................|..........|...........| 8800......................OXO.........OXOX.....X....|.................|..........|...........| 8600......................OX..........OXOXO....X....|.................|..........|...........| 8400______________________OX__________OXOXO__X_A______________________________________________ 8200......................O...........OXO.O..XOX....|.................|..........|...........| 8000......................|...........OX..OX.XOX....|.................|..........|...........| 7800......................|...........OX..8X9XOX....|.................|..........|...........| 7600......................|...........O...OXOXOX....|.................|..........|...........| 7400______________________________________OXOXO_______________________________________________ 7200......................|...............OXO.......|.................|..........|...........| 7000----------------------9---------------OX--------9-----------------0----------0-----------0----------------------8---------------O---------9-----------------0----------1-----------2
In the Hang Seng example we use the standard scale and therefore use box sizes of 200 between6,000 and 14,000, and box sizes of 500 above 14,000.
227
The Complete Guide to Point-and-Figure Charting
Chart 6.2 – Scaling of the THUS Group: log 5%!
The example of Thus is extreme. The price crashes from a high of 840 to a low of 4.50. Suchstocks are best charted with a logarithmic scale, using a high growth rate such as 5%.228
Technical Notes
SummaryWhat possibilities do I have to scale my chart?
1.
Standard – recommended for most stocks and other tradable assets.
2.
Percentage linear – flaws charting, to be avoided.
3.
Logarithmic – recommended for volatile stocks, mathematically sound.(Hint: always first try with 2%)
Why does logarithmic scaling make a lot of sense?
Logarithmic or standard scaling – which is an approximation to logarithmic scaling – has theproperty that reversals have the same percentage value irrespectively of the price charted. It isclear that security price moves, or returns, have to be compared on a relative basis. That meansa 2% move of BARC.L with a 2% move of stock HSBA.L.Or, explained the other way round, a 100 point down move on the Dow at 1,200 is somethingtotally different than a 100 point at 8500: one represents a 8.3% crash and the other a 1.2% slightcorrection.A major argument in favour of logarithmic scaling, therefore, is the comparability of log-scaledcharts. There are many other advantages, but our conclusion is that, especially for testingtrading strategies over the long run and long-term charts, log scaling is a must. Moreover, longterm trend lines only work on log-scaled charts, a fact which becomes especially evident whenyou look at ‘heaven and hell’ tech stocks, where during the aggressive up-moves the bullishsupport lines on non-log scales lose all meaning.How can I do a logarithmic scale with only a calculator?
You can do this very easily. It’s a piece of cake!Even the most simple calculator will do. You take the last closing price of the stock you want tochart (let’s say it was 98.5, round it to the next good looking number (obviously 100). Then youdecide what multiplication factor you want to use. Use growth rates between 0.5% to 5%, butlet’s assume that you choose 3%. Then you just take 100, multiply it by 1.03 and get the nextbox limit. Then you take that number and multiply it again with the same 1.03. That way youget the boxes above 100. For the boxes below 100, you simply divide the number by 1.03, againand again.No logarithm table required!
229
The Complete Guide to Point-and-Figure Charting
Description of the program environment used
Computer programs and hardwareOverview
Optimisations and simulations are a very delicate matter and therefore you have to be cautiousin the choices you make. One thing is whether the purpose is to run statistical studies of tradingsystems, and the other whether money is involved.Conducting an academic study is intellectually rewarding and its main purpose, even if it is notfulfilled very often, is to describe something new. As a result, there is no shortage of newfinancial research, which is good, but often it lacks precision and robustness, both of which areneeded if the results are to be used for trading. In academia what counts is the concept. The sameis basically true for financial analysts. They can base research reports on the latest findings andfacts, issue a recommendation and in the end include some word of caution to soften up therecommendation.Trading is different.Either you buy or you sell. Trading systems generate signals, which are acted upon. Starting tofeel ill at ease with trading signals is often the beginning of the end of a trader’s career. This isbecause the trader starts to interpret and judge such signals subjectively. He will start to usesome, but not all. He will increasingly rely on gut-feeling to decide which ones to use and whichones to ignore. After a while, he has shifted completely from a systematic approach to a gutfeeling approach, which will eventually ruin him.If you want to do optimisations and analysis of data for real trading purposes with real money,you have to be extremely confident about the programs used, because the results will have adirect impact on the profit & loss in your trading account. P&L is the essence of any tradingactivity and it is consequently important to use a program that you really understand and knowexactly what it does.How many unsuccessful traders have we seen who use a myriad of parameters, oscillators,indicators and combinations of them, without actually knowing their formula and sensitivity tochosen parameters? The successful trader needs to understand the long-term performance of hissystem in different market conditions, and what happens when he fiddles around with the inputparameters of a formula.We will come back to the stability of parameters in the section optimisation/simulation.We think it is crucial that the reader conceptually understands both the stability ofparameters and that optimisations wrongly done can easily fool investors.230
Technical Notes
Further on we will include some examples to illustrate the point.We strongly advise against an amateurish approach to using computers. The dilettante uses thecomputer to back-test all sorts of trading signals, tinkering with parameters and trying toimagine patterns where there are none. Then he does some paper trading, sees that the systemhe previously thought terrific does not work, and begins all over again.By contrast, the serious trader understands what makes his system tick. The serious traderunderstands the stability of the parameters and has a clear expectation of what a technicaltrading system can do and what its limitations are.We also explain in detail how we program the charting, which includes firstly the loading of thedata series and secondly choosing the correct scale and box-reversal. We also explain how weprogram the horizontal and vertical counts and the pyramiding.MatLabWe have been careful to choose a programming language which is known for not generatingerrors in arithmetic and is transparent, so that the code can easily be tested and its qualityenhanced. Also the programming language should be of a very high level, which means thewritten code is easily understood.For this reason we use the MatLab programming environment. This is a software package thatis the standard used in mathematics, engineering and finance. Unfortunately without priorknowledge in programming, this tool is cumbersome to use; however, one learns quickly. It isbasically an intuitive program language that is used to write one’s own code. It can be writtenfast – once the basics are understood – because there exists a big library of already programmedfunctions. One could probably also use other highly-regarded mathematical or statisticalprogramming environments that are known for their precision, such as Mathematica.Incidentally, we are not associated with MatLab. We just write about it because it is our choiceas the software environment.MatLab is an interpreter and therefore much more convenient to use than a compiler. Aninterpreter processes the program code as it is being written. Therefore all variables areconvenient to track and the program code can be modified instantaneously. A compiler translatesthe code first into a faster low-level code. This procedure makes the testing of the program andits quality more difficult.MatLab is a program one can trust because it is proven to be precise. The code for charting,trading simulation and optimisation is written by ourselves in the MatLab M-language andtherefore we know exactly what the program does and that the results are correct and applicablein real trading.
231
The Complete Guide to Point-and-Figure Charting
A potential risk of off-the-shelf charting and analysis software could be that errors, even if tiny,survive undetected. As we can not inspect the program code of such off-the-shelf tradingsoftware, it is impossible to find and repair any errors. An additional problem could be thereduced flexibility. Having your own code means you can adapt it to all sorts of specialsituations or you can link it to an existing trading front-end. Because we have extensiveexperience with trading software development, we prefer to have control over the code and runour own programs.In stating our preference for MatLab we would not wish you to infer that we think there areflaws in any of the off-the-shelf charting software products we have already mentioned. We donot! We have tested all the software products recommended in the book. All of them work, andcan be used without any concern. From our point of view, having the source code and being ableto analyse it and integrate it with other applications is a big advantage, but our program, we mustemphasise, is not as user-friendly as the commercial software. It does not produce such beautifulcharts, and the loading of the data is manual.As far as hardware is concerned, as we explained at the beginning of the book, we would simplystate the bigger the better. This is especially so for optimisations/simulations, where a powerfulcomputer produces a real and noticeable reduction in the time taken to get the results. In ourcase, the optimisations used to take about 4 hours on an old portable computer; now, with thenew machine, they take about 45 minutes.Pros and cons of using MatLab
Obviously one could program what we have done in another environment, too, such as C orVisualBasic. Our experience has shown that those programming environments are useful tocreate fast code with handy graphical user interfaces. The drawback is that much more code hasto be written than in MatLab, which has many built-in functions for charting and finance. InMatLab, the code can easily be linked to other existing financial applications, such as theFinancial Toolbox, Neural Network Toolbox or the GARCH Toolbox. The combination with theNeural Network Toolbox, especially, made it possible to combine point-and-figure with anartificial neural network that learns and tests p&f patterns and in context with a different neuralnetwork can use p&f charts as explicative variables for volatility and short-term price forecasting.The other big advantage is that MatLab is an entire programming environment designed for fastprototyping. Therefore a technical analysis application can be written in a much shorter timethan with a normal high level language, like C or Basic. But it is fair to say that the latestversions of C,C++ environments come very close to the concept of software like MatLab. Thecrucial point is that because the other languages have a less mathematics-oriented purpose, theircode often hides calculation errors and other possible traps.The biggest advantage for the purpose of this book is that MatLab’s M-language is clear andeasy to understand. Even if you are not accustomed to MatLab, you will see that it is true, andthe code is really easy to read.232
Technical Notes
The disadvantage of a system like MatLab is the speed. An interpreted program is much slowerthan a compiled one. We would estimate this to a factor of 20. Doing an extensive analysis ofthe 100 FTSE stocks takes close to 1 hour with interpreted MatLab. Had we written the code incompiled C we would probably need 3 minutes. Waiting for your output for a whole hour canbe unnerving.Advantages of do-it-yourself programming
You might think that we are perverse: first we talk about do-it-yourself charting with pencil andpaper. And now we propose do-it-yourself programming. But we have to stress the fact that weare trading for our own account and that we are therefore highly aware of the importance of thequality of the charts and trading signals. Trading is complicated and stressful enough. Oneshould not make it worse by the use of input – charts/signals – that one doubts. Or by usingprograms or data sources which are not extensively tested. Knowing that we are using highquality data and knowing what happens inside the computer gives us a lot of confidence. Andto be confident entering a position or exiting it makes trading a much better experience.Thus the advantages of do-it-yourself programming are:1.
In-depth understanding of the methodology.
2.
In-depth understanding of the computer output.
3.
Possibility to view and alter the code if a suspicion of an error occurs.
4.
Independence of the charting software vendor.
5.
Independence of new releases in the software or operating systems.
6.
Only real possibility to perform automatic optimisation / simulation cycles.
The dataIt goes without saying that the data is the essence for running a computerized trading system,which is expressed very well in the classic statistics lemma trash in, trash out. The lemmaapplied to technical trading means, of course, that if one uses data with many errors, a lot offalse trading signals are generated. We therefore recommend using data which is completelytrustworthy. There are many sources of data and normally the data found on the websites of theexchanges themselves is of very high quality. Data providers also adjust the data for stock splitsand dividends. In the case of futures – because the contracts expire – the data providers fuse thedata of the individual contracts. Databases can easily be tested for problematic errors and thenthey can be repaired if needed.
233
The Complete Guide to Point-and-Figure Charting
How data providers adjust the data for stocks in the case of splits anddividends, and how to do this yourself
When you download data from one of the recommended services you must be aware that stockdata is adjusted for splits and dividends. It is also important for you to know about theseprocedures if you use a database that is updated manually.Splits
Companies often split stocks, and recently there have been instances of reverse splits. Theconcept of the split is straightforward: for each share owned, the shareholder gets a number ofnew shares. In order to keep the data usable for charting or simulating, one just has to multiplythe price data with the split factor and the volume with the reverse of the split factor. Say thesplit is 1 to 2; all of the before-split data would be multiplied by 0.5. And all of the before-splitvolume by 2.Dividends
Dividends are a bit more complicated than splits. The stock that pays a dividend reduces a partof its value during that process. The stock ex-dividend has a lower value than the cum-dividend.Normally data providers keep the most recent data correct and therefore you reduce all of thepre-dividend price data by the entire dividend. Volume stays unaffected. The reduction can bedone in two ways, either by subtraction or division.If you need to conduct large studies of profitability, you want the data to be manipulated bysubtraction. The reason is that in this way the real amount of trading profits stays intact. Thedisadvantage is that over very long time series, due to the effect of absolute growth of dividends,stock prices can become negative towards the beginning of the time series.On the other hand, if you hate to deal with negative stock prices, you would prefer to use adivision instead of a subtraction, whereby the pre-dividend data is adjusted in percentage terms,i.e. proportionally. That is the normal procedure applied by the data providers. However suchdata does not serve for long-range testing of the profitability of a trading system. Because thedata is in a way multiplied down towards the left – the beginning of the data series – the P&Ltowards the left is weighted too little. This could mean that a trading system which is thought inthe historic simulation to have made a lot of losses in the early years and more profits in the lateryears is wrongly given a good overall profitability. If you ran the same system with adjustedprice data, the P&L would be much worse. Our conclusion is this:For charts, use proportionally-adjusted data, and for trading simulations, use subtractionadjusted data.
234
Technical Notes
How data providers adjust the data for futures, and how to do this yourself
With futures contracts we get into a situation whereby the data series of individual futurescontracts have to be merged into one continuous file without distorting the data with thedifference in time value. Normally one uses the data of the most traded contract, normally thefront month, and uses that data up to the point in the past where another contract traded withmore volume. At that point the data is substituted by the data of the higher-volume contract.The difference of time value has to be determined, by simple differencing, and all data towardsthe left has to be adjusted with that difference. As in each expiration some quantity is – normally– subtracted, we have to deal with negative prices when we use long data samples.Data format used
In order to make things simple, we use Excel as data editor. Because we handle quite a numberof data series, as we are active traders, we need a way to handle our data conveniently. Excel isa really user-friendly program and everybody can perform the basic procedures needed in thecontext of this book. An additional advantage of the Excel spreadsheet is that it is so widelydistributed, because it often comes pre-installed on new computers.We store the data as a space-delimited text file of the format: date open high low close volumeHow to control the quality of the data and repair it if needed
There are several ways to check the quality of the data.1
SpikesThe fastest one is to make a simple bar chart and control whether there are any suspiciousspikes. Normally, when data is erroneous, it is easily spotted, because errors are mostly infactors greater then 10, meaning that for example a singular data point of the value 5,000occurs in a data series of a stock that trades normally in the 100s. Such errors are easilydetected. Errors on the right side of the decimal point are rare, but will probably stayhidden. However, since they are so small, they are not really a problem.
2
Missing datesThe second quick test is to see if all dates are present. If a date is missing, it is either anerror or a date where the specific asset did not trade.
We recommend conducting only those two checks. Except of course if you work with an assetthat is notorious for being erroneously reported. The two checks, for spikes and dates, can bedone in a minimum of time. In our experience we have hardly seen any errors, especially in thelast few years, in the downloaded data from the sources we have listed above.
235
The Complete Guide to Point-and-Figure Charting
Where a date is missing or a spike is detected, you can either try to get the data from analternative source, or, which is much faster, interpolate the missing or erroneous price. Webelieve that a simple linear interpolation is good enough. That means that in the case of a dataseries of closing prices of 101, 5000, 103, we would simply substitute the 5000 with 102, whichis the mean between 101 and 103. The same would apply to all parts of the data record, i.e. open,high, low, volume.It should also be noted that if several days are missing or are believed to include errors, theninterpolation should only be applied as a last resort rather than a first resort. Before attemptingan interpolation, you should check with all possible data