Discover millions of ebooks, audiobooks, and so much more with a free trial

Only $11.99/month after trial. Cancel anytime.

Quantitative Trading with R: Understanding Mathematical and Computational Tools from a Quant’s Perspective
Quantitative Trading with R: Understanding Mathematical and Computational Tools from a Quant’s Perspective
Quantitative Trading with R: Understanding Mathematical and Computational Tools from a Quant’s Perspective
Ebook471 pages4 hours

Quantitative Trading with R: Understanding Mathematical and Computational Tools from a Quant’s Perspective

Rating: 4.5 out of 5 stars

4.5/5

()

Read preview

About this ebook

Quantitative Finance with R offers a winning strategy for devising expertly-crafted and workable trading models using the R open source programming language, providing readers with a step-by-step approach to understanding complex quantitative finance problems and building functional computer code.
LanguageEnglish
Release dateFeb 2, 2015
ISBN9781137437471
Quantitative Trading with R: Understanding Mathematical and Computational Tools from a Quant’s Perspective

Related to Quantitative Trading with R

Related ebooks

Business For You

View More

Related articles

Reviews for Quantitative Trading with R

Rating: 4.5 out of 5 stars
4.5/5

2 ratings0 reviews

What did you think?

Tap to rate

Review must be at least 10 words

    Book preview

    Quantitative Trading with R - Harry Georgakopoulos

    Quantitative Trading with R

    Understanding Mathematical and Computational Tools from a Quant’s Perspective

    Harry Georgakopoulos

    QUANTITATIVE TRADING WITH R

    Copyright © Folk Creations, Inc., 2015.

    All right reserved.

    First published in 2015 by

    PALGRAVE MACMILLAN®

    in the United States—a division of St. Martins Press LLC,

    175 Fifth Avenue, New York, NY 10010.

    Where this book is distributed in the UK, Europe and the rest of the world, his is by Palgrave Macmillan, a division of Macmillan Publishers Limited, registered in England, company number 785998, of Houndmills, Basingstoke, Hampshire RG21 6XS.

    Palgrave Macmillan is the global academic imprint of the above companies and has companies and representatives throughout the world.

    Palgrave® and Macmillan® are registered trademarks in the United States, the United Kingdom, Europe and other countries.

    ISBN: 978–1–137–35407–5

    Library of Congress Cataloging-in-Publication Data

    Georgakopoulos, Harry.

    Quantitative trading with R : understanding mathematical and computational tools from a quant’s perspective / Harry Georgakopoulos.

       pages cm

    ISBN 978–1–137–35407–5 (hardback)—

    ISBN 1–137–35407–0 ()

     1. Stocks—Mathematical models. 2. Investment analysis—Mathematical models. 3. Corporations—Finance—Computer programs. 4. Commodity exchanges. I. Title.

    HG4661.G46 2015

    332.640285’5133–dc23                             2014028408

    A catalogue record of the book is available from the British Library.

    Design by Newgen Knowledge Works (P) Ltd., Chennai, India.

    First edition: January 2015

    10 9 8 7 6 5 4 3 2 1

    Printed in the United States of America.

    To Pinelopi, Maria, and Anastasia

    Contents

    List of Figures

    List of Tables

    Acknowledgments

    1 An Overview

    The mission statement

    Financial markets and instruments

    Trading strategies

    High-frequency trading

    About the orderbook

    Trading automation

    Where to get data from

    Summary

    2 Tools of the Trade

    The R language

    Getting started with R

    The c() object

    The matrix() object

    The data.frame() object

    The list() object

    The new.env() object

    Using the plot() function

    Functional programming

    Writing functions in R

    Branching and looping

    A recommended style guide

    A pairwise correlation example

    Summary

    3 Working with Data

    Getting data into R

    Installing packages in R

    Storing and transmitting data

    Extracting data from a spreadsheet

    Accessing a database

    The dplyr package

    Using the xts package

    Using the quantmod package

    Charting with quantmod

    Graphing with ggplot2

    Summary

    4 Basic Statistics and Probability

    What is a statistic?

    Population versus sample

    Central Limit Theorem in R

    Unbiasedness and efficiency

    Probability basics

    Random variables

    Probabilities

    Probability distributions

    Bayes versus frequentist approach

    Simulations of coins

    On the use of RStan

    Summary

    5 Intermediate Statistics and Probability

    Random process

    Stock price distributions

    Stationarity

    Determining stationarity with urca

    Assumptions of normality

    Correlation

    Filtering data

    R formulas

    The linear in linear regression

    Volatility

    Summary

    6 Spreads, Betas and Risk

    Defining the stock spread

    Ordinary Least Squares versus Total Least Squares

    Constructing the spread

    Signal generation and validation

    Trading the spread

    Considering the risk

    More on the equity curve

    Strategy attributes

    Summary

    7 Backtesting with Quantstrat

    Backtesting methodology

    About blotter and PerformanceAnalytics

    Initial setup

    The first strategy: A simple trend follower

    Backtesting the first strategy

    Evaluating the performance

    The second strategy: Cumulative Connors RSI

    Evaluating the mean-reverting strategy

    Summary

    8 High-Frequency Data

    High-frequency quotes

    Inter-quote arrival times

    Identifying liquidity regimes

    The micro-price

    Distributions and autocorrelations

    The highfrequency package

    Summary

    9 Options

    Option theoretical value

    A history of options

    Valuation of options

    Exploring options trade data

    Implied volatility

    Summary

    10 Optimization

    The motivating parabola

    Newton’s method

    The brute-force approach

    R optimization routines

    A curve-fitting exercise

    Portfolio optimization

    Summary

    11 Speed, Testing, and Reporting

    Runtime execution improvements

    Benchmarking R code

    The Rcpp solution

    Calling R from C++ with RInside

    Writing unit tests with testthat

    Using knitr for documentation

    Summary

    Notes

    References

    Index

    Figures

    Tables

    Acknowledgments

    You know that saying about standing on the shoulders of giants? Well, this book is dedicated to all those giants who, in one way or another, inspired and guided my work throughout the years. This book would not have been possible without the contribution of people like Jeff Ryan, Dirk Eddelbuettel, Ilya Kipnis, Hadley Wickham, Joshua Ulrich, Romain Francois, Guy Yollin, Bernhard Pfaff, Eric Zivot, Paul Teetor, Yihui Xie, Peter Carl, Jan Humme, Brian G. Peterson, Thomas Hutchinson, Steven Todd, Dimitrios Liakakos, Ed Zarek, and many others.

    First and foremost, I would like to thank Ilya Kipnis for contributing excellent content on the backtesting of trading strategies via the use of the quantstrat package. Ilya maintains an insightful blog here:

    http://quantstrattrader.wordpress.com/. He is also a prolific R developer, and his projects can be found on GitHub here: www.github.com/IlyaKipnis.

    My gratitude and appreciation also go out to Tick Data, Inc. for graciously providing historical intraday data for use throughout this book. Tick Data, Inc. provides research-quality historical market data solutions to practitioners and academics. Their website is www.TickData.com. Readers of this book get a special 20 percent discount on all data purchases from Tick Data’s online store by using promo-code: 13FC20.

    Dirk Eddelbuettel (of Rcpp, RProtoBuf and RQuantLib fame) was gracious enough to provide guidance and insight during the beginning stages of this publication. I would like to thank him for this contribution of his, among those of many others within the R community.

    A big thank you goes out to the graduate students of FINC 621 (Financial Mathematics and Modeling II) at Loyola University in Chicago for inspiring a lot of the content in this book.

    Last, but not least, I am grateful to the R-core team, as well as the numerous third-party contributors for maintaining and improving the R language, which has become such an integral part of my daily work routine.

    My primary intent in writing this book is to provide the reader with basic programming, financial, and mathematical tools that can be successfully leveraged both in industry and academia. I cover the use of the R programming language, as well as the R environment as a means for manipulating financial market data and for solving a subset of problems that quants and traders typically encounter in their day-to-day activities. The chapters that follow should be treated as a tutorial on a recommended set of tools that I have personally found useful and that have served me well during the last few years of my career as a quant trader/developer. I am writing this book from the vantage point of a quant practitioner and not that of an academic. A significant portion of the content is based on my lecture notes from a graduate level class in quantitative finance that I teach on a part-time basis at Loyola University in Chicago.

    This is an introductory-level book. No prior programming experience or advanced mathematical knowledge is assumed. Having said this, some chapters will tend to flow easier if you have had some prior exposure to the following topics. On the math side, I recommend a review of basic calculus, linear algebra, statistics, and probability.¹ On the programming side, familiarity with VBA, Python, and SQL² is helpful.

    This book is also aimed at practitioners and seasoned traders who want to learn more about how to conduct data analysis on financial data and how to write useful R scripts to automate some of their workflow.

    Trading and programming are vast topics in their own right, and by no means will I attempt to give a thorough explanation of each concept. You will not become an expert programmer by reading this book, nor will you make a ton of money in the markets by following my advice. This book will, however, provide tools and ideas that can assist in the analysis, implementation, and presentation of trading strategies and other related quantitative topics. Figure 1.1 provides an illustration of the items I will address in subsequent chapters.

    The mission statement

    I will attempt to take a somewhat fuzzy concept—that of creating a trading strategy—and provide plausible answers to some questions that will naturally arise. Questions like the following: How can I automate some of my trading ideas? What programming language should I use and why? What are the mathematical, financial, and programming tools needed to evaluate my strategy? Where do I get the data to test a trading strategy? How do I know that my strategy is any good? How do I present my results to others?

    Figure 1.1   Topic graph.

    Most books on programming can be used as references. You go to the index and find the topic that interests you, and then you simply go to that particular page for further information. To get the most out of this book, I recommend that you do not follow this approach. Rather, start from the beginning and read all the chapters in a linear fashion. There is a method behind this madness. I intend to expose you to a methodology of thinking about quantitative finance and to give you the confidence to tackle some of the real-world problems that naturally arise in this context. And you will accomplish all this, while utilizing R to automate the required tasks.

    It is prudent to form a mental map of where we are headed and what obstacles lie in our path. One of our end goals will be to obtain the necessary programming skills so as to tackle some very specific problems that quants and traders typically care about. The other end goal will be to manipulate financial data and to use mathematical techniques to evaluate trading strategies.

    For the purpose of making these goals more concrete, I will bake them directly into a mission statement. Here is a first attempt at such a statement:

    We will come up with an automated trading strategy that will trade a portfolio of liquid instruments in the market. The strategy will be efficient, robust, and scalable. Furthermore, the strategy will be profitable and have low risk.

    Here are some questions that might arise after reading the mission statement:

    1. What is a market?

    2. What is meant by instruments, and furthermore, what is meant by liquid instruments?

    3. What is a trading strategy, and how does one go about formulating such a thing?

    4. How is profitability of a trading strategy defined?

    5. What is risk? Specifically, how can one quantify risk in the context of a trading strategy?

    6. How can a trading strategy be automated?

    7. What is meant by efficiency?

    Financial markets and instruments

    A market is either a physical or a virtual place where transactions occur between participants. In ancient Greece, the Athenian citizens would gather in the agora³ and trade honey, olive oil, other agricultural products, and works of art in exchange for similar items. Transactions would be carried out with in-kind merchandise and currency. Similar marketplaces existed all over the ancient world. In those physical markets, as in today’s physical markets, participants would have to physically meet and agree both on the price and the terms of delivery before a transaction was confirmed.

    Today, many of the physical marketplaces of the world are giving way to virtual ones. Take amazon.com, ebay.com, and alibaba.com as examples of this trend. These are vast online marketplaces where buyers and sellers interact and transact entirely via computer. Similar trends have been occurring in the financial markets over the last few years. The old floor pits of the futures, stocks, and options exchanges are giving way to electronic platforms. Table 1.1 lists approximate electronic versus floor trading volume percentages on the CME exchange. Globex refers to the Chicago Mercantile Exchange (CME) electronic platform.

    An organized market’s primary objective is to bring together participants who are willing to trade their goods and services at an agreed-upon price. A secondary objective of a successful marketplace is to facilitate the orderly conduct of such transactions. Electronic financial markets certainly fit this description.

    Over the years, literally hundreds of financial exchanges and alternate electronic venues have popped up all over the globe. Some of the more notable stock trading venues are outlined in Table 1.2.

    Some of the more notable futures exchanges are listed in Table 1.3.

    Such exchanges enable the efficient and orderly transaction of standardized financial contracts. Financial instruments are stocks, futures, bonds, currencies, vanilla options, exotic options, swaps, swaptions, and so forth. Some of these instruments have become more popular than others [35]. The E-mini financial futures and eurodollar contracts traded on the CME, for example, are some of the most liquid contracts in the world. Investors and traders rely on these to manage their market and interest rate risks on a daily basis. The following table lists the average daily volumes of a few of these CME futures contracts [36].

    Table 1.1   Globex volume estimates by year

    Table 1.2   Popular stock exchanges

    Enjoying the preview?
    Page 1 of 1