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

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.

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.

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 NEWS‘Enough pollution’ in low-income NJ area with 1 power plant
‘Enough pollution’ in low-income NJ area with 1 power plant

WOODBRIDGE, N.J. (AP) — Residents of low-income communities in New Jersey that would get a second gas-fired power plant nearby are urging the governor to halt the project, which they said flies in the face of an environmental justice law he signed with great fanfare…

Stay up-to-date with the latest news - click here
LATEST NEWSAbsolute Software to Present at Raymond James Annual Institutional Investors Conference
Absolute Software to Present at Raymond James Annual Institutional Investors Conference

VANCOUVER, British Columbia & SAN JOSE, Calif. — Absolute Software™ (NASDAQ: ABST) (TSX: ABST), the only provider of self-healing, intelligent security solutions, today announced the company will present at the Raymond James 44th Annual Institutional Investors Conference on Wednesday, March 8, 2023 at 11:35 am…

Stay up-to-date with the latest news - click here
LATEST NEWSUS pick to head World Bank, ex-Mastercard CEO Banga, starts ‘charm offensive’
US pick to head World Bank, ex-Mastercard CEO Banga, starts ‘charm offensive’

WASHINGTON, March 1 (Reuters) – U.S. President Joe Biden’s pick to head the World Bank, ex-Mastercard CEO Ajay Banga, met on Wednesday with executive directors at the bank as he launched a “charm offensive” to win the post, sources familiar with the plans said. Biden…

Stay up-to-date with the latest news - click here
LATEST NEWSSnowflake and AWS Significantly Deepen Commitment to Driving Customer-focused Innovation
Snowflake and AWS Significantly Deepen Commitment to Driving Customer-focused Innovation

Snowflake and AWS expand their successful partnership by boosting sales collaboration, industry solution alignment, and joint go-to-market strategies Over 6,000 joint customers1 including Goldman Sachs and other Fortune 500 enterprises, are using Snowflake and AWS to rapidly innovate Approximately 84% of Snowflake’s customers run their…

Stay up-to-date with the latest news - click here
LATEST NEWSNew Grain February Record Set
New Grain February Record Set

Improved grain industry collaboration leads to shipping record MONTREAL, March 01, 2023 (GLOBE NEWSWIRE) — CN (TSX: CNR) (NYSE: CNI) today announced that February 2023 was the best February ever for Western Canadian grain movement on CN’s network. The Company worked with its customers and…

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

Leave a Reply