Automatic trading library for cryptocurrencies.
Project description
Alchemist_lib
Description
Alchemist_lib is an automatic trading library for cryptocurrencies that allow to personalize the portfolio based on a specific strategy.
Features
Easy to use: The interface is similar to zipline, a popular backtesting software for stocks.
Portfolio personalization: You can choose the weight of every element on the portfolio.
Most common technical analysis indicators already integrated.
Execute orders on the most famous exchanges.
Possibility to visualize the asset allocation and the portfolio value charts for every strategy thanks to alchemist-view.
Fully documented and hosted on readthedocs.
Supported Exchanges
The following exchanges are available to trade on:
Requirements
Python3
Mysql
Installation
See the installing documentation.
Code example
Strategy description: Hold a portfolio equally composed by Ethereum and BitcoinCash.
from alchemist_lib.portfolio import LongsOnlyPortfolio from alchemist_lib.broker import PoloniexBroker from alchemist_lib.tradingsystem import TradingSystem import alchemist_lib.exchange as exch import pandas as pd def set_weights(df): df["weight"] = 0.5 #Because there are just two assets. return df def select_universe(session): poloniex_assets = exch.get_assets(session = session, exchange_name = "poloniex") my_universe = [] for asset in poloniex_assets: if asset.ticker == "ETH" or asset.ticker == "BCH": my_universe.append(asset) return my_universe def handle_data(session, universe): #The value of alpha is useless in this case. df = pd.DataFrame(data = {"asset" : universe, "alpha" : 0}, columns = ["asset", "alpha"]).set_index("asset") return df algo = TradingSystem(name = "BuyAndHold", portfolio = LongsOnlyPortfolio(capital = 0.02), set_weights = set_weights, select_universe = select_universe, handle_data = handle_data, broker = PoloniexBroker(api_key = "APIKEY", secret_key = "SECRETKEY"), paper_trading = True) algo.run(delay = "15M", frequency = 1)
Screenshot
Basic concepts
Alchemist_lib works with three methods:
set_weights
select_universe
handle_data
set_weights is used to set the weight that an asset has respect the others within the portfolio. The sum of every weight must be close to 1. Must returns a pandas dataframe with two columns: “asset” and “alpha”, where “asset” is the index.
select_universe filters the assets saved on the database and returns just the ones the strategy will take into consideration.
handle_data is the most importat one because it manages the trading logic. Must returns a pandas dataframe with two columns: “asset” and “alpha”, where “asset” is the index.
You can find other examples in the examples directory.
Reporting bugs
A bug tracker is provided by Github.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file alchemist_lib-1.0.tar.gz
.
File metadata
- Download URL: alchemist_lib-1.0.tar.gz
- Upload date:
- Size: 1.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b894c705c5b405c0f020e6b280f336e0635c9087f19d348da754348c02773fc5 |
|
MD5 | 0638a397c5e7e37bf7fa1f077f712c6f |
|
BLAKE2b-256 | 052a25f740d9c56c4f6f5276d66e9d6d6e8fcceafd732de1f8acd9e90ea50097 |