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 management
Current Version
Able to perform backtesting. Live trading support in development.
Next Release
Live trading support.
Support This Project
Use and discuss us
Report a bug
Submit a bug fix
Installation
pip install alpyen
Example
from alpyen import datacontainer
from alpyen import backtesting
# Read data (assuming that BBH.csv from Yahoo Finance is in the Data folder)
data_folder_path = 'Data\\'
ticker_name = 'BBH'
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, data_folder_path)
# Subscribe to signals
signal_info_dict = {}
signal_info_dict[short_lookback_name]\
= backtesting.SignalInfo('MA', ticker_names, [short_lookback])
signal_info_dict[long_lookback_name]\
= backtesting.SignalInfo('MA', ticker_names, [long_lookback])
# Subscribe to strategies
strategy_info_dict = {}
strategy_name = ticker_name + '_MACrossing_01'
strategy_info_dict[strategy_name] = backtesting.StrategyInfo(
'MACrossing',
[short_lookback_name, long_lookback_name],
1, {}, ticker_names, {'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 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-0.1.5-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a9a1790f443da70609b80b4667b80b850f8e178a77241f743dcb3038e087001a |
|
MD5 | 60aa1d35e0ec414ee058e359a712496f |
|
BLAKE2b-256 | f1f2cadc8a4e64af5cfab0fc024f1e61cd1356ad620b14ec129cba12677bf951 |