Python based algo trading platform for IB.
Project description
alpyen
A lite-weight backtesting and live-trading algo engine for IB (Interactive Brokers) and other brokers.
Free software: 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.
Next Release
Gathering portfolio data from broker
Saving and loading sessions
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
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:
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.
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)
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
Hashes for alpyen-1.0.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2921f8613fbf39ed7ed8f3856de4bc2f532bd8e6e96393dfeb6e34cd20c4f749 |
|
MD5 | 699a37a77e35c22c84de941983a6f1cd |
|
BLAKE2b-256 | 8c1b4b5fd08a679c483d21b740a605cd88f1c6db4d6f4b27363e1946fab120ed |