QuantitativeTradingwithR Quantitative Trading with R Understanding Mathematical and Computational Tools from a Quant’s Perspective Harry Georgakopoulos QUANTITATIVETRADINGWITHR Copyright©FolkCreations,Inc.,2015. Allrightreserved. Firstpublishedin2015by PALGRAVEMACMILLAN® intheUnitedStates—adivisionofSt.MartinsPressLLC, 175FifthAvenue,NewYork,NY10010. WherethisbookisdistributedintheUK,Europeandtherestoftheworld, hisisbyPalgraveMacmillan,adivisionofMacmillanPublishersLimited, registeredinEngland,companynumber785998,ofHoundmills, Basingstoke,HampshireRG216XS. PalgraveMacmillanistheglobalacademicimprintoftheabovecompanies andhascompaniesandrepresentativesthroughouttheworld. Palgrave®andMacmillan®areregisteredtrademarksintheUnitedStates, theUnitedKingdom,Europeandothercountries. ISBN:978–1–137–35407–5 LibraryofCongressCataloging-in-PublicationData Georgakopoulos,Harry. QuantitativetradingwithR:understandingmathematicaland computationaltoolsfromaquant’sperspective/HarryGeorgakopoulos. pagescm ISBN978–1–137–35407–5(hardback)— ISBN1–137–35407–0() 1.Stocks—Mathematicalmodels. 2.Investment analysis—Mathematicalmodels. 3.Corporations—Finance—Computer programs. 4.Commodityexchanges.I.Title. HG4661.G462015 332.640285’5133–dc23 2014028408 AcataloguerecordofthebookisavailablefromtheBritishLibrary. DesignbyNewgenKnowledgeWorks(P)Ltd.,Chennai,India. Firstedition:January2015 10 9 8 7 6 5 4 3 2 1 PrintedintheUnitedStatesofAmerica. ToPinelopi,Maria,andAnastasia Contents ListofFigures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi ListofTables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii 1 AnOverview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Themissionstatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Financialmarketsandinstruments. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Tradingstrategies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 High-frequencytrading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Abouttheorderbook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Tradingautomation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Wheretogetdatafrom. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2 ToolsoftheTrade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 TheRlanguage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 GettingstartedwithR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Thec()object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Thematrix()object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Thedata.frame()object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Thelist()object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Thenew.env()object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Usingtheplot()function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Functionalprogramming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 WritingfunctionsinR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Branchingandlooping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Arecommendedstyleguide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Apairwisecorrelationexample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3 WorkingwithData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 GettingdataintoR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 InstallingpackagesinR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Storingandtransmittingdata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Extractingdatafromaspreadsheet. . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Accessingadatabase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Thedplyrpackage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Usingthextspackage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 viii Contents Usingthequantmodpackage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Chartingwithquantmod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Graphingwithggplot2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4 BasicStatisticsandProbability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Whatisastatistic? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Populationversussample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 CentralLimitTheoreminR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Unbiasednessandefficiency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Probabilitybasics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Randomvariables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Probabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Probabilitydistributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Bayesversusfrequentistapproach . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Simulationsofcoins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 OntheuseofRStan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 5 IntermediateStatisticsandProbability. . . . . . . . . . . . . . . . . . . . . . . . . 91 Randomprocess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Stockpricedistributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Stationarity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Determiningstationaritywithurca . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Assumptionsofnormality. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Correlation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Filteringdata. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Rformulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Thelinearinlinearregression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Volatility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 6 Spreads,BetasandRisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Definingthestockspread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 OrdinaryLeastSquaresversusTotalLeastSquares . . . . . . . . . . . . . . . . . 121 Constructingthespread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Signalgenerationandvalidation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Tradingthespread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Consideringtherisk. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Moreontheequitycurve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Strategyattributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 7 BacktestingwithQuantstrat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Backtestingmethodology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 AboutblotterandPerformanceAnalytics. . . . . . . . . . . . . . . . . . . . . . . 149 Contents ix Initialsetup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Thefirststrategy:Asimpletrendfollower . . . . . . . . . . . . . . . . . . . . . . . 151 Backtestingthefirststrategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 Evaluatingtheperformance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 Thesecondstrategy:CumulativeConnorsRSI. . . . . . . . . . . . . . . . . . . . 162 Evaluatingthemean-revertingstrategy . . . . . . . . . . . . . . . . . . . . . . . . . 168 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 8 High-FrequencyData. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 High-frequencyquotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 Inter-quotearrivaltimes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Identifyingliquidityregimes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 Themicro-price . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Distributionsandautocorrelations. . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Thehighfrequencypackage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 9 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 Optiontheoreticalvalue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 Ahistoryofoptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 Valuationofoptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 Exploringoptionstradedata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Impliedvolatility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 10 Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 Themotivatingparabola. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 Newton’smethod. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 Thebrute-forceapproach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 Roptimizationroutines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 Acurve-fittingexercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 Portfoliooptimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 11 Speed,Testing,andReporting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 Runtimeexecutionimprovements . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 BenchmarkingRcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 TheRcppsolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 CallingRfromC++withRInside . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 Writingunittestswithtestthat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 Usingknitrfordocumentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Description: