見出し画像

超簡単Pythonで日本株アルゴリズムトレードバックテスト(J-Quants 利用)

Pythonで超簡単にJ-Quantsを利用して日本株アルゴリズムトレードバックテスト


1. J-Quantsで無料アカウント作成

2. ツールインストール

$ pip install jquants-algo

3. バックテスト

backtest.py

from jquants_algo import Algo
import pprint

class MyAlgo(Algo):
    def strategy(self):
        fast_ma = self.sma(period=3)
        slow_ma = self.sma(period=5)
        # golden cross
        self.sell_exit = self.buy_entry = (fast_ma > slow_ma) & (
            fast_ma.shift() <= slow_ma.shift()
        )
        # dead cross
        self.buy_exit = self.sell_entry = (fast_ma < slow_ma) & (
            fast_ma.shift() >= slow_ma.shift()
        )

algo = MyAlgo(
    mail_address="<your J-Quants mail address>",
    password="<your J-Quants password>",
    ticker="7203",  # TOYOTA
    size=100,  # 100 shares
)
pprint.pprint(algo.backtest())

実行

$ python backtest.py

{'long': {'average return': '0.156',
          'maximum drawdown': '49350.000',
          'profit': '11450.000',
          'profit factor': '1.080',
          'riskreward ratio': '1.455',
          'sharpe ratio': '0.038',
          'trades': '54.000',
          'win rate': '0.426'},
 'short': {'average return': '-0.238',
           'maximum drawdown': '42050.000',
           'profit': '-31020.000',
           'profit factor': '0.754',
           'riskreward ratio': '1.319',
           'sharpe ratio': '-0.091',
           'trades': '55.000',
           'win rate': '0.364'},
 'total': {'average return': '-0.043',
           'maximum drawdown': '79950.000',
           'profit': '-19570.000',
           'profit factor': '0.927',
           'riskreward ratio': '1.423',
           'sharpe ratio': '-0.013',
           'trades': '109.000',
           'win rate': '0.394'}}

4. 最新の売買予測

predict.py

from jquants_algo import Algo
import pprint

class MyAlgo(Algo):
    def strategy(self):
        fast_ma = self.sma(period=3)
        slow_ma = self.sma(period=5)
        # golden cross
        self.sell_exit = self.buy_entry = (fast_ma > slow_ma) & (
            fast_ma.shift() <= slow_ma.shift()
        )
        # dead cross
        self.buy_exit = self.sell_entry = (fast_ma < slow_ma) & (
            fast_ma.shift() >= slow_ma.shift()
        )

algo = MyAlgo(
    mail_address="<your J-Quants mail address>",
    password="<your J-Quants password>",
    ticker="7203",  # TOYOTA
    size=100,  # 100 shares
)
pprint.pprint(algo.predict())

実行

$ python predict.py

{'buy entry': True,
 'buy exit': False,
 'close': 2416.5,
 'date': '2023-08-22',
 'sell entry': False,
 'sell exit': True}

以上、超簡単!

5. 参考


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