# Configuration

The config file is located at the root of your project and is named config.py.

It contains config values for databases, exchanges, logging, and notifications. The comments of each section is pretty clear.

An example config file:

config = {
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    # PostgreSQL Database
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    #
    # PostgreSQL is used as the database to store data such as candles.
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    'databases': {
        'postgres_host': '127.0.0.1',
        'postgres_name': 'jesse_db',
        'postgres_port': 5432,
        'postgres_username': 'jesse_user',
        'postgres_password': 'password',
    },

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    # Caching
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    #
    # In some cases such as loading candles in the backtest mode, a
    # caching mechanism is used to make further loadings faster.
    # Valid options (so far) are: 'pickle', None
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    'caching': {
        'driver': 'pickle'
    },

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    # Exchanges
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    #
    # Below values are used for exchanges.
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    'exchanges': {
        # https://www.bitfinex.com
        'Bitfinex': {
            'fee': 0.002,

            # backtest mode only: accepted are 'spot' and 'futures'
            'type': 'futures',

            # futures mode only
            'settlement_currency': 'USD',
            # accepted values are: 'cross' and 'isolated'
            'futures_leverage_mode': 'cross',
            # 1x, 2x, 10x, 50x, etc. Enter as integers
            'futures_leverage': 1,

            # used for spot exchange only
            'assets': [
                {'asset': 'USDT', 'balance': 10_000},
                {'asset': 'USD', 'balance': 10_000},
                {'asset': 'BTC', 'balance': 0},
            ],
        },

        # https://www.binance.com
        'Binance': {
            'fee': 0.001,

            # backtest mode only: accepted are 'spot' and 'futures'
            'type': 'futures',

            # futures mode only
            'settlement_currency': 'USDT',
            # accepted values are: 'cross' and 'isolated'
            'futures_leverage_mode': 'cross',
            # 1x, 2x, 10x, 50x, etc. Enter as integers
            'futures_leverage': 1,

            # used for spot exchange only
            'assets': [
                {'asset': 'USDT', 'balance': 10_000},
                {'asset': 'BTC', 'balance': 0},
            ],
        },

        # https://www.binance.com
        'Binance Futures': {
            'fee': 0.0004,

            # backtest mode only: accepted are 'spot' and 'futures'
            'type': 'futures',

            # futures mode only
            'settlement_currency': 'USDT',
            # accepted values are: 'cross' and 'isolated'
            'futures_leverage_mode': 'cross',
            # 1x, 2x, 10x, 50x, etc. Enter as integers
            'futures_leverage': 1,

            # used for spot exchange only
            'assets': [
                {'asset': 'USDT', 'balance': 10_000},
            ],
        },

        # https://testnet.binancefuture.com
        'Testnet Binance Futures': {
            'fee': 0.0004,

            # backtest mode only: accepted are 'spot' and 'futures'
            'type': 'futures',

            # futures mode only
            'settlement_currency': 'USDT',
            # accepted values are: 'cross' and 'isolated'
            'futures_leverage_mode': 'cross',
            # 1x, 2x, 10x, 50x, etc. Enter as integers
            'futures_leverage': 1,

            # used for spot mode
            'assets': [
                {'asset': 'USDT', 'balance': 10_000},
            ],
        },

        # https://pro.coinbase.com
        'Coinbase': {
            'fee': 0.005,

            # backtest mode only: accepted are 'spot' and 'futures'
            'type': 'futures',

            # futures mode only
            'settlement_currency': 'USD',
            # accepted values are: 'cross' and 'isolated'
            'futures_leverage_mode': 'cross',
            # 1x, 2x, 10x, 50x, etc. Enter as integers
            'futures_leverage': 1,

            # used for spot exchange only
            'assets': [
                {'asset': 'USDT', 'balance': 10_000},
                {'asset': 'USD', 'balance': 10_000},
                {'asset': 'BTC', 'balance': 0},
            ],
        },
    },

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    # Logging
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    #
    # Below configurations are used to filter out the extra logging
    # info that are displayed when the "--debug" flag is enabled.
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    'logging': {
        'order_submission': True,
        'order_cancellation': True,
        'order_execution': True,
        'position_opened': True,
        'position_increased': True,
        'position_reduced': True,
        'position_closed': True,
        'shorter_period_candles': False,
        'trading_candles': True,
        'balance_update': True,
    },

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    # Metrics
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    #
    # Below configurations are used to set the metrics
    # that are displayed after a backtest.
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    'metrics': {
        'sharpe_ratio': True,
        'calmar_ratio': False,
        'sortino_ratio': False,
        'omega_ratio': False,
        'winning_streak': False,
        'losing_streak': False,
        'largest_losing_trade': False,
        'largest_winning_trade': False,
        'total_winning_trades': False,
        'total_losing_trades': False,
    },

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    # Optimize mode
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    #
    # Below configurations are related to the optimize mode
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    'optimization': {
        # sharpe, calmar, sortino, omega
        'ratio': 'sharpe',
    },

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    # Data
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    #
    # Below configurations are related to the data
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    'data': {
        # The minimum number of warmup candles that is loaded before each session.
        'warmup_candles_num': 210,
    }
}