Automated Trading with R Quantitative Research and Platform Development — Chris Conlan www.allitebooks.com Automated Trading with R Quantitative Research and Platform Development Chris Conlan www.allitebooks.com Automated Trading with R: Quantitative Research and Platform Development Chris Conlan Bethesda, Maryland USA ISBN-13 (pbk): 978-1-4842-2177-8 DOI 10.1007/978-1-4842-2178-5 ISBN-13 (electronic): 978-1-4842-2178-5 Library of Congress Control Number: 2016953336 Copyright © 2016 by Chris Conlan 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: Welmoed Spahr Acquisitions Editor: Susan McDermott Developmental Editor: Laura Berendson Technical Reviewers: Stephen Nawara, Jeffery Holt Editorial Board: Steve Anglin, Pramila Balen, Laura Berendson, Aaron Black, Louise Corrigan, Jonathan Gennick, Robert Hutchinson, Celestin Suresh John, Nikhil Karkal, James Markham, Susan McDermott, Matthew Moodie, Natalie Pao, Gwenan Spearing Coordinating Editor: Rita Fernando Copy Editor: Kim Wimpsett Compositor: SPi Global Indexer: SPi Global Cover Image: Designed by Freepik 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.springer.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 rights@apress.com, or visit www.apress.com Apress and friends of ED books 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 Special Bulk Sales–eBook Licensing web page at www.apress.com/bulk-sales Any source code or other supplementary materials referenced by the author in this text is available to readers at www.apress.com For detailed information about how to locate your book’s source code, go to www.apress.com/source-code/ Printed on acid-free paper www.allitebooks.com For my family www.allitebooks.com Contents at a Glance About the Author .xv About the Technical Reviewers .xvii Acknowledgments xix Introduction xxi ■Part 1: Problem Scope ■Chapter 1: Fundamentals of Automated Trading ■Part 2: Building the Platform 21 ■Chapter 2: Networking Part I 23 ■Chapter 3: Data Preparation 37 ■Chapter 4: Indicators 51 ■Chapter 5: Rule Sets 59 ■Chapter 6: High-Performance Computing 65 ■Chapter 7: Simulation and Backtesting 83 ■Chapter 8: Optimization 101 ■Chapter 9: Networking Part II 131 ■Part 3: Production Trading 153 ■Chapter 10: Organizing and Automating Scripts 155 ■Chapter 11: Looking Forward 161 v www.allitebooks.com ■ CONTENTS AT A GLANCE ■Appendix A: Source Code 167 ■Appendix B: Scoping in Multicore R 195 Index 203 vi www.allitebooks.com Contents About the Author .xv About the Technical Reviewers .xvii Acknowledgments xix Introduction xxi ■Part 1: Problem Scope ■Chapter 1: Fundamentals of Automated Trading Equity Curve and Return Series Characteristics of the Equity Curve Characteristics of the Return Series Risk-Return Metrics Characteristics of Risk-Return Metrics Sharpe Ratio 10 Maximum Drawdown Ratios 12 Partial Moment Ratios 14 Regression-Based Performance Metrics 16 Optimizing Performance Metrics 20 ■Part 2: Building the Platform 21 ■Chapter 2: Networking Part I 23 Yahoo! Finance API 24 Setting Up Directories 25 URL Query Building 25 Data Acquisition 26 vii www.allitebooks.com ■ CONTENTS Loading Data into Memory 27 Updating Data 28 YQL Web Service 29 URL and Query Building 30 Note on Quantmod 33 Background 33 Comparison 33 Organizing as Date-Uniform zoo Object 34 Note on zoo Objects 35 ■Chapter 3: Data Preparation 37 Handling NA Values 37 Note: NA vs NaN in R 37 IPOs and Additions to S&P 500 37 Merging to the Uniform Date Template 39 Forward Replacement 40 Linearly Smoothed Replacement 41 Volume-Weighted Smoothed Replacement 42 Discussion of Replacement Methods 43 Real Time vs Simulation 43 Influence on Volatility Metrics 43 Influence on Trading Decisions 44 Conclusion 44 Closing Price and Adjusted Close 44 Adjusting for Stock Splits 45 Adjusting for Cash Dividends 45 Efficient Updating and Adjusted Close 46 Implementing Adjustments 47 Test for and Correct Inactive Symbols 47 Computing the Return Matrix 48 viii www.allitebooks.com ■ CONTENTS ■Chapter 4: Indicators 51 Indicator Types 51 Overlays 51 Oscillators 51 Accumulators 52 Pattern/Binary/Ternary 52 Machine Learning/Nonvisual/Black Box 52 Example Indicators 52 Simple Moving Average 52 Moving Average Convergence Divergence Oscillator (MACD) 53 Bollinger Bands 54 Custom Indicator Using Correlation and Slope 55 Indicators Utilizing Multiple Data Sets 56 Conclusion 57 ■Chapter 5: Rule Sets 59 Our Process Flow as Nested Functions 59 Terminology 59 Example Rule Sets 61 Overlays 61 Oscillators 61 Accumulators 61 Filters, Triggers, and Quantifications of Favor 62 ■Chapter 6: High-Performance Computing 65 Hardware Overview 65 Processing 65 Multicore Processing 65 Hyperthreading 66 Memory 67 The Disk 68 Random Access Memory (RAM) 68 ix www.allitebooks.com ■ CONTENTS Processor Cache 68 Swap Space 68 Software Overview 69 Compiled vs Interpreted 69 Scripting Languages 70 Speed vs Safety 70 Takeaways 71 for Loops vs apply Functions 71 for Loops and Memory Allocation 72 apply-Style Functions 73 Use Binaries Creatively 73 Note on Measuring Compute Time 74 Multicore Computing in R 74 Embarrassingly Parallel Processes 75 doMC and doParallel 75 The foreach Package 76 The foreach Package in Practice 77 Integer Mapping 77 Computing the Return Matrix with foreach 78 Computing Indicators with foreach 79 ■Chapter 7: Simulation and Backtesting 83 Example Strategies 83 Our Simulation Workflow 85 Listing 7-1: Pseudocode 85 Listing 7-1: Explanation of Inputs and User Guide 86 Discussion 92 Implementing Example Strategies 93 Summary Statistics and Performance Metrics 97 Conclusion 99 x www.allitebooks.com APPENDIX A ■ SOURCE CODE Platform/model/optimize.R setwd(DIR[["model"]]) minVal