jquants-algo is a python library for algorithmic trading with japanese stock trade using J-Quants on Python 3.8 and above.
Project description
jquants-algo
jquants-algo is a python library for algorithmic trading with japanese stock trade using J-Quants on Python 3.8 and above.
Installation
$ pip install jquants-algo
Usage
backtest
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())
{'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'}}
predict
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())
{'buy entry': True,
'buy exit': False,
'close': 2416.5,
'date': '2023-08-22',
'sell entry': False,
'sell exit': True}
advanced
from jquants_algo import Algo
import pprint
class MyAlgo(Algo):
def strategy(self):
rsi = self.rsi(period=10)
ema = self.ema(period=20)
lower = ema - (ema * 0.001)
upper = ema + (ema * 0.001)
self.buy_entry = (rsi < 30) & (self.df.Close < lower)
self.sell_entry = (rsi > 70) & (self.df.Close > upper)
self.sell_exit = ema > self.df.Close
self.buy_exit = ema < self.df.Close
algo = MyAlgo(
mail_address="<your J-Quants mail address>",
password="<your J-Quants password>",
ticker="7203", # TOYOTA
size=100, # 100 shares
outputs_dir_path="outputs",
data_dir_path="data",
)
pprint.pprint(algo.backtest())
pprint.pprint(algo.predict())
Supported indicators
- Simple Moving Average 'sma'
- Exponential Moving Average 'ema'
- Moving Average Convergence Divergence 'macd'
- Relative Strenght Index 'rsi'
- Bollinger Bands 'bbands'
- Market Momentum 'mom'
- Stochastic Oscillator 'stoch'
- Average True Range 'atr'
Getting started
For help getting started with J-Quants, view our online documentation.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
jquants-algo-0.1.1.tar.gz
(7.3 kB
view hashes)
Built Distribution
Close
Hashes for jquants_algo-0.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7d0898dbc2f785454ef4c2c920a96ead2f0b9a6678bb7c1a0a001101395e7ef8 |
|
MD5 | 100bf231b88c4b3274684fd53b2b717a |
|
BLAKE2b-256 | 8572fd25c87e1500b3abf14221c14f987289b28e9372b596e0b65d318a991a16 |