Testing and Tuning Market Trading Systems Algorithms in C++ — Timothy Masters Testing and Tuning Market Trading Systems Algorithms in C++ Timothy Masters Testing and Tuning Market Trading Systems: Algorithms in C++ Timothy Masters Ithaca, NY, USA ISBN-13 (pbk): 978-1-4842-4172-1 ISBN-13 (electronic): 978-1-4842-4173-8 https://doi.org/10.1007/978-1-4842-4173-8 Library of Congress Control Number: 2018961186 Copyright © 2018 by Timothy Masters This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein. Managing Director, Apress Media LLC: Welmoed Spahr Acquisitions Editor: Steve Anglin Development Editor: Matthew Moodie Coordinating Editor: Mark Powers Cover designed by eStudioCalamar Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail orders-ny@springer- sbm.com, or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation. For information on translations, please e-mail [email protected]; for reprint, paperback, or audio rights, please email [email protected]. Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Print and eBook Bulk Sales web page at www.apress.com/bulk-sales. Any source code or other supplementary material referenced by the author in this book is available to readers on GitHub via the book's product page, located at www.apress.com/9781484241721. For more detailed information, please visit www.apress.com/source-code. Printed on acid-free paper Table of Contents About the Author vii About the Technical Reviewer ix Chapter 1: Introduction1 The Target Audience, and Overview of Contents ���������������������������������������������������������������������������1 What’s in This Book �����������������������������������������������������������������������������������������������������������������1 What’s Not in This Book �����������������������������������������������������������������������������������������������������������3 About Trading Systems �����������������������������������������������������������������������������������������������������������������4 Market Prices and Returns ������������������������������������������������������������������������������������������������������5 Two Types of Automated Trading Systems �������������������������������������������������������������������������������6 The Agony of Believing the Computer �������������������������������������������������������������������������������������7 Future Leak Is More Dangerous Than You May Think ��������������������������������������������������������������7 The Percent Wins Fallacy���������������������������������������������������������������������������������������������������������8 Chapter 2: Pre-optimization Issues 11 Assessing and Improving Stationarity �����������������������������������������������������������������������������������������11 The STATN Program ���������������������������������������������������������������������������������������������������������������13 Improving Location Stationarity by Oscillating ����������������������������������������������������������������������17 Extreme Stationarity Induction ����������������������������������������������������������������������������������������������19 Measuring Indicator Information with Entropy����������������������������������������������������������������������������20 Computing the Relative Entropy of an Indicator ��������������������������������������������������������������������22 Entropy Impacts Predictive Model Quality �����������������������������������������������������������������������������24 Improving the Entropy of an Indicator �����������������������������������������������������������������������������������25 Monotonic Tail-Only Cleaning ������������������������������������������������������������������������������������������������29 iii Table of ConTenTs Chapter 3: Optimization Issues 35 Regularizing a Linear Model �������������������������������������������������������������������������������������������������������35 Overview of the Regularized Model ���������������������������������������������������������������������������������������36 Beta Adjustment with Guaranteed Convergence �������������������������������������������������������������������40 Differential Case Weighting ���������������������������������������������������������������������������������������������������41 Rapid Computation with Covariance Updates �����������������������������������������������������������������������42 Outline of the Beta Optimization Process ������������������������������������������������������������������������������46 Code for Beta Optimization ����������������������������������������������������������������������������������������������������48 Descending a Lambda Path ���������������������������������������������������������������������������������������������������55 Optimizing Lambda with Cross Validation �����������������������������������������������������������������������������59 The CD_MA Program �������������������������������������������������������������������������������������������������������������63 Making a Linear Model Nonlinear �����������������������������������������������������������������������������������������������67 Differential Evolution: A Universal Nonlinear Optimizer ��������������������������������������������������������������69 The DIFF_EV�CPP Routine for Differential Evolution ���������������������������������������������������������������75 Chapter 4: Post-optimization Issues 91 Cheap Bias Estimates �����������������������������������������������������������������������������������������������������������������91 The StocBias Class ����������������������������������������������������������������������������������������������������������������92 Cheap Parameter Relationships ��������������������������������������������������������������������������������������������������96 Parameter Sensitivity Curves ����������������������������������������������������������������������������������������������������108 Putting It All Together Trading OEX ��������������������������������������������������������������������������������������112 Chapter 5: Estimating Future Performance I: Unbiased Trade Simulation 121 In-Sample and Out-of-Sample Performance ����������������������������������������������������������������������������121 The TrnBias Program to Demonstrate Training Bias ������������������������������������������������������������123 Selection Bias ����������������������������������������������������������������������������������������������������������������������124 Walkforward Analysis ����������������������������������������������������������������������������������������������������������129 Future Leak by Unobvious IS/OOS Overlap ��������������������������������������������������������������������������131 Cross-Validation Analysis ����������������������������������������������������������������������������������������������������143 Special Precautions for Algorithmic Trading ������������������������������������������������������������������������151 Comparing Cross Validation with Walkforward: XVW ����������������������������������������������������������������156 Computationally Symmetric Cross Validation ����������������������������������������������������������������������158 What Does This Test Actually Measure? ������������������������������������������������������������������������������163 iv Table of ConTenTs Nested Walkforward Analysis ����������������������������������������������������������������������������������������������������172 The Nested Walkforward Algorithm �������������������������������������������������������������������������������������174 A Practical Application of Nested Walkforward �������������������������������������������������������������������179 An Example Using S&P 100 Components ����������������������������������������������������������������������������������187 Cross Validation Nested Inside Walkforward �����������������������������������������������������������������������������188 Chapter 6: Estimating Future Performance II: Trade Analysis 193 Handling Dynamic Trading Systems ������������������������������������������������������������������������������������������193 Unknown Lookahead to Single Bars, Revisited �������������������������������������������������������������������194 Profit per Bar? Per Trade? Per Time? ����������������������������������������������������������������������������������������195 Analyzing Completed Trade Returns Is Problematic ������������������������������������������������������������196 The PER_WHAT Program �����������������������������������������������������������������������������������������������������198 A Lower Bound for Mean Future Returns ����������������������������������������������������������������������������������209 Brief Digression: Hypothesis Tests ��������������������������������������������������������������������������������������210 So, How Do We Use This Probability? ����������������������������������������������������������������������������������212 Parametric P-Values ������������������������������������������������������������������������������������������������������������216 Parametric Confidence Intervals �����������������������������������������������������������������������������������������218 Lower Confidence Bounds and Hypothesis Tests ����������������������������������������������������������������222 Bootstrap Confidence Intervals �������������������������������������������������������������������������������������������������222 The Pivot and Percentile Methods ���������������������������������������������������������������������������������������223 The BC Bootstrap Algorithm �����������������������������������������������������������������������������������������������225 a The BOOT_CONF�CPP Subroutines ���������������������������������������������������������������������������������������227 The BOUND_MEAN Program and Results with SPX �������������������������������������������������������������232 Beware of Bootstrapping Ratios ������������������������������������������������������������������������������������������238 Bounding Future Returns ����������������������������������������������������������������������������������������������������������241 Deriving a Lower Bound from Empirical Quantiles ��������������������������������������������������������������242 Confidence in the Computed Lower Bound �������������������������������������������������������������������������244 What About an Upper Bound on Future Returns? ����������������������������������������������������������������247 The CONFTEST Program: Overview �������������������������������������������������������������������������������������248 The CONFTEST Program: Code ��������������������������������������������������������������������������������������������251 The BND_RET Program ��������������������������������������������������������������������������������������������������������257 v Table of ConTenTs Bounding Drawdown �����������������������������������������������������������������������������������������������������������������262 Intuition Gone Wrong �����������������������������������������������������������������������������������������������������������263 Bootstrapping Drawdown Bounds ���������������������������������������������������������������������������������������265 The DRAWDOWN Program ���������������������������������������������������������������������������������������������������267 Experiments with the DRAWDOWN Program �����������������������������������������������������������������������277 The CHOOSER_DD Program �������������������������������������������������������������������������������������������������279 Chapter 7: Permutation Tests 283 Overview of Permutation Testing ����������������������������������������������������������������������������������������������283 Testing a Fully Specified Trading System ����������������������������������������������������������������������������������285 Testing the Training Process ������������������������������������������������������������������������������������������������286 Walkforward Testing a Trading System Factory �������������������������������������������������������������������287 Permutation Testing of Predictive Models ���������������������������������������������������������������������������289 The Permutation Testing Algorithm �������������������������������������������������������������������������������������������291 Extending the Algorithm for Selection Bias �������������������������������������������������������������������������292 Partitioning Total Return of a Trading System ���������������������������������������������������������������������������294 Essential Permutation Algorithms and Code �����������������������������������������������������������������������298 Permuting Simple Market Prices �����������������������������������������������������������������������������������������299 Permuting Multiple Markets with an Offset �������������������������������������������������������������������������301 Example: P-Value and Partitioning ��������������������������������������������������������������������������������������������310 Example: Training with Next Bar Returns ����������������������������������������������������������������������������312 Example: Permuting Multiple Markets ��������������������������������������������������������������������������������������316 Index 319 vi About the Author Timothy Masters received a PhD in mathematical statistics with a specialization in numerical computing. Since then he has continuously worked as an independent consultant for government and industry. His early research involved automated feature detection in high-altitude photographs while he developed applications for the prediction of floods and droughts, the detection of hidden missile silos, and the identification of threatening military vehicles. Later he worked with medical researchers in the development of computer algorithms for distinguishing between benign and malignant cells in needle biopsies. For the last 20 years he has focused primarily on methods for evaluating automated financial market trading systems. He has authored the following books on practical applications of predictive modeling: Deep Belief Nets in C++ and CUDA C: Volumes 1–3 (Apress, 2018); Assessing and Improving Prediction and Classification (Apress, 2018), Data Mining Algorithms in C++ (Apress, 2018); Neural, Novel, and Hybrid Algorithms for Time Series Prediction (Wiley, 1995); Advanced Algorithms for Neural Networks (Wiley, 1995); Signal and Image Processing with Neural Networks (Wiley, 1994); and Practical Neural Network Recipes in C++ (Academic Press, 1993). vii About the Technical Reviewer Jason Whitehorn is an experienced entrepreneur and software developer and has helped many oil and gas companies automate and enhance their oilfield solutions through field data capture, SCADA, and machine learning. Jason obtained his BS in computer science from Arkansas State University, but he traces his passion for development back many years before then, having first taught himself to program BASIC on his family’s computer while still in middle school. When he’s not mentoring and helping his team at work, writing, or pursuing one of his many side projects, Jason enjoys spending time with his wife and four children and living in the Tulsa, Oklahoma, region. You can learn more about Jason at https://jason.whitehorn.us. ix CHAPTER 1 Introduction Before we delve into the meat (or tofu, if you prefer) of this book, we should be clear on what you will and will not find here, as well as what degree of preparation is expected of readers. The Target Audience, and Overview of Contents This book is intended for readers who have a modest statistics background (Statistics 101 is plenty), have some programming skill in any language (C++ with a strong bent toward traditional C is used in the examples here), and are interested in trading financial markets with a degree of mathematical rigor far beyond that of most traders. Here you will find a useful collection of algorithms, including sample code, that will help you tweak your ideas into trading systems that have above-average likelihood of profitability. But there are many things that you will not find in this book. We begin with an overview of the material included in this book. What’s in This Book The following topics are covered in this book: • If your system involves optimization of parameters, and most do, you will learn how to determine whether your optimized system has captured authentic market patterns or whether it has simply learned random noise patterns that will never again appear. • You will learn how to modify linear regression in a way that makes it even less susceptible to overfitting than it already is and that, as a bonus, separates predictors into those that are valuable and those that are worthless. You will also learn how to modify linear regression to enable its use in moderately nonlinear situations. 1 © Timothy Masters 2018 T. Masters, Testing and Tuning Market Trading Systems, https://doi.org/10.1007/978-1-4842-4173-8_1
Description: