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.2.tar.gz
(14.5 MB
view details)
Built Distribution
ezyquant-0.9.2-py3-none-any.whl
(54.0 kB
view details)
File details
Details for the file ezyquant-0.9.2.tar.gz
.
File metadata
- Download URL: ezyquant-0.9.2.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 | 7253377e7847a9b8cd4251516b074937de3030293d144913bc77b6a2f6caef0e |
|
MD5 | f87d8762c3b3405145221ffc46cfbbd2 |
|
BLAKE2b-256 | fdfb12490219265afbc6ed6868c8c3bd502b9a10240ac8a0a476ebf28504fad0 |
File details
Details for the file ezyquant-0.9.2-py3-none-any.whl
.
File metadata
- Download URL: ezyquant-0.9.2-py3-none-any.whl
- Upload date:
- Size: 54.0 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 | 8afc1c57160fd31a1202d1a3bd42787beda229afa57e566a34a32877aefc4a5f |
|
MD5 | 7cbeeff126c3fbfc2c965883991c3335 |
|
BLAKE2b-256 | 16a1eafdddcddcff8996f03af72fd4e3de8aefad90811ca6ba846255729f0470 |