Trading Performance of an ETF Pair Strategy-Quantitative Trading In Python

Subscribe to newsletter

In a previous post, we presented statistical tests for the Australia/Canada country ETF pair. Specifically, we calculated the return correlation and performed cointegration tests using a training set consisted of 8 years of data. The high correlation and the fact that the pair spread passed 2 cointegration tests made this pair a good candidate for trading. In this follow-up post, we are going to implement a trading strategy using this pair in Python. We utilize the remaining 2 years out-of-sample data to generate trading signals and calculate strategy performance.

To generate trading signals, we calculate the z-score of the spread.

In statistics, the standard score is the number of standard deviations by which the value of a raw score (i.e., an observed value or data point) is above or below the mean value of what is being observed or measured. Raw scores above the mean have positive standard scores, while those below the mean have negative standard scores.

Subscribe to newsletter https://harbourfrontquant.beehiiv.com/subscribe Newsletter Covering Trading Strategies, Risk Management, Financial Derivatives, Career Perspectives, and More

It is calculated by subtracting the population mean from an individual raw score and then dividing the difference by the population standard deviation. This process of converting a raw score into a standard score is called standardizing or normalizing (however, “normalizing” can refer to many types of ratios; see normalization for more). Read more

We then use the z-score to enter and exit the trade. The picture below shows the cumulative return of the strategy from January 2019 to November 2020.

pair trading in Python

It’s interesting to observe that the strategy performed well in general, but experienced a large PnL swing during the pandemic.

The table below summarizes the performance of each ETF along with the pair strategy.

Quantitative trading in python

We note that although in terms of annualized return, the pair strategy (0.058 p.a.) did not outperform the Buy and Hold, but in terms of risk-adjusted return, it outperformed (Sharpe ratio of 0.647) the Buy and Hold by a large margin.

The Python program below will allow you to perform statistical tests on a pair. It does NOT include the backtesting part.


To download the accompanying Excel workbook or Python program for this post:
1. Subscribe to the newsletter. If you're already a subscriber, go to the next step
2. Once subscribed, refer a friend
After completing these steps, you’ll gain access to the file for this post, along with files for a dozen other posts.

Subscribe to newsletter https://harbourfrontquant.beehiiv.com/subscribe Newsletter Covering Trading Strategies, Risk Management, Financial Derivatives, Career Perspectives, and More

Further questions

What's your question? Ask it in the discussion forum

Have an answer to the questions below? Post it here or in the forum

LATEST NEWSTata Steel to Cut 1,600 Dutch Jobs in Cost Reduction Push
Tata Steel to Cut 1,600 Dutch Jobs in Cost Reduction Push

Tata Steel Ltd. plans to cut about 1,600 jobs in the Netherlands as it seeks to cut costs and fund its transition to green steel.

Stay up-to-date with the latest news - click here
LATEST NEWSOneVest Transforms Mobile Wealth Management for Advisors & Clients with a Customizable Mobile App for Today’s Modern Investor
OneVest Transforms Mobile Wealth Management for Advisors & Clients with a Customizable Mobile App for Today’s Modern Investor

NEW YORK — OneVest is pushing the limits of modular wealth infrastructure with its white-labeled mobile app, deployed and transforming the way customers and advisors operate today. Designed with simplicity, the mobile app enables businesses to deliver a modern, fully branded wealth management experience, driving…

Stay up-to-date with the latest news - click here
LATEST NEWSMilei Needs Rush of Soy Dollars to Calm Peso Selloff in Argentina
Milei Needs Rush of Soy Dollars to Calm Peso Selloff in Argentina

Marcelo Cervigni, like thousands of Argentine farmers, is getting ready for the main event of the year: the soybean harvest. The timing couldn’t be better for President Javier Milei, who needs the billions of dollars that shipments fetch to offset the country’s spiraling foreign-exchange deficit.

Stay up-to-date with the latest news - click here
LATEST NEWSConstellation Software Inc., Topicus.com Inc. and Lumine Group Inc. Announce Annual Meetings
Constellation Software Inc., Topicus.com Inc. and Lumine Group Inc. Announce Annual Meetings

TORONTO, April 09, 2025 (GLOBE NEWSWIRE) — The Topicus.com Inc. (“Topicus”) (TSXV:TOI) annual general meeting of shareholders will be held on Tuesday, May 13, 2025 at 8:00 a.m. EST using a virtual meeting format with proceedings conducted solely via live audio webcast. The Lumine Group…

Stay up-to-date with the latest news - click here
LATEST NEWSConstellation Software Inc., Topicus.com Inc. and Lumine Group Inc. Announce Annual Meetings
Constellation Software Inc., Topicus.com Inc. and Lumine Group Inc. Announce Annual Meetings

TORONTO, April 09, 2025 (GLOBE NEWSWIRE) — The Topicus.com Inc. (“Topicus”) (TSXV:TOI) annual general meeting of shareholders will be held on Tuesday, May 13, 2025 at 8:00 a.m. EST using a virtual meeting format with proceedings conducted solely via live audio webcast. The Lumine Group…

Stay up-to-date with the latest news - click here

Leave a Reply