

This book discusses trading system development and trading management.
The perspective of the book is that the goal of the developer of a trading system, and of the trader who uses it, is to have confidence that the signals issued by the system precede trades that provide rewards adequate to compensate for the risk.
The key word is confidence.
The primary limitation is risk.
The focus of the book is risk.
- Assessing your personal risk tolerance.
- Estimating the risk in a trading system.
- Trade selection to minimize risk.
- Dynamically managing position size to maximize account growth, constrained to hold drawdown within your risk tolerance.
The book is in two sections — one describing the development of trading systems, the other management of a system that is being traded.
The trading system development portion discusses topics including measuring success, issue selection, the two components of a system (the model and the data), identification of patterns that precede profitable trades, in-sample data analysis, out-of-sample system testing, maintaining synchronization between the model and the data, and methods of validation.
The trading management portion discusses a new and unique approach that continually monitors system performance, determines risk of drawdown, assesses the personal risk tolerance of the trader, computes the maximum safe position size, and estimates profit potential.
It includes techniques for determining the health of the system being traded, readjusting the system as necessary, and deciding when to take it offline before serious loss of trading capital.
A technique that I have developed, which I call “dynamic position sizing,” uses an empirical Bayesian technique to determine the maximum safe position size, called “safe-f,” based on your personal risk tolerance in combination with recent trades.
Position size is increased when the system is performing well.
Position size is reduced when system performance deteriorates, eventually taking the system offline before an equity-destroying system failure.
A metric, CAR25, which estimates profit potential is computed. CAR25 is a dominant metric. CAR25 can be computed for all alternative uses of funds. All available resources should be allocated to the one with the highest CAR25.
Use of machine learning techniques, applied to trading systems, is introduced. Examples of classification and estimation are presented, using the Python language and associated application libraries.
These links each open a pdf file related to the book.
- Table of Contents
- Introduction (Chapter 1)
- Summary (Chapter 10)
- Bibliography (Appendix 1)
- List of downloadable programs (Appendix 2)
- Index
- Errata
The code shown in this book can be downloaded.
You can learn more about the book, read additional pages, read reviews, and purchase a copy — all at Amazon.
Hi Dr Bandy,
I’m currently reading your Quantitative Technical Analysis book, learning so much from it, thank you. The hands on demonstrative approach of your work is very valuable to me and if readers don’t have a copy yet they should pick one up.
I use python and I’m using your concept of using CAR25 to rank sets of trades from my parameter optimization runs.
To produce the CAR25 value to rank my sets of trades, I’m using the same objective function I plan to trade live with (5% risk of a greater than 10% drawdown). For each of the 50 equity curves that I generate from a given trade set, I sample 95% of the trades and equally weight all trades. I have around two years of trades in each set, so, and since I’m sampling 95% of each trade set to produce safe-f\CAR25, I’m basically randomizing the order of most of the trades to produce the equity curves (if this is confusing to any of the readers of the post, the book covers all of this extensively).
So, is this a reasonable approach to produce CAR25 to rank my alternative parameter optimization trade sets? Any other thoughts around this subject that you would like to share?
Thank you,
Mike
Hi Mike —
The computation of safe-f and CAR25 based on the “best estimate” set of trades at the completion of development and validation treats all trades as equally likely. It chooses them at random and weights them equally.
As the system is moved from development to trading, safe-f and CAR25 are designed to respond to recent trades as they occur. To do this, a sliding window containing the most recent trades is used. Within that window, you can either weight all trades equally, as your post suggests you are doing. Or you can weight the more recent trades more heavily and the trades near the older end of the window more lightly. If you weight them all equally, any particularly good or bad trade carries full weight until it is dropped from the window. If your trades have a wide standard deviation, this can cause abrupt changes in safe-f and CAR25. Try both and decide which you prefer for your system.
I recommend that as the system is moved from development to trading, safe-f and CAR25 should be recalculated using the sliding window for at least a few of the latest historical best estimate trades to establish a baseline and observe the effect of window length and trade weighting.
Best regards, Howard