BacktestBroker¶
- class src.boatwright.Brokers.BacktestBroker.BacktestBroker(broker_name=None, maker_fee=0.4, taker_fee=0.6, slippage=25, order_pf_factor=1, quote_symbol='USD', starting_aum=1000)¶
Broker class for backtesting, containing models for how different orders would be filled.
- Parameters:
broker_name – if not None, loads the other parameters from config_data
maker_fee (float) – percent fee to post a trade
taker_fee (float) – percent fee to take a trade
slippage (float) – percent price slips, upward for buys, downward for sells relative to high and low of bar (for market orders only)
order_pf_factor (float) – For limit order, manipulates the gaussian distribution
quote_symbol (str) – reference currency of account, e.g. “USD”
starting_aum (float) – starting value of total ‘assets under managment’ in reference currency
- calc_base_size(base_symbol, quote_symbol, frac=1)¶
calculates the frac * (available_account_balance) truncated to base_increment
- calc_quote_size(base_symbol, quote_symbol, frac=1)¶
calculates the frac * (available_account_balance) truncated to quote_increment
- cancel_order(order_id)¶
cancels an open order returns “success” or “fail”
- get_account_balance(product)¶
returns user account info for the specified product (i.e. how much BTC does user have):
account_info = { "available_balance": account_response["available_balance"]["value"], "currency": account_response["available_balance"]["currency"] }
- get_order_info(order_id)¶
returns order , corresponding the to order status. i.e. filled order info will have avg_price, cost, fee, filled size etc
- get_product_info(base_symbol)¶
returns product info as:
product_info = { "product_id": response["product_id"], "price": response["price"], "volume": response["volume_24h"], "base": response["base_display_symbol"], "base_size_increment": response["base_increment"], "min_base_size": response["base_min_size"], "max_base_size": response["base_max_size"], "quote": response["quote_display_symbol"], "quote_size_increment": response["quote_increment"], "min_quote_size": response["quote_min_size"], "max_quote_size": response["quote_max_size"], }
- limit_order(order)¶
place limit order
- Parameters:
order (LimitOrder)
- market_order(order)¶
place market order
- Parameters:
order (MarketOrder)
- reset()¶
resets product amounts to 0, base amount to starting aum, and aum to starting aum, clears orders
- trailing_order(order)¶
place trailing stop order
- Parameters:
order (TrailingOrder)
- update_aum()¶
update values for cash, stock/crypto/forex etc assets, and total aum :return: None
- update_open_orders()¶
checks orders in orders[“OPEN”] if any expire or trigger