Skip to main content

stock-pairs-trading is a python library for backtest with stock pairs trading using kalman filter on Python 3.8 and above.

Project description

stock-pairs-trading

PyPI License: MIT codecov Build Status PyPI - Python Version Downloads

stock-pairs-trading is a python library for backtest with stock pairs trading using kalman filter on Python 3.8 and above.

Installation

$ pip install stock-pairs-trading

Usage

find pairs

from stock_pairs_trading import StockPairsTrading

spt = StockPairsTrading(
    start="2007-12-01",
    end="2017-12-01",
)
r = spt.find_pairs(["AAPL", "ADBE", "MSFT", "IBM"])
print(r)
[('ADBE', 'MSFT')]

pairs.png

backtest

from pprint import pprint
from stock_pairs_trading import StockPairsTrading

spt = StockPairsTrading(
    start="2007-12-01",
    end="2017-12-01",
)
r = spt.backtest(('ADBE', 'MSFT'))
pprint(r)
{'cointegration': 0.0018311528816901195,
 'correlation': 0.9858057442729853,
 'maximum_drawdown': 34.801876068115234,
 'profit_factor': 1.1214715644744209,
 'riskreward_ratio': 0.8095390763424627,
 'sharpe_ratio': 0.03606830691295276,
 'total_profit': 35.97085762023926,
 'total_trades': 520,
 'win_rate': 0.5807692307692308}

performance.png

latest signal

from pprint import pprint
from stock_pairs_trading import StockPairsTrading

spt = StockPairsTrading(
    start="2007-12-01",
    end="2017-12-01",
)
r = spt.latest_signal(("ADBE", "MSFT"))
pprint(r)
{'ADBE Adj Close': 299.5,
 'ADBE Buy': True, # entry buy
 'ADBE Cover': False, # exit buy
 'ADBE Sell': False, # entry sell
 'ADBE Short': False, # exit sell
 'MSFT Adj Close': 244.74000549316406,
 'MSFT Buy': False, # entry buy
 'MSFT Cover': False, # exit buy
 'MSFT Sell': True, # entry sell
 'MSFT Short': False, # exit sell
 'date': '2022-09-16',
 'zscore': -36.830427514962274}

Advanced Usage

from pprint import pprint
from stock_pairs_trading import StockPairsTrading

spt = StockPairsTrading(
    start="2007-12-01",
    end="2017-12-01",
    outputs_dir_path = "outputs",
    data_dir_path = "data",
    column = "Adj Close",
    window = 1,
    transition_covariance = 0.01,
)
r = spt.backtest(('ADBE', 'MSFT'))
pprint(r)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stock-pairs-trading-0.1.1.tar.gz (5.8 kB view hashes)

Uploaded Source

Built Distribution

stock_pairs_trading-0.1.1-py3-none-any.whl (6.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page