.. raw:: html
====== alpyen
.. image:: https://img.shields.io/pypi/v/alpyen.svg
:target: https://pypi.python.org/pypi/alpyen
.. image:: https://readthedocs.org/projects/alpyen/badge/?version=latest
:target: https://alpyen.readthedocs.io/en/latest/?version=latest
:alt: Documentation Status
.. image:: https://pepy.tech/badge/alpyen
:target: https://pepy.tech/project/alpyen
.. image:: https://img.shields.io/github/repo-size/peeeffchang/alpyen
:alt: GitHub repo size
.. image:: https://img.shields.io/pypi/pyversions/alpyen
.. image:: https://img.shields.io/github/commit-activity/m/peeeffchang/alpyen
A lite-weight backtesting and live-trading algo engine for multiple brokers:
- Interactive Brokers (IB)
- Gemini
License: GNU General Public License v3 Documentation: https://alpyen.readthedocs.io.
Features
Providing a trading platform for IB that includes the functions of
- Data gathering
- Algo signal calculation
- Automatic trading
- Book monitoring and portfolio management
Current Version
Able to perform backtesting and live trading.
Support This Project
- Use and discuss us
- Report a bug
- Submit a bug fix
Installation
::
pip install alpyen
"Hello World"/Quick Start
For a quick demo, do the following:
- Install alpyen
- Create a py file that perform either backtesting (use the test_backtesting_macrossing_reshuffle test as an example) or live trading (use the test_live_trading test as an example)
- For live trading, create a yml control file (use the test_control.yml file as an example)
Example
.. code-block:: python
from alpyen import datacontainer
from alpyen import backtesting
from alpyen import utils
# Read data (assuming that BBH.csv from Yahoo Finance is in the Data folder)
data_folder = 'Data\\'
ticker_name = 'BBH'
file_path = os.path.join(os.path.dirname(__file__), data_folder)
short_lookback = 5
long_lookback = 200
short_lookback_name = ticker_name + '_MA_' + str(short_lookback)
long_lookback_name = ticker_name + '_MA_' + str(long_lookback)
ticker_names = [ticker_name]
all_input = datacontainer.DataUtils.aggregate_yahoo_data(ticker_names, file_path)
# Subscribe to signals
signal_info_dict = {}
signal_info_dict[short_lookback_name]\
= utils.SignalInfo('MA', ticker_names, [], [], short_lookback, {})
signal_info_dict[long_lookback_name]\
= utils.SignalInfo('MA', ticker_names, [], [], long_lookback, {})
# Subscribe to strategies
strategy_info_dict = {}
strategy_name = ticker_name + '_MACrossing_01'
strategy_info_dict[strategy_name] = utils.StrategyInfo(
'MACrossing',
[short_lookback_name, long_lookback_name],
1, {}, ticker_names, combo_definition={'combo1': [1.0]})
# Create backtester and run backtest
number_path = 1000
my_backtester = backtesting.Backtester(all_input, ticker_names, signal_info_dict, strategy_info_dict,
number_path)
my_backtester.run_backtest()
backtest_results = my_backtester.get_results()
The
- moving average signal / MA-crossing trading strategy; and
- weighted momentum signal / VAA strategy
are built-in in the package, and are intended to serve as examples. Users can use them as references and create their custom signals/strategies by deriving from the SignalBase class within the signal module, and the StrategyBase class within the strategy module. Note that the package needs a unique signature string for each derived signals/strategies for reflective object creation, so for example:
.. code-block:: python
class MASignal(SignalBase):
"""
Moving average signal.
"""
_signal_signature = 'MA'
class MACrossingStrategy(StrategyBase):
"""
MA Crossing Strategy
"""
_strategy_signature = 'MACrossing'
Credits
This package was created with Cookiecutter_ and the audreyr/cookiecutter-pypackage_ project template.
.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _audreyr/cookiecutter-pypackage: https://github.com/audreyr/cookiecutter-pypackage
======= History
0.1.0 (2021-09-12)
- First release on PyPI.
0.1.1 (2021-10-12)
0.1.2 (2021-10-17)
0.1.3 (2021-11-12)
0.1.4 (2021-11-19)
Metadata
Release files for alpyen 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| alpyen-1.2.0.tar.gz | 534.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| alpyen-1.2.0-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details |
Total release size: 568.9 kB
Release files / alpyen-1.2.0.tar.gz
| Download URL | alpyen-1.2.0.tar.gz |
|---|---|
| Size | 534.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
950bf77e8d82fd1821309ef35d89f094836fa272929a603b27adeafd6b107fdf
|
|
BLAKE2b-256 checksum How to use checksums |
d49d0db92bd01fbb0ffe792a765062acee4ff8986de8696f3091a37116df2d28
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.8.2 readme-renderer/30.0 requests/2.26.0 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.42.1 importlib-metadata/1.5.0 keyring/21.1.0 rfc3986/1.5.0 colorama/0.4.4 CPython/3.7.6
|
Release files / alpyen-1.2.0-py2.py3-none-any.whl
| Download URL | alpyen-1.2.0-py2.py3-none-any.whl |
|---|---|
| Size | 34.0 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
bc9849874a2ede05354e1851d641f6ae91647faff68fa8407965f996f2233543
|
|
BLAKE2b-256 checksum How to use checksums |
71f361250f31f9e97163c14f366ee749dae2ec08ee82b42b2cfe1c5130bb3d90
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.8.2 readme-renderer/30.0 requests/2.26.0 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.42.1 importlib-metadata/1.5.0 keyring/21.1.0 rfc3986/1.5.0 colorama/0.4.4 CPython/3.7.6
|