investing-algorithm-framework


Nameinvesting-algorithm-framework JSON
Version 3.5.2 PyPI version JSON
download
home_pageNone
SummaryA framework for creating trading bots
upload_time2024-04-13 07:54:35
maintainerNone
docs_urlNone
authorMDUYN
requires_python<4.0.0,>=3.8.1
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <a href=https://investing-algorithm-framework.com><img src="https://img.shields.io/badge/docs-website-brightgreen"></a>
[![Build](https://github.com/coding-kitties/investing-algorithm-framework/actions/workflows/publish.yml/badge.svg)](https://github.com/coding-kitties/investing-algorithm-framework/actions/workflows/publish.yml)
[![Tests](https://github.com/coding-kitties/investing-algorithm-framework/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/coding-kitties/investing-algorithm-framework/actions/workflows/test.yml)
[![Downloads](https://pepy.tech/badge/investing-algorithm-framework)](https://pepy.tech/badge/investing-algorithm-framework)
[![Current Version](https://img.shields.io/pypi/v/investing_algorithm_framework.svg)](https://img.shields.io/pypi/v/investing_algorithm_framework.svg)
<a href="https://www.reddit.com/r/InvestingBots/"><img src="https://img.shields.io/reddit/subreddit-subscribers/investingbots?style=social"></a> <br/>
[![GitHub stars](https://img.shields.io/github/stars/coding-kitties/investing-algorithm-framework.svg?style=social&label=Star&maxAge=1)](https://github.com/SeaQL/sea-orm/stargazers/) If you like what we do, consider starring, sharing and contributing!

###### Sponsors
<p align="left">
<a href="https://finterion.com">
  <img alt="Finterion" src="static/sponsors/finterion.png" width="200px" />
</a>
</p>

# [Investing Algorithm Framework](https://github.com/coding-kitties/investing-algorithm-framework)

The Investing Algorithm Framework is a Python tool that enables swift and 
elegant development of trading bots. It comes with all the necessary 
components for creating algorithms, including data provisioning, 
portfolio management, and order execution.

Features: 
* Order execution
* Broker and exchange connections through [ccxt](https://github.com/ccxt/ccxt)
* Backtesting and performance analysis reports [example](./examples/backtest)
* Backtest experiments to optimize your trading strategy [example](./examples/backtest_experiment)
* Portfolio management
* Web API for interacting with your deployed trading bot
* Data persistence through sqlite db or an in-memory db
* Stateless running for cloud function deployments
* Polars dataframes support out of the box for fast data processing [pola.rs](https://pola.rs/)

## Example implementation
The following algorithm connects to binance and buys BTC every 5 seconds. 
It also exposes an REST API that allows you to interact with the algorithm.
```python
import pathlib
from investing_algorithm_framework import create_app, PortfolioConfiguration, \
    RESOURCE_DIRECTORY, TimeUnit, CCXTOHLCVMarketDataSource, Algorithm, \
    CCXTTickerMarketDataSource, MarketCredential, SYMBOLS

# Define the symbols you want to trade for optimization, otherwise the 
# algorithm will check if you have orders and balances on all available 
# symbols on the market
symbols = ["BTC/EUR"]

# Define resource directory and the symbols you want to trade
config = {
    RESOURCE_DIRECTORY: pathlib.Path(__file__).parent.resolve()
    SYMBOLS: symbols
}

# Define market data sources
# OHLCV data for candles
bitvavo_btc_eur_ohlcv_2h = CCXTOHLCVMarketDataSource(
    identifier="BTC-ohlcv",
    market="BITVAVO",
    symbol="BTC/EUR",
    timeframe="2h",
    window_size=200
)
# Ticker data for orders, trades and positions
bitvavo_btc_eur_ticker = CCXTTickerMarketDataSource(
    identifier="BTC-ticker",
    market="BITVAVO",
    symbol="BTC/EUR",
)
app = create_app(config=config)
algorithm = Algorithm()

app.add_market_data_source(bitvavo_btc_eur_ohlcv_2h)
app.add_market_data_source(bitvavo_btc_eur_ticker)
app.add_market_credential(MarketCredential(
    market="bitvavo",
    api_key="<your api key>",
    secret_key="<your secret key>",
))
app.add_portfolio_configuration(
    PortfolioConfiguration(
        market="bitvavo",
        trading_symbol="EUR",
        initial_balance=400
    )
)
app.add_algorithm(algorithm)

@algorithm.strategy(
    # Run every two hours
    time_unit=TimeUnit.HOUR, 
    interval=2, 
    # Specify market data sources that need to be passed to the strategy
    market_data_sources=["BTC-ticker", "BTC-ohlcv"]
)
def perform_strategy(algorithm: Algorithm, market_data: dict):
    # By default, ohlcv data is passed as polars df in the form of
    # {"<identifier>": <dataframe>}  https://pola.rs/, 
    # call to_pandas() to convert to pandas
    polars_df = market_data["BTC-ohlcv"]  
    print(f"I have access to {len(polars_df)} candles of ohlcv data")

    # Ticker data is passed as {"<identifier>": <ticker dict>}
    ticker_data = market_data["BTC-ticker"]
    unallocated_balance = algorithm.get_unallocated()
    positions = algorithm.get_positions()
    trades = algorithm.get_trades()
    open_trades = algorithm.get_open_trades()
    closed_trades = algorithm.get_closed_trades()
    
    # Create a buy oder 
    algorithm.create_limit_order(
        target_symbol="BTC/EUR",
        order_side="buy",
        amount=0.01,
        price=ticker_data["ask"],
    )
    
    # Close a trade
    algorithm.close_trade(trades[0].id)
    
    # Close a position
    algorithm.close_position(positions[0].get_symbol())
    
if __name__ == "__main__":
    app.run()
```

> You can find more examples [here](./examples) folder.

## Backtesting and experiments
The framework also supports backtesting and performing backtest experiments. After 
a backtest, you can print a report that shows the performance of your trading bot.

To run a single backtest you can use the example code that can be found [here](./examples/backtest).

### Backtesting report
You can use the ```pretty_print_backtest``` function to print a backtest report.
For example if you run the [moving average example trading bot](./examples/crossover_moving_average_trading_bot)
you will get the following backtesting report:
 
```bash

                          /&#                                      #&(                 Backtest report
                          &&&&&&&&&&&#                       &&&&&&&&&&&&              ---------------------------
                         &&&&&&&&&&&&&&&&                (&&&&&&&&&&&&&&&              Start date: 2023-08-24 00:00:00
                         &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&              End date: 2023-12-02 00:00:00
                         &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&              Number of days: 100 
                          &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&              Number of runs: 1201
                          .&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&               Number of orders: 10
                           &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.               Initial balance: 400.0
                          &&&&&&&#  /(((   &&&&&&&&&&&&*(((     .&&&&&&&.              Final balance: 431.1499      
              &&&&&&&&&&&&&&&&&&&    ((((    &&&&&&&&   ((((     &&&&&&&&&&&&&&&&&&&   Total net gain: 28.5542 7.139%  
                       (((&&&&&&&&    ((((    &&&&&&     ((((   &&&&&&&&&((            Growth: 31.1499 7.787%             
               /((((((((((&&&&&&&&&&   (((,   &&&&&&      (((**&&&&&&&&&(((((((((((    Number of trades closed: 4
                     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&          Number of trades open(end of backtest): 2
                            &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&                 Percentage positive trades: 60.0%
                              &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&                   Percentage negative trades: 20.0%
                     (((((      &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&(                      Average trade size: 98.9886 EUR
                    (((((           &&&&&&&&&&&&&&&&&&&&&&&&,                          Average trade duration: 184.0 hours
                   (((((                 &&&&&&&&&&&&&#                            
                  (((((                  #&&&&&&&&&&###                            
                 (((((                   &&&&&&&&&&&###.                           
               .(((((                   &&&&&&&&&&&&&&###(                          
              (((((                   &&&&&&&&&&&&&&&&#(((/                        
             (((((                  &&&&&&&&&&&&&&&&&&&@((((                       
            (((((                  &&&&&&&&&&&&&&&&&&&&&&((((                      
           (((((                  &&&&&&&&&&&&&&&&&&&&&&&&((((,                    
         .(((((                   &&&&&&&&&&&&&&&&&&&&&&&&&&((((                    
        (((((                   &&&&&&&&&&&&&&&&&&&&&&&&&&&&((((                   
       (((((                    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&((((                  
      (((((                    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&((((                  
     (((((                     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&#((((                  
     (((((((((((((((((((#########&&&&&&&&&&&&&&&&&&&&&&&&&&&&(((((                  
      (((((((((((((((((((((######&&&&&&&&&&&&&&&&&&&&&&&&&&&&((((                   
        
Positions overview
╭────────────┬──────────┬──────────────────────┬───────────────────────┬──────────────┬───────────────┬───────────────────────────┬────────────────┬───────────────╮
│ Position   │   Amount │   Pending buy amount │   Pending sell amount │   Cost (EUR) │   Value (EUR) │ Percentage of portfolio   │   Growth (EUR) │ Growth_rate   │
├────────────┼──────────┼──────────────────────┼───────────────────────┼──────────────┼───────────────┼───────────────────────────┼────────────────┼───────────────┤
│ EUR        │ 217.044  │                    0 │                     0 │      217.044 │       217.044 │ 50.3407%                  │         0      │ 0.0000%       │
├────────────┼──────────┼──────────────────────┼───────────────────────┼──────────────┼───────────────┼───────────────────────────┼────────────────┼───────────────┤
│ BTC        │   0.003  │                    0 │                     0 │      104.372 │       106.84  │ 24.7802%                  │         2.4678 │ 2.3644%       │
├────────────┼──────────┼──────────────────────┼───────────────────────┼──────────────┼───────────────┼───────────────────────────┼────────────────┼───────────────┤
│ DOT        │  21.3295 │                    0 │                     0 │      107.138 │       107.266 │ 24.8791%                  │         0.128  │ 0.1195%       │
╰────────────┴──────────┴──────────────────────┴───────────────────────┴──────────────┴───────────────┴───────────────────────────┴────────────────┴───────────────╯
Trades overview
╭─────────┬─────────────────────┬─────────────────────┬────────────────────┬──────────────┬──────────────────┬───────────────────────┬────────────────────┬─────────────────────╮
│ Pair    │ Open date           │ Close date          │   Duration (hours) │   Size (EUR) │   Net gain (EUR) │ Net gain percentage   │   Open price (EUR) │   Close price (EUR) │
├─────────┼─────────────────────┼─────────────────────┼────────────────────┼──────────────┼──────────────────┼───────────────────────┼────────────────────┼─────────────────────┤
│ DOT-EUR │ 2023-11-30 18:00:00 │                     │            3207.26 │     107.138  │           0      │ 0.0000%               │             5.023  │                     │
├─────────┼─────────────────────┼─────────────────────┼────────────────────┼──────────────┼──────────────────┼───────────────────────┼────────────────────┼─────────────────────┤
│ BTC-EUR │ 2023-11-29 12:00:00 │                     │            3237.26 │     104.372  │           0      │ 0.0000%               │         34790.7    │                     │
├─────────┼─────────────────────┼─────────────────────┼────────────────────┼──────────────┼──────────────────┼───────────────────────┼────────────────────┼─────────────────────┤
│ BTC-EUR │ 2023-11-07 22:00:00 │ 2023-11-14 14:00:00 │             160    │      99.2337 │           2.5395 │ 2.5591%               │         33077.9    │          33924.4    │
├─────────┼─────────────────────┼─────────────────────┼────────────────────┼──────────────┼──────────────────┼───────────────────────┼────────────────────┼─────────────────────┤
│ BTC-EUR │ 2023-11-06 14:00:00 │ 2023-11-06 18:00:00 │               4    │      98.2854 │          -0.4248 │ -0.4322%              │         32761.8    │          32620.2    │
├─────────┼─────────────────────┼─────────────────────┼────────────────────┼──────────────┼──────────────────┼───────────────────────┼────────────────────┼─────────────────────┤
│ DOT-EUR │ 2023-10-30 04:00:00 │ 2023-11-14 00:00:00 │             356    │     100.537  │          24.2886 │ 24.1588%              │             4.0565 │              5.0365 │
├─────────┼─────────────────────┼─────────────────────┼────────────────────┼──────────────┼──────────────────┼───────────────────────┼────────────────────┼─────────────────────┤
│ BTC-EUR │ 2023-09-13 14:00:00 │ 2023-09-22 14:00:00 │             216    │      97.8976 │           2.1508 │ 2.1970%               │         24474.4    │          25012.1    │
╰─────────┴─────────────────────┴─────────────────────┴────────────────────┴──────────────┴──────────────────┴───────────────────────┴────────────────────┴─────────────────────╯
```

### Backtest experiments
The framework also supports backtest experiments. Backtest experiments allows you to 
compare multiple algorithms and evaluate their performance. Ideally, 
you would do this by parameterizing your strategy and creating a factory function that
creates the algorithm with the different parameters. You can find an example of this
in the [backtest experiments example](./examples/backtest_experiment).

## Broker/Exchange configuration
The framework has by default support for [ccxt](https://github.com/ccxt/ccxt).
This should allow you to connect to a lot of brokers/exchanges.

```python
from investing_algorithm_framework import PortfolioConfiguration, \
    MarketCredential, create_app
app = create_app()
app.add_market_credential(
    MarketCredential(
        market="<your market>", 
        api_key="<your api key>",
        secret_key="<your secret key>",
    )
)
app.add_portfolio_configuration(
    PortfolioConfiguration(
        market="<your market>", 
        initial_balance=400,
        track_from="01/01/2022",
        trading_symbol="EUR"
    )
)
```

## Performance
We are continuously working on improving the performance of the framework. If
you have any suggestions, please let us know.

## Download
You can download the framework with pypi.

```bash
pip install investing-algorithm-framework
```

## Disclaimer
If you use this framework for your investments, do not risk money 
which you are afraid to lose, until you have clear understanding how 
the framework works. We can't stress this enough:

BEFORE YOU START USING MONEY WITH THE FRAMEWORK, MAKE SURE THAT YOU TESTED 
YOUR COMPONENTS THOROUGHLY. USE THE SOFTWARE AT YOUR OWN RISK. 
THE AUTHORS AND ALL AFFILIATES ASSUME NO RESPONSIBILITY FOR YOUR INVESTMENT RESULTS.

Also, make sure that you read the source code of any plugin you use or 
implementation of an algorithm made with this framework.

## Documentation

All the documentation can be found online 
at the [documentation webstie](https://investing-algorithm-framework.com)

In most cases, you'll probably never have to change code on this repo directly 
if you are building your algorithm/bot. But if you do, check out the 
contributing page at the website.

If you'd like to chat with investing-algorithm-framework users 
and developers, [join us on Slack](https://inv-algo-framework.slack.com) or [join us on reddit](https://www.reddit.com/r/InvestingBots/)

## Acknowledgements
We want to thank all contributors to this project. A full list of all 
the people that contributed to the project can be
found [here](https://github.com/investing-algorithms/investing-algorithm-framework/blob/master/AUTHORS.md)

### [Bugs / Issues](https://github.com/investing-algorithms/investing-algorithm-framework/issues?q=is%3Aissue)

If you discover a bug in the framework, please [search our issue tracker](https://github.com/investing-algorithms/investing-algorithm-framework/issues?q=is%3Aissue)
first. If it hasn't been reported, please [create a new issue](https://github.com/investing-algorithms/investing-algorithm-framework/issues/new).

### Contributing
The investing algorithm framework is a community driven project. 
We welcome you to participate, contribute and together help build 
the future trading bots developed in python.

Feel like the framework is missing a feature? We welcome your pull requests!
If you want to contribute to the project roadmap, please take a look at the [project board](https://github.com/coding-kitties/investing-algorithm-framework/projects?query=is%3Aopen).
You can pick up a task by assigning yourself to it. 

**Note** before starting any major new feature work, *please open an issue describing what you are planning to do*.
This will ensure that interested parties can give valuable feedback on the feature, and let others know that you are working on it.

**Important:** Always create your feature or hotfix against the `develop` branch, not `master`.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "investing-algorithm-framework",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0.0,>=3.8.1",
    "maintainer_email": null,
    "keywords": null,
    "author": "MDUYN",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/e3/2a/304f705613c8c8e1fbbe7ed10fc1eec0ddc2bb04dfa28e13eee1060a482c/investing_algorithm_framework-3.5.2.tar.gz",
    "platform": null,
    "description": "<a href=https://investing-algorithm-framework.com><img src=\"https://img.shields.io/badge/docs-website-brightgreen\"></a>\n[![Build](https://github.com/coding-kitties/investing-algorithm-framework/actions/workflows/publish.yml/badge.svg)](https://github.com/coding-kitties/investing-algorithm-framework/actions/workflows/publish.yml)\n[![Tests](https://github.com/coding-kitties/investing-algorithm-framework/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/coding-kitties/investing-algorithm-framework/actions/workflows/test.yml)\n[![Downloads](https://pepy.tech/badge/investing-algorithm-framework)](https://pepy.tech/badge/investing-algorithm-framework)\n[![Current Version](https://img.shields.io/pypi/v/investing_algorithm_framework.svg)](https://img.shields.io/pypi/v/investing_algorithm_framework.svg)\n<a href=\"https://www.reddit.com/r/InvestingBots/\"><img src=\"https://img.shields.io/reddit/subreddit-subscribers/investingbots?style=social\"></a> <br/>\n[![GitHub stars](https://img.shields.io/github/stars/coding-kitties/investing-algorithm-framework.svg?style=social&label=Star&maxAge=1)](https://github.com/SeaQL/sea-orm/stargazers/) If you like what we do, consider starring, sharing and contributing!\n\n###### Sponsors\n<p align=\"left\">\n<a href=\"https://finterion.com\">\n  <img alt=\"Finterion\" src=\"static/sponsors/finterion.png\" width=\"200px\" />\n</a>\n</p>\n\n# [Investing Algorithm Framework](https://github.com/coding-kitties/investing-algorithm-framework)\n\nThe Investing Algorithm Framework is a Python tool that enables swift and \nelegant development of trading bots. It comes with all the necessary \ncomponents for creating algorithms, including data provisioning, \nportfolio management, and order execution.\n\nFeatures: \n* Order execution\n* Broker and exchange connections through [ccxt](https://github.com/ccxt/ccxt)\n* Backtesting and performance analysis reports [example](./examples/backtest)\n* Backtest experiments to optimize your trading strategy [example](./examples/backtest_experiment)\n* Portfolio management\n* Web API for interacting with your deployed trading bot\n* Data persistence through sqlite db or an in-memory db\n* Stateless running for cloud function deployments\n* Polars dataframes support out of the box for fast data processing [pola.rs](https://pola.rs/)\n\n## Example implementation\nThe following algorithm connects to binance and buys BTC every 5 seconds. \nIt also exposes an REST API that allows you to interact with the algorithm.\n```python\nimport pathlib\nfrom investing_algorithm_framework import create_app, PortfolioConfiguration, \\\n    RESOURCE_DIRECTORY, TimeUnit, CCXTOHLCVMarketDataSource, Algorithm, \\\n    CCXTTickerMarketDataSource, MarketCredential, SYMBOLS\n\n# Define the symbols you want to trade for optimization, otherwise the \n# algorithm will check if you have orders and balances on all available \n# symbols on the market\nsymbols = [\"BTC/EUR\"]\n\n# Define resource directory and the symbols you want to trade\nconfig = {\n    RESOURCE_DIRECTORY: pathlib.Path(__file__).parent.resolve()\n    SYMBOLS: symbols\n}\n\n# Define market data sources\n# OHLCV data for candles\nbitvavo_btc_eur_ohlcv_2h = CCXTOHLCVMarketDataSource(\n    identifier=\"BTC-ohlcv\",\n    market=\"BITVAVO\",\n    symbol=\"BTC/EUR\",\n    timeframe=\"2h\",\n    window_size=200\n)\n# Ticker data for orders, trades and positions\nbitvavo_btc_eur_ticker = CCXTTickerMarketDataSource(\n    identifier=\"BTC-ticker\",\n    market=\"BITVAVO\",\n    symbol=\"BTC/EUR\",\n)\napp = create_app(config=config)\nalgorithm = Algorithm()\n\napp.add_market_data_source(bitvavo_btc_eur_ohlcv_2h)\napp.add_market_data_source(bitvavo_btc_eur_ticker)\napp.add_market_credential(MarketCredential(\n    market=\"bitvavo\",\n    api_key=\"<your api key>\",\n    secret_key=\"<your secret key>\",\n))\napp.add_portfolio_configuration(\n    PortfolioConfiguration(\n        market=\"bitvavo\",\n        trading_symbol=\"EUR\",\n        initial_balance=400\n    )\n)\napp.add_algorithm(algorithm)\n\n@algorithm.strategy(\n    # Run every two hours\n    time_unit=TimeUnit.HOUR, \n    interval=2, \n    # Specify market data sources that need to be passed to the strategy\n    market_data_sources=[\"BTC-ticker\", \"BTC-ohlcv\"]\n)\ndef perform_strategy(algorithm: Algorithm, market_data: dict):\n    # By default, ohlcv data is passed as polars df in the form of\n    # {\"<identifier>\": <dataframe>}  https://pola.rs/, \n    # call to_pandas() to convert to pandas\n    polars_df = market_data[\"BTC-ohlcv\"]  \n    print(f\"I have access to {len(polars_df)} candles of ohlcv data\")\n\n    # Ticker data is passed as {\"<identifier>\": <ticker dict>}\n    ticker_data = market_data[\"BTC-ticker\"]\n    unallocated_balance = algorithm.get_unallocated()\n    positions = algorithm.get_positions()\n    trades = algorithm.get_trades()\n    open_trades = algorithm.get_open_trades()\n    closed_trades = algorithm.get_closed_trades()\n    \n    # Create a buy oder \n    algorithm.create_limit_order(\n        target_symbol=\"BTC/EUR\",\n        order_side=\"buy\",\n        amount=0.01,\n        price=ticker_data[\"ask\"],\n    )\n    \n    # Close a trade\n    algorithm.close_trade(trades[0].id)\n    \n    # Close a position\n    algorithm.close_position(positions[0].get_symbol())\n    \nif __name__ == \"__main__\":\n    app.run()\n```\n\n> You can find more examples [here](./examples) folder.\n\n## Backtesting and experiments\nThe framework also supports backtesting and performing backtest experiments. After \na backtest, you can print a report that shows the performance of your trading bot.\n\nTo run a single backtest you can use the example code that can be found [here](./examples/backtest).\n\n### Backtesting report\nYou can use the ```pretty_print_backtest``` function to print a backtest report.\nFor example if you run the [moving average example trading bot](./examples/crossover_moving_average_trading_bot)\nyou will get the following backtesting report:\n \n```bash\n\n                          /&#                                      #&(                 Backtest report\n                          &&&&&&&&&&&#                       &&&&&&&&&&&&              ---------------------------\n                         &&&&&&&&&&&&&&&&                (&&&&&&&&&&&&&&&              Start date: 2023-08-24 00:00:00\n                         &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&              End date: 2023-12-02 00:00:00\n                         &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&              Number of days: 100 \n                          &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&              Number of runs: 1201\n                          .&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&               Number of orders: 10\n                           &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.               Initial balance: 400.0\n                          &&&&&&&#  /(((   &&&&&&&&&&&&*(((     .&&&&&&&.              Final balance: 431.1499      \n              &&&&&&&&&&&&&&&&&&&    ((((    &&&&&&&&   ((((     &&&&&&&&&&&&&&&&&&&   Total net gain: 28.5542 7.139%  \n                       (((&&&&&&&&    ((((    &&&&&&     ((((   &&&&&&&&&((            Growth: 31.1499 7.787%             \n               /((((((((((&&&&&&&&&&   (((,   &&&&&&      (((**&&&&&&&&&(((((((((((    Number of trades closed: 4\n                     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&          Number of trades open(end of backtest): 2\n                            &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&                 Percentage positive trades: 60.0%\n                              &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&                   Percentage negative trades: 20.0%\n                     (((((      &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&(                      Average trade size: 98.9886 EUR\n                    (((((           &&&&&&&&&&&&&&&&&&&&&&&&,                          Average trade duration: 184.0 hours\n                   (((((                 &&&&&&&&&&&&&#                            \n                  (((((                  #&&&&&&&&&&###                            \n                 (((((                   &&&&&&&&&&&###.                           \n               .(((((                   &&&&&&&&&&&&&&###(                          \n              (((((                   &&&&&&&&&&&&&&&&#(((/                        \n             (((((                  &&&&&&&&&&&&&&&&&&&@((((                       \n            (((((                  &&&&&&&&&&&&&&&&&&&&&&((((                      \n           (((((                  &&&&&&&&&&&&&&&&&&&&&&&&((((,                    \n         .(((((                   &&&&&&&&&&&&&&&&&&&&&&&&&&((((                    \n        (((((                   &&&&&&&&&&&&&&&&&&&&&&&&&&&&((((                   \n       (((((                    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&((((                  \n      (((((                    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&((((                  \n     (((((                     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&#((((                  \n     (((((((((((((((((((#########&&&&&&&&&&&&&&&&&&&&&&&&&&&&(((((                  \n      (((((((((((((((((((((######&&&&&&&&&&&&&&&&&&&&&&&&&&&&((((                   \n        \nPositions overview\n\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 Position   \u2502   Amount \u2502   Pending buy amount \u2502   Pending sell amount \u2502   Cost (EUR) \u2502   Value (EUR) \u2502 Percentage of portfolio   \u2502   Growth (EUR) \u2502 Growth_rate   \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 EUR        \u2502 217.044  \u2502                    0 \u2502                     0 \u2502      217.044 \u2502       217.044 \u2502 50.3407%                  \u2502         0      \u2502 0.0000%       \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 BTC        \u2502   0.003  \u2502                    0 \u2502                     0 \u2502      104.372 \u2502       106.84  \u2502 24.7802%                  \u2502         2.4678 \u2502 2.3644%       \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 DOT        \u2502  21.3295 \u2502                    0 \u2502                     0 \u2502      107.138 \u2502       107.266 \u2502 24.8791%                  \u2502         0.128  \u2502 0.1195%       \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\nTrades overview\n\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 Pair    \u2502 Open date           \u2502 Close date          \u2502   Duration (hours) \u2502   Size (EUR) \u2502   Net gain (EUR) \u2502 Net gain percentage   \u2502   Open price (EUR) \u2502   Close price (EUR) \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 DOT-EUR \u2502 2023-11-30 18:00:00 \u2502                     \u2502            3207.26 \u2502     107.138  \u2502           0      \u2502 0.0000%               \u2502             5.023  \u2502                     \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 BTC-EUR \u2502 2023-11-29 12:00:00 \u2502                     \u2502            3237.26 \u2502     104.372  \u2502           0      \u2502 0.0000%               \u2502         34790.7    \u2502                     \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 BTC-EUR \u2502 2023-11-07 22:00:00 \u2502 2023-11-14 14:00:00 \u2502             160    \u2502      99.2337 \u2502           2.5395 \u2502 2.5591%               \u2502         33077.9    \u2502          33924.4    \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 BTC-EUR \u2502 2023-11-06 14:00:00 \u2502 2023-11-06 18:00:00 \u2502               4    \u2502      98.2854 \u2502          -0.4248 \u2502 -0.4322%              \u2502         32761.8    \u2502          32620.2    \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 DOT-EUR \u2502 2023-10-30 04:00:00 \u2502 2023-11-14 00:00:00 \u2502             356    \u2502     100.537  \u2502          24.2886 \u2502 24.1588%              \u2502             4.0565 \u2502              5.0365 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 BTC-EUR \u2502 2023-09-13 14:00:00 \u2502 2023-09-22 14:00:00 \u2502             216    \u2502      97.8976 \u2502           2.1508 \u2502 2.1970%               \u2502         24474.4    \u2502          25012.1    \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\n### Backtest experiments\nThe framework also supports backtest experiments. Backtest experiments allows you to \ncompare multiple algorithms and evaluate their performance. Ideally, \nyou would do this by parameterizing your strategy and creating a factory function that\ncreates the algorithm with the different parameters. You can find an example of this\nin the [backtest experiments example](./examples/backtest_experiment).\n\n## Broker/Exchange configuration\nThe framework has by default support for [ccxt](https://github.com/ccxt/ccxt).\nThis should allow you to connect to a lot of brokers/exchanges.\n\n```python\nfrom investing_algorithm_framework import PortfolioConfiguration, \\\n    MarketCredential, create_app\napp = create_app()\napp.add_market_credential(\n    MarketCredential(\n        market=\"<your market>\", \n        api_key=\"<your api key>\",\n        secret_key=\"<your secret key>\",\n    )\n)\napp.add_portfolio_configuration(\n    PortfolioConfiguration(\n        market=\"<your market>\", \n        initial_balance=400,\n        track_from=\"01/01/2022\",\n        trading_symbol=\"EUR\"\n    )\n)\n```\n\n## Performance\nWe are continuously working on improving the performance of the framework. If\nyou have any suggestions, please let us know.\n\n## Download\nYou can download the framework with pypi.\n\n```bash\npip install investing-algorithm-framework\n```\n\n## Disclaimer\nIf you use this framework for your investments, do not risk money \nwhich you are afraid to lose, until you have clear understanding how \nthe framework works. We can't stress this enough:\n\nBEFORE YOU START USING MONEY WITH THE FRAMEWORK, MAKE SURE THAT YOU TESTED \nYOUR COMPONENTS THOROUGHLY. USE THE SOFTWARE AT YOUR OWN RISK. \nTHE AUTHORS AND ALL AFFILIATES ASSUME NO RESPONSIBILITY FOR YOUR INVESTMENT RESULTS.\n\nAlso, make sure that you read the source code of any plugin you use or \nimplementation of an algorithm made with this framework.\n\n## Documentation\n\nAll the documentation can be found online \nat the [documentation webstie](https://investing-algorithm-framework.com)\n\nIn most cases, you'll probably never have to change code on this repo directly \nif you are building your algorithm/bot. But if you do, check out the \ncontributing page at the website.\n\nIf you'd like to chat with investing-algorithm-framework users \nand developers, [join us on Slack](https://inv-algo-framework.slack.com) or [join us on reddit](https://www.reddit.com/r/InvestingBots/)\n\n## Acknowledgements\nWe want to thank all contributors to this project. A full list of all \nthe people that contributed to the project can be\nfound [here](https://github.com/investing-algorithms/investing-algorithm-framework/blob/master/AUTHORS.md)\n\n### [Bugs / Issues](https://github.com/investing-algorithms/investing-algorithm-framework/issues?q=is%3Aissue)\n\nIf you discover a bug in the framework, please [search our issue tracker](https://github.com/investing-algorithms/investing-algorithm-framework/issues?q=is%3Aissue)\nfirst. If it hasn't been reported, please [create a new issue](https://github.com/investing-algorithms/investing-algorithm-framework/issues/new).\n\n### Contributing\nThe investing algorithm framework is a community driven project. \nWe welcome you to participate, contribute and together help build \nthe future trading bots developed in python.\n\nFeel like the framework is missing a feature? We welcome your pull requests!\nIf you want to contribute to the project roadmap, please take a look at the [project board](https://github.com/coding-kitties/investing-algorithm-framework/projects?query=is%3Aopen).\nYou can pick up a task by assigning yourself to it. \n\n**Note** before starting any major new feature work, *please open an issue describing what you are planning to do*.\nThis will ensure that interested parties can give valuable feedback on the feature, and let others know that you are working on it.\n\n**Important:** Always create your feature or hotfix against the `develop` branch, not `master`.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A framework for creating trading bots",
    "version": "3.5.2",
    "project_urls": null,
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "99dab93d386cb67517a15c1aa57edaf273277dc3efd06d8a03b1ad6c6f3ba0e2",
                "md5": "c730451a77c12f9b8e422b6f57b1421c",
                "sha256": "92cc9653cccda2c3cb2e3aec1284bc710cf1be385ff940b88d1e79419f07b319"
            },
            "downloads": -1,
            "filename": "investing_algorithm_framework-3.5.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c730451a77c12f9b8e422b6f57b1421c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0.0,>=3.8.1",
            "size": 137311,
            "upload_time": "2024-04-13T07:54:33",
            "upload_time_iso_8601": "2024-04-13T07:54:33.124917Z",
            "url": "https://files.pythonhosted.org/packages/99/da/b93d386cb67517a15c1aa57edaf273277dc3efd06d8a03b1ad6c6f3ba0e2/investing_algorithm_framework-3.5.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e32a304f705613c8c8e1fbbe7ed10fc1eec0ddc2bb04dfa28e13eee1060a482c",
                "md5": "c95adcfc61e470def355cd0d339daa88",
                "sha256": "139cc226b0a704bad88a19a6802696f8aa7d860bcb1168a6e62ad69f1b288cce"
            },
            "downloads": -1,
            "filename": "investing_algorithm_framework-3.5.2.tar.gz",
            "has_sig": false,
            "md5_digest": "c95adcfc61e470def355cd0d339daa88",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0.0,>=3.8.1",
            "size": 89317,
            "upload_time": "2024-04-13T07:54:35",
            "upload_time_iso_8601": "2024-04-13T07:54:35.738286Z",
            "url": "https://files.pythonhosted.org/packages/e3/2a/304f705613c8c8e1fbbe7ed10fc1eec0ddc2bb04dfa28e13eee1060a482c/investing_algorithm_framework-3.5.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-13 07:54:35",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "investing-algorithm-framework"
}
        
Elapsed time: 0.23119s