jquants-ml is a python library for machine learning with japanese stock trade using J-Quants on Python 3.8 and above.
Project description
jquants-ml
jquants-ml is a python library for machine learning with japanese stock trade using J-Quants on Python 3.8 and above.
Installation
$ pip install jquants-ml
Usage
backtest
from jquants_ml import Ml
import pprint
class MyMl(Ml):
def features(self):
self.X["close"] = self.df.Close
self.X["ror"] = self.df.Close.pct_change(1)
self.X["sma"] = self.sma(period=5)
ml = MyMl(
mail_address="<your J-Quants mail address>",
password="<your J-Quants password>",
ticker="7203", # TOYOTA
size=100, # 100 shares
)
pprint.pprint(ml.backtest())
{'long': {'maximum drawdown': '15250.000',
'profit': '12700.000',
'profit factor': '1.183',
'riskreward ratio': '1.213',
'sharpe ratio': '0.063',
'trades': '81.000',
'win rate': '0.494'},
'short': {'maximum drawdown': '50100.000',
'profit': '-43800.000',
'profit factor': '0.413',
'riskreward ratio': '0.478',
'sharpe ratio': '0.298',
'trades': '41.000',
'win rate': '0.463'},
'total': {'maximum drawdown': '47200.000',
'profit': '-31100.000',
'profit factor': '0.784',
'riskreward ratio': '0.837',
'sharpe ratio': '0.149',
'trades': '122.000',
'win rate': '0.484'}}
predict
from jquants_ml import Ml
import pprint
class MyMl(Ml):
def features(self):
self.X["close"] = self.df.Close
self.X["ror"] = self.df.Close.pct_change(1)
self.X["sma"] = self.sma(period=5)
ml = MyMl(
mail_address="<your J-Quants mail address>",
password="<your J-Quants password>",
ticker="7203", # TOYOTA
size=100, # 100 shares
)
pprint.pprint(ml.predict())
{'Date': '2023-08-01', 'Price': 2445.5, 'Sign': 'short'}
advanced
from jquants_ml import Ml
class MyMl(Ml):
# Awesome Oscillator
def ao(self, *, fast_period: int = 5, slow_period: int = 34):
return ((self.df.H + self.df.L) / 2).rolling(fast_period).mean() - (
(self.df.H + self.df.L) / 2
).rolling(slow_period).mean()
def features(self):
self.X["ao"] = self.ao(fast_period=5, slow_period=34)
self.X["close"] = self.df.Close
self.X["ror"] = self.df.Close.pct_change(1)
self.X["sma"] = self.sma(period=5)
self.X["ema"] = self.ema(period=5)
self.X["upper"], self.X["mid"], self.X["lower"] = self.bbands(
period=20, band=2
)
self.X["macd"], self.X["signal"] = self.macd(
fast_period=12, slow_period=26, signal_period=9
)
self.X["k"], self.X["d"] = self.stoch(k_period=5, d_period=3)
self.X["rsi"] = self.rsi(period=14)
self.X["atr"] = self.atr(period=14)
self.X["mom"] = self.mom(period=10)
ml = MyMl(
mail_address="<your J-Quants mail address>",
password="<your J-Quants password>",
ticker="7203", # TOYOTA
size=100, # 100 shares
outputs_dir_path="outputs",
model_dir_path="model",
data_dir_path="data",
)
pprint.pprint(ml.backtest())
pprint.pprint(ml.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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
jquants-ml-0.1.4.tar.gz
(7.4 kB
view hashes)
Built Distribution
Close
Hashes for jquants_ml-0.1.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 55eb24e0891ac5d26cda397bf30a34281ab47c400e249741de10a868ffc7e1b3 |
|
MD5 | 572a060ccd2c328e296a8a3fdcf322c4 |
|
BLAKE2b-256 | ef603f6afcdbca90b8bf491d700523929fb89684e8dd430eb3372cd9df253278 |