A toolbox library for quant traders
Project description
Papers With Backtest Toolbox
The pwb-toolbox package is designed to provide tools and resources for systematic trading strategies. It includes datasets and strategy ideas to assist in developing and backtesting trading algorithms. For detailed instructions on how to use this package effectively, please refer to the associated Substack publication by visiting: https://blog.paperswithbacktest.com/.
Installation
To install the pwb-toolbox package:
pip install pwb-toolbox
This package requires Python 3.10 or higher.
To login to Huggingface Hub with Access Token
huggingface-cli login
Usage
The pwb-toolbox package offers a range of functionalities for systematic trading analysis. Here are some examples of how to utilize the package:
- Import
pwb_toolbox.datasetsand sequentially loads datasets for different asset classes, such as bonds, commodities, cryptocurrencies, ETFs, forex, indices, and stocks, using theload_datasetfunction:
import pwb_toolbox.datasets as pwb_ds
df = pwb_ds.get_pricing(["AAPL", "MSFT", "GOOGL"])
df = pwb_ds.load_dataset("Bonds-Daily-Price")
df = pwb_ds.load_dataset("Commodities-Daily-Price")
df = pwb_ds.load_dataset("Cryptocurrencies-Daily-Price")
df = pwb_ds.load_dataset("ETFs-Daily-Price")
df = pwb_ds.load_dataset("Forex-Daily-Price")
df = pwb_ds.load_dataset("Indices-Daily-Price")
df = pwb_ds.load_dataset("Stocks-Daily-Price")
- Load daily stock price data for specific symbols using the load_dataset function. The first call retrieves data for Apple and Microsoft. The second call retrieves the same stocks but without price adjustments (
adjust=False). The third call loads daily price data for the S&P 500 index:
import pwb_toolbox.datasets as pwb_ds
df = pwb_ds.load_dataset(
"Stocks-Daily-Price",
["AAPL", "MSFT"],
)
df = pwb_ds.load_dataset(
"Stocks-Daily-Price",
["AAPL", "MSFT"],
adjust=False,
)
df = pwb_ds.load_dataset(
"Stocks-Daily-Price",
["sp500"],
)
- The
extend=Trueargument instructs the function to return an extended historical data using indices, commodities, and bonds data.
import pwb_toolbox.datasets as pwb_ds
df = pwb_ds.load_dataset(
"ETFs-Daily-Price",
["SPY", "IEF"],
extend=True,
)
- The argument
rate_to_price=Falsespecifies that bond yield rates should not be converted to price values in the returned data:
import pwb_toolbox.datasets as pwb_ds
df = pwb_ds.load_dataset(
"Bonds-Daily-Price",
["US10Y"],
rate_to_price=False,
)
- The argument
to_usd=Falseindicates that the data should not be converted to U.S. dollars, implying that it might be available in another currency.
import pwb_toolbox.datasets as pwb_ds
df = pwb_ds.load_dataset(
"Indices-Daily-Price",
["US10Y"],
to_usd=False,
)
Backtest engine
The pwb_toolbox.backtest module offers simple building blocks for running
Backtrader simulations. Alpha models generate Insight objects which are turned
into portfolio weights and executed via Backtrader orders.
from pwb_toolbox.backtest.examples import GoldenCrossAlpha, EqualWeightPortfolio
from pwb_toolbox.backtest import run_backtest
run_backtest(["SPY", "QQQ"], GoldenCrossAlpha(), EqualWeightPortfolio(), start="2015-01-01")
Contributing
Contributions to the pwb-toolbox package are welcome! If you have any improvements, new datasets, or strategy ideas to share, please follow these guidelines:
- Fork the repository and create a new branch for your feature.
- Make your changes and ensure they adhere to the package's coding style.
- Write tests to validate the functionality or provide sample usage examples.
- Submit a pull request, clearly explaining the purpose and benefits of your contribution.
Please note that all contributions are subject to review and approval by the maintainers.
Build the Package
To build the package, run:
python -m pip install --upgrade build
rm -r dist
python -m build
To upload the package to PyPI, run:
twine upload dist/*
License
The pwb-toolbox package is released under the MIT license. See the LICENSE file for more details.
Contact
For any questions, issues, or suggestions regarding the pwb-toolbox package, please contact the maintainers or create an issue on the repository. We appreciate your feedback and involvement in improving the package.
Happy trading!
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pwb_toolbox-0.1.7.tar.gz.
File metadata
- Download URL: pwb_toolbox-0.1.7.tar.gz
- Upload date:
- Size: 21.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b443230d9d1f5ea6fd500645eeb2e6e89107e528888c32a84d42c629281aade1
|
|
| MD5 |
b26160bff72ab15a86b0a5c91ce3e1b1
|
|
| BLAKE2b-256 |
f3ccc32b0dbfc41817d7e6236b131543d906bda732dc7f08382e0bfffe1115e1
|
File details
Details for the file pwb_toolbox-0.1.7-py3-none-any.whl.
File metadata
- Download URL: pwb_toolbox-0.1.7-py3-none-any.whl
- Upload date:
- Size: 19.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f17c2293ed63497123e494992225d304bdce8858c6f228dc197eeb0d3cb5cc8d
|
|
| MD5 |
00f53fadab028c443ce392dc6aa54108
|
|
| BLAKE2b-256 |
127811526d145eae6bf286e78a12d3a6823c27056eeebf8919000b88c7fc5b2a
|