Powerful Python backtesting for Thai stocks
Project description
EzyQuant: Powerful Python backtesting for Thai stocks
Features
- Backtest
- Signal Creator
- Data Reader
Installation
pip install ezyquant
or
pip install git+https://github.com/ezyquant/ezyquant
Quick Example
import pandas as pd
import ezyquant as ez
from ezyquant import SETDataReader, backtest
from ezyquant.backtest import Context
ez.connect_sqlite("ezyquant.db")
start_date = "2020-01-01"
end_date = "2020-12-31"
initial_cash = 1e6
# Signal
sdr = SETDataReader()
trade_date_list = sdr.get_trading_dates(start_date, end_date)
signal_df = pd.DataFrame(index=pd.DatetimeIndex(trade_date_list), columns=["AOT"])
def backtest_algorithm(ctx: Context) -> float:
return 100
# Backtest
report = backtest(
signal_df=signal_df,
backtest_algorithm=backtest_algorithm,
start_date=start_date,
end_date=end_date,
initial_cash=initial_cash,
pct_commission=0.25,
)
Backtest report:
port_value port_value_with_dividend
pct_net_profit 0.024916 0.024916
cagr 0.025055 0.025055
pct_maximum_drawdown -0.223604 -0.223604
cagr_divided_maxdd 0.112052 0.112052
pct_win_per_trade 1.0 1.0
std 0.32582 0.32582
cagr_divided_std 0.076899 0.076899
pct_exposure 0.665873 0.665873
total_commission 2483.75 2483.75
initial_capital 1000000.0 1000000.0
ending_capital 1024916.25 1024916.25
net_profit 24916.25 24916.25
maximum_drawdown -235340.125 -235340.125
all_trades 1 1
avg_profit_loss 24916.25 24916.25
pct_avg_profit_loss NaN NaN
avg_bar_held 120.0 120.0
win_trades 1 1
total_profit 22364.0 22364.0
avg_profit 22364.0 22364.0
pct_avg_profit 0.02251 0.02251
avg_win_bar_held 120.0 120.0
max_win_consecutive 1 1
loss_trades 0 0
total_loss 0.0 0.0
avg_loss NaN NaN
pct_avg_loss NaN NaN
avg_lose_bar_held NaN NaN
max_lose_consecutive 0 0
start_date 2020-01-02 00:00:00 2020-01-02 00:00:00
end_date 2020-12-30 00:00:00 2020-12-30 00:00:00
pct_commission 0.25 0.25
pct_buy_slip 0.0 0.0
pct_sell_slip 0.0 0.0
You can find more examples in the examples directory.
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
ezyquant-0.9.0.tar.gz
(14.5 MB
view details)
Built Distribution
ezyquant-0.9.0-py3-none-any.whl
(53.8 kB
view details)
File details
Details for the file ezyquant-0.9.0.tar.gz
.
File metadata
- Download URL: ezyquant-0.9.0.tar.gz
- Upload date:
- Size: 14.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.17
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 72796d187b167a478ddc60f364abb7f65253f51ae1585d0ac5b51359ad077eeb |
|
MD5 | 42f13a3aa3e9744dba6ad22a5080456b |
|
BLAKE2b-256 | c329e16ac48c0056076fbec8a9c1b6b3f4f005ecf24abe9415d53ec7faffcb45 |
File details
Details for the file ezyquant-0.9.0-py3-none-any.whl
.
File metadata
- Download URL: ezyquant-0.9.0-py3-none-any.whl
- Upload date:
- Size: 53.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.17
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2ab9b7145c22e2920c7c9b1c63717b47fad5a70589650fc1da8b948728c6d877 |
|
MD5 | cccc977eac1367383dcba181425bd9e0 |
|
BLAKE2b-256 | d7660c84bbc568a966c53c26167b6e8368969e1e154c05fe0e36d744b8d31d73 |