Skip to main content

Powerful Python backtesting for Thai stocks

Project description

Logo

EzyQuant: Powerful Python backtesting for Thai stocks

PyPI PyPI - Downloads License Code style: black Formatter: docformatter Imports: isort Ruff

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.

Release history Release notifications | RSS feed

This version

0.9.6

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.6.tar.gz (14.5 MB view details)

Uploaded Source

Built Distribution

ezyquant-0.9.6-py3-none-any.whl (54.5 kB view details)

Uploaded Python 3

File details

Details for the file ezyquant-0.9.6.tar.gz.

File metadata

  • Download URL: ezyquant-0.9.6.tar.gz
  • Upload date:
  • Size: 14.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for ezyquant-0.9.6.tar.gz
Algorithm Hash digest
SHA256 bf0819881fb24747681e5ac03150e9e00428311a8e303d48d25ef07f577237a9
MD5 6dfdd791095eab77892937d0e0933352
BLAKE2b-256 0f4c9198ae5d0580ea5e26fd1f15a56197a0ce598dfb52844c49c3b820b8986b

See more details on using hashes here.

File details

Details for the file ezyquant-0.9.6-py3-none-any.whl.

File metadata

  • Download URL: ezyquant-0.9.6-py3-none-any.whl
  • Upload date:
  • Size: 54.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for ezyquant-0.9.6-py3-none-any.whl
Algorithm Hash digest
SHA256 9957ab0f5628c9c99c72fae9855e3cac1215b1edd1afe63186ab584860aa1413
MD5 59b3b2ed3865af289b1888112eed77ed
BLAKE2b-256 8a4a1391e410e1463ae6f8f692172b5881365fd6362366386b6892f3e659d0d8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page