# Pair trading strategy : how to use "PairTrading" package

**My Life as a Mock Quant in English**, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)

Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

**“PairTrading” package**, and uploaded it on CRAN.

This article shows you how you can use it.

The pair trading is a market neutral trading strategy and gives traders a chance to profit regardless of market conditions. The idea of this strategy is quite simple.

1 : Select two stocks(or any assets) moving similarly

2 : Short out-performing stock, buy under-performing one

3 : If “spread”(price difference between two stocks) converge, close your position.

So, Let’s start to explain how to use this package.

(This example is in PDF manual of this package)

**0: Install & load package**

You can install and load “PairTrading” package via CRAN in the same way as other packages.

> install.packages("PairTrading") > library(PairTrading)

**1: Load sample data**

We prepared sample stock price data in our package. You can load it by using “data” command.

> #load sample stock price data > data(stock.price)

**2: Estimate parameters**

Next, We extract two stock prices(from 31 Mar, 2008) and estimate parameters.

> #select 2 stocks > price.pair <- stock.price[,1:2]["2008-03-31::"] > #Estimate parameters & plot spread > reg <- EstimateParameters(price.pair, method = lm)

At the moment, we have only normal linear regression method to estimate parameters, but we will develop more sophisticated method in the future.The estimation result contains the following contents.

> str(reg) List of 3 $ spread :An ‘xts’ object from 2008-03-31 to 2011-08-05 containing: Data: num [1:821, 1] 0.26 0.271 0.294 0.275 0.255 ... - attr(*, "dimnames")=List of 2 ..$ : NULL ..$ : chr "7203" Indexed by objects of class: [Date] TZ: xts Attributes: NULL $ hedge.ratio: num 0.285 $ premium : num 6.34

The most important thing in this estimation is "spread", then we try to plot it.

> plot(reg$spread)

And, you can check the stationarity of that by using "IsStationary" function.

This function return the result of two types unit root test.

> #check stationarity > IsStationary(reg$spread, 0.1) PP.test adf.test TRUE TRUE

( augmented Dickey–Fuller test (ADF) and Phillips-Perron test)

**3: Estimate parameters for back-test**

To run back-test, you have to estimate parameters historically by using "EstimateParametersHistorically"function. This function do something like "rolling regression" to estimate parameters. This point is different from "EstimateParameter" function.

> #estimate parameters for back test > params <- EstimateParametersHistorically(price.pair, period = 180) > #create & plot trading signals > str(params) An ‘xts’ object from 2008-12-18 to 2011-08-05 containing: Data: num [1:642, 1:3] 0.065 0.0577 0.0396 0.0136 0.021 ... - attr(*, "dimnames")=List of 2 ..$ : NULL ..$ : chr [1:3] "spread" "hedge.ratio" "premium" Indexed by objects of class: [Date] TZ: xts Attributes: NULL

**4: Create trading signal**

> #create & plot trading signals > signal <- Simple(params$spread, 0.05) > barplot(signal,col="blue",space = 0, border = "blue",xaxt="n",yaxt="n",xlab="",ylab="") > par(new=TRUE) > plot(params$spread)

In this case, The trading signal is drawn as below.

> #performance > return.pairtrading <- Return(price.pair, lag(signal), lag(params$hedge.ratio)) > plot(100 * cumprod(1 + return.pairtrading))

In this case, our strategy seems to work correctly 🙂

**6: Conclusion and remarks**

It may be useful for you to understand the basic concept of pair trading if you are interested in it.

**Introduction to pairtrading**

Enjoy!

**leave a comment**for the author, please follow the link and comment on their blog:

**My Life as a Mock Quant in English**.

R-bloggers.com offers

**daily e-mail updates**about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.

Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.