見出し画像

超簡単Pythonで株式ペアトレードバックテスト(カルマンフィルター 利用)

Pythonでカルマンフィルターを利用して超簡単に株式ペアトレードバックテスト

1. ツールインストール

$ pip install stock-pairs-trading

2. ペアを探す

pair.py

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)

実行

$ python pair.py

[('ADBE', 'MSFT')]

画像2

3. バックテスト

backtest.py

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)

実行

$ python backtest.py

{'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}

画像1

4. 最新の売買シグナル取得

signal.py

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)

実行

$ python signal.py

{'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}​

以上、超簡単!

5. 参考


この記事が気に入ったらサポートをしてみませんか?