@var DatabaseHost=cryptoval1.cvtt.vpn # @var DatabaseHost=cryptoval1.sheynin.home { "__DUMMY__": {} # ---------------------- A , "ALPACA_SNDBX": { # https://docs.alpaca.markets/reference/ "exchange_id": "ALPACA" , "name": "Alpaca Trading" , "type": "EQUITY" , "cred_key": "ALPACA_SANDBOX" , "order_entry": { "class": "cvttpy.exchanges.alpaca.connector.AlpacaOrderEntryClient" , "REST": { "submit_order_url": ["POST", "https://paper-api.alpaca.markets/v2/orders"] , "orders_url": ["GET", "https://paper-api.alpaca.markets/v2/orders"] , "order_status": ["GET", "https://paper-api.alpaca.markets/v2/orders/{order_id}"] , "cancel_order_url": ["DELETE", "https://paper-api.alpaca.markets/v2/orders/{order_id}"] , "cancel_all_url": ["DELETE", "https://paper-api.alpaca.markets/v2/orders"] } , "ws_url": ["WSS", "wss://paper-api.alpaca.markets/stream"] } , "mktdata" : { "class": "cvttpy.exchanges.alpaca.mkt_data.AlpacaStockFeed" , "reconnect_secs": 2.0 # , "ws_url": ["WSS", "wss://stream.data.alpaca.markets/v2/sip"] , "ws_url": ["WSS", "wss://stream.data.alpaca.markets/v2/iex"] , "REST": { } } , "accounting": { "class": "cvttpy.exchanges.alpaca.account.AlpacaAccounting" , "REST": { "balances_url": ["GET", "https://paper-api.alpaca.markets/v2/positions"] , "account_info_url": ["GET", "https://paper-api.alpaca.markets/v2/account"] , "trades_url": ["GET", "https://paper-api.alpaca.markets/v2/account/activities/FILL"] } } } , "ALPACA_SNDBX-MDPORTAL": { # https://docs.alpaca.markets/reference/ "exchange_id": "ALPACA" , "name": "Alpaca Trading" , "type": "EQUITY" , "cred_key": "ALPACA_SANDBOX" , "order_entry": { "class": "cvttpy.exchanges.alpaca.connector.AlpacaOrderEntryClient" , "REST": { "submit_order_url": ["POST", "https://paper-api.alpaca.markets/v2/orders"] , "orders_url": ["GET", "https://paper-api.alpaca.markets/v2/orders"] , "order_status": ["GET", "https://paper-api.alpaca.markets/v2/orders/{order_id}"] , "cancel_order_url": ["DELETE", "https://paper-api.alpaca.markets/v2/orders/{order_id}"] , "cancel_all_url": ["DELETE", "https://paper-api.alpaca.markets/v2/orders"] } , "ws_url": ["WSS", "wss://paper-api.alpaca.markets/stream"] } , "mktdata" : { "class": "cvttpy.exchanges.proxies.md_portal_clnt.mkt_data.MktDataPortalFeed" } , "accounting": { "class": "cvttpy.exchanges.alpaca.account.AlpacaAccounting" , "REST": { "balances_url": ["GET", "https://paper-api.alpaca.markets/v2/positions"] , "account_info_url": ["GET", "https://paper-api.alpaca.markets/v2/account"] , "trades_url": ["GET", "https://paper-api.alpaca.markets/v2/account/activities/FILL"] } } } # ---------------------- B , "BNBSPOT": { "exchange_id": "BNBSPOT" , "name": "Binance Spot" , "type": "SPOT" , "mktdata" : { "class": "cvttpy.exchanges.binance.spot.mkt_data.BnbSpotMultiWsFeed" , "max_connections": 10 , "reconnect_secs": 2.0 , "ws_url": ["WSS", "wss://stream.binance.com/ws"] , "REST": { # https://api.binance.com/api/v3/depth?symbol=BNBBTC&limit=1000 "depth_snapshot_url": ["GET", "https://api.binance.com/api/v3/depth"], } } } , "BNBFUT": { "exchange_id": "BNBFUT" , "name": "Binance Futures USD-M" , "type": "FUTURES" , "mktdata" : { "class": "cvttpy.exchanges.binance.futures.mkt_data.BnbFutMultiWsFeed" , "max_connections": 10 , "reconnect_secs": 2.0 , "ws_url": ["WSS", "wss://fstream.binance.com/ws"] , "REST": { # https://fapi.binance.com/fapi/v1/depth?symbol=BNBBTC&limit=1000 "depth_snapshot_url": ["GET", "https://fapi.binance.com/fapi/v1/depth"], } } } , "BNBFUT-2": { "exchange_id": "BNBFUT" , "name": "Binance Futures USD-M" , "type": "FUTURES" , "mktdata" : { "class": "cvttpy.exchanges.binance.futures.mkt_data.BinanceFuturesFeedWs2" , "max_connections": 10 , "reconnect_secs": 2.0 , "ws_timeout_secs": 0.0001 , "ws_url": ["WSS", "wss://fstream.binance.com/ws"] } } , "BNBFUT-BT-FEED": { "exchange_id": "BNBFUT" , "name": "Binance Futures USD-M" , "type": "FUTURES" , "mktdata" : { "class": "cvttpy.exchanges.book_top_feed.mkt_data.BookTopFeedClient" , "mmap_file": "/tmp/BNBFUT.MD.dat" } } , "BNBSPOT_US": { "exchange_id": "BNBSPOT_US" , "name": "Binance.US" , "type": "SPOT" , "mktdata" : { "class": "cvttpy.exchanges.binance.spot.mkt_data.BinanceSpotFeed" , "reconnect_secs": 10 , "ws_url": ["WSS", "wss://stream.binance.us:9443/ws"] , "REST": { # https://api.binance.com/api/v3/depth?symbol=BNBBTC&limit=1000 "depth_snapshot_url": ["GET", "https://api.binance.com/api/v3/depth"], } } } # ---------------------- C , "CVTT": { "exchange_id": "CVTT" , "name": "CVTT Executor (proxy)" , "type": "PROXY" , "order_entry": { "class": "cvttpy.exchanges.proxies.cvtt.connector.CvttExecutorClient" } , "accounting": { "class": "cvttpy.exchanges.proxies.cvtt.connector.CvttExecutorClient" } ,"listen_channel_prefix": "CVTT_CLNT" # , "executor_channel": "EXEC" } , "CVTT_COINBASE": { "exchange_id": "CVTT_COINBS" , "name": "CVTT Trader (proxy)" , "type": "PROXY" , "order_entry": { "class": "cvttpy.exchanges.proxies.cvtt.connector.CvttExecutorClient" } , "accounting": { "class": "cvttpy.exchanges.proxies.cvtt.connector.CvttExecutorClient" } ,"listen_channel_prefix": "CVTT_CLNT" , "executor_channel": "EXEC" } , "CVTT_COINBASE_LOCAL": { "exchange_id": "CVTT_COINBS" , "name": "CVTT Trader (proxy)" , "type": "PROXY" , "order_entry": { "class": "cvttpy.exchanges.proxies.cvtt.connector.CvttExecutorClient" } ,"listen_channel_prefix": "CVTT_CLNT" , "executor_channel": "EXEC" } , "COINBASE_AT": { "exchange_id": "COINBASE" , "name": "Coinbase Advanced Trade" , "type": "SPOT" , "order_entry": { "class": "cvttpy.exchanges.coinbase.spot.connector.CoinbaseSpotRestExchConnector" , "REST": { "open_orders_url": ["GET", "https://api.coinbase.com/api/v3/brokerage/orders/historical/batch"] , "submit_order_url": ["POST", "https://api.coinbase.com/api/v3/brokerage/orders"] , "cancel_order_url": ["POST", "https://api.coinbase.com/api/v3/brokerage/orders/batch_cancel"] }, "ws_url": ["WSS", "wss://advanced-trade-ws.coinbase.com"] } , "accounting": { "class": "cvttpy.exchanges.coinbase.spot.account.CoinbaseSpotAccounting" , "REST": { "balances_url": ["GET", "https://api.coinbase.com/api/v3/brokerage/accounts"] , "get_trades_url": ["GET", "https://api.coinbase.com/api/v3/brokerage/orders/historical/fills"] , "get_transactions_url": ["GET", "https://api.coinbase.com/api/v3/brokerage/transaction_summary"] } } , "mktdata" : { "class": "cvttpy.exchanges.coinbase.spot.mkt_data.CoinbaseMultiWsFeed" , "reconnect_secs": 2 , "max_connections": 10 , "price_throttle": true , "ws_url": ["WSS", "wss://ws-feed.pro.coinbase.com"] } } , "COINBASE_AT-MDPORTAL": { "exchange_id": "COINBASE" , "name": "Coinbase Advanced Trade" , "type": "SPOT" , "order_entry": { "class": "cvttpy.exchanges.coinbase.spot.connector.CoinbaseSpotRestExchConnector" , "REST": { "open_orders_url": ["GET", "https://api.coinbase.com/api/v3/brokerage/orders/historical/batch"] , "submit_order_url": ["POST", "https://api.coinbase.com/api/v3/brokerage/orders"] , "cancel_order_url": ["POST", "https://api.coinbase.com/api/v3/brokerage/orders/batch_cancel"] }, "ws_url": ["WSS", "wss://advanced-trade-ws.coinbase.com"] } , "accounting": { "class": "cvttpy.exchanges.coinbase.spot.account.CoinbaseSpotAccounting" , "REST": { "balances_url": ["GET", "https://api.coinbase.com/api/v3/brokerage/accounts"] , "get_trades_url": ["GET", "https://api.coinbase.com/api/v3/brokerage/orders/historical/fills"] , "get_transactions_url": ["GET", "https://api.coinbase.com/api/v3/brokerage/transaction_summary"] } } , "mktdata" : { "class": "cvttpy.exchanges.proxies.md_portal_clnt.mkt_data.MktDataPortalFeed" } } , "BACKTEST_001": { "exchange_id": "COINBASE" , "name": "Coinbase Backtest" , "type": "BACKTEST" # , "order_entry": { # "class": "cvttpy.exchanges.coinbase.spot.connector.CoinbaseSpotRestExchConnector" # , "REST": { # "open_orders_url": ["GET", "https://api.coinbase.com/api/v3/brokerage/orders/historical/batch"] # , "submit_order_url": ["POST", "https://api.coinbase.com/api/v3/brokerage/orders"] # , "cancel_order_url": ["POST", "https://api.coinbase.com/api/v3/brokerage/orders/batch_cancel"] # }, # "ws_url": ["WSS", "wss://advanced-trade-ws.coinbase.com"] # } # , "accounting": { # "class": "cvttpy.exchanges.coinbase.spot.account.CoinbaseSpotAccounting" # , "REST": { # "balances_url": ["GET", "https://api.coinbase.com/api/v3/brokerage/accounts"] # , "get_trades_url": ["GET", "https://api.coinbase.com/api/v3/brokerage/orders/historical/fills"] # , "get_transactions_url": ["GET", "https://api.coinbase.com/api/v3/brokerage/transaction_summary"] # } # } , "mktdata" : { "class": "cvttpy.research.backtest.mkt_data.BacktestSimFeed" , "db": { "module": "cvttpy.tools.db.timescale.tsdb_client" , "class": "TimescaleDbClient" , "connect": { "host": ${DatabaseHost} , "port": 5432 , "database": "coinbase" } } , "readers": [ { "class": "cvttpy.research.time_series.ts_df_reader" , "table": "md_trades" , "interval": "12 hours" , "from_time": null } , { "class": "cvttpy.research.time_series.ts_df_reader" , "table": "md_booktops" , "interval": "12 hours" , "from_time": null } ] } } , "MD_PORTAL": { "exchange_id": "MD_PORTAL" , "name": "MD Portal (proxy)" , "type": "PROXY" , "mktdata" : { "class": "cvttpy.exchanges.proxies.md_portal_clnt.mkt_data.MktDataPortalFeed" } } }