Skip to main content

Rapidly build, backtest & deploy trading bots

Project description



💨 Rapidly build and deploy quantitative models for stocks, crypto, and forex 🚀


View Docs · Our Website · Join Our Newsletter · Getting Started


Why Blankly?

Blankly is an ecosystem for algotraders enabling anyone to build, monetize and scale their trading algorithms for stocks, crypto, futures or forex. The same code can be backtested, paper traded, sandbox tested and run live by simply changing a single line. Develop locally then deploy, iterate and share using the blankly platform.

The blankly package is designed to be extremely precise in both simulation and live trading. The engineering considerations for highly accurate simulation are described here

Getting started is easy - just pip install blankly and blankly init.

Check out our website and our docs.


Trade Stocks, Crypto, Futures, and Forex

from blankly import Alpaca, CoinbasePro

stocks = Alpaca()
crypto = CoinbasePro()
futures = BinanceFutures()

# Easily perform the same actions across exchanges & asset types
stocks.interface.market_order('AAPL', 'buy', 1)
crypto.interface.market_order('BTC-USD', 'buy', 1)
# Full futures feature set
futures.interface.get_hedge_mode()

Backtest your trades, events, websockets, and custom data

import blankly
"""
This example shows how backtest over tweets
"""

class TwitterBot(blankly.Model):
    def main(self, args):
        while self.has_data:
            self.backtester.value_account()
            self.sleep('1h')

    def event(self, type_: str, data: str):
        # Now check if it's a tweet about Tesla
        if 'tsla' in data.lower() or 'gme' in data.lower():
            # Buy, sell or evaluate your portfolio
            pass


if __name__ == "__main__":
    exchange = blankly.Alpaca()
    model = TwitterBot(exchange)

    # Add the tweets json here
    model.backtester.add_custom_events(blankly.data.JsonEventReader('./tweets.json'))
    # Now add some underlying prices at 1 month
    model.backtester.add_prices('TSLA', '1h', start_date='3/20/22', stop_date='4/15/22')

    # Backtest or run live
    print(model.backtest(args=None, initial_values={'USD': 10000}))

Check out alternative data examples here

Accurate Backtest Holdings

Go Live in One Line

Seamlessly run your model live!

# Just turn this
strategy.backtest(to='1y')
# Into this
strategy.start()

Dates, times, and scheduling adjust on the backend to make the experience instant.

Quickstart

Installation

  1. First install Blankly using pip. Blankly is hosted on PyPi.
$ pip install blankly
  1. Next, just run:
$ blankly init

This will initialize your working directory.

The command will create the files keys.json, settings.json, backtest.json, blankly.json and an example script called bot.py.

If you don't want to use our init command, you can find the same files in the examples folder under settings.json and keys_example.json

  1. From there, insert your API keys from your exchange into the generated keys.json file or take advantage of the CLI keys prompt.

More information can be found on our docs

Directory format

The working directory format should have at least these files:

project/
   |-bot.py
   |-keys.json
   |-settings.json

Additional Info

Make sure you're using a supported version of python. The module is currently tested on these versions:

  • Python 3.7
  • Python 3.8
  • Python 3.9
  • Python 3.10

For more info, and ways to do more advanced things, check out our getting started docs.

Supported Exchanges

Exchange Live Trading Websockets Paper Trading Backtesting
Coinbase Pro 🟢 🟢 🟢 🟢
Binance 🟢 🟢 🟢 🟢
Alpaca 🟢 🟢 🟢 🟢
OANDA 🟢 🟢 🟢
FTX 🟢 🟢 🟢 🟢
KuCoin 🟢 🟢 🟢 🟢
Binance Futures 🟢 🟢 🟢 🟢
FTX Futures 🟡 🟡 🟢 🟢
Okx 🟢 🟢 🟢 🟢
Kraken 🟡 🟡 🟡 🟡
Keyless Backtesting 🟢
TD Ameritrade 🔴 🔴 🔴 🔴
Webull 🔴 🔴 🔴 🔴
Robinhood 🔴 🔴 🔴 🔴

🟢 = working

🟡 = in development, some or most features are working

🔴 = planned but not yet in development

RSI Example

We have a pre-built cookbook examples that implement strategies such as RSI, MACD, and the Golden Cross found in our examples.

Other Info

Subscribe to our news!

https://blankly.substack.com/p/coming-soon

Bugs

Please report any bugs or issues on the GitHub's Issues page.

Disclaimer

Trading is risky. We are not responsible for losses incurred using this software, software fitness for any particular purpose, or responsibility for any issues or bugs. This is free software.

Contributing

If you would like to support the project, pull requests are welcome.

Licensing

Blankly is distributed under the LGPL License. See the LICENSE for more details.

New updates every day 💪.

Art by DALL·E 2 - "Robots playfully trading stocks synthwave"

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

blankly-1.18.25b0.tar.gz (212.2 kB view details)

Uploaded Source

Built Distribution

blankly-1.18.25b0-py3-none-any.whl (304.4 kB view details)

Uploaded Python 3

File details

Details for the file blankly-1.18.25b0.tar.gz.

File metadata

  • Download URL: blankly-1.18.25b0.tar.gz
  • Upload date:
  • Size: 212.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.0 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.0

File hashes

Hashes for blankly-1.18.25b0.tar.gz
Algorithm Hash digest
SHA256 7b26d4ba685c31465f55a197d87ec296278d696d209e88140f33f0403880d5a4
MD5 b33407c99407bf73ab1cf66bd7df913c
BLAKE2b-256 73fba856f5aaae13280c5d6d0ddd6fd331513f63edc099b15d850e405524a88f

See more details on using hashes here.

File details

Details for the file blankly-1.18.25b0-py3-none-any.whl.

File metadata

  • Download URL: blankly-1.18.25b0-py3-none-any.whl
  • Upload date:
  • Size: 304.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.0 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.0

File hashes

Hashes for blankly-1.18.25b0-py3-none-any.whl
Algorithm Hash digest
SHA256 07549d6b01a5b3c66716fa34ef37e1bbfdb8e5c650bb93f7077a76db8ebd11b6
MD5 1f20bdf90883dffe2b96d4ee4d85edba
BLAKE2b-256 dd2c72d10d95336b153379425d6232a114e8c8860b8a77966c6d37ad0b5bce84

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page