diff --git a/data/apps/algo_trade.cfg b/data/apps/algo_trade.cfg index 6d7b073..7164bd0 100644 --- a/data/apps/algo_trade.cfg +++ b/data/apps/algo_trade.cfg @@ -3,13 +3,9 @@ { "refdata": @inc=http://${CONFIG_SVC_HOST}:6789/refdata/refdata - , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/redis - , "algos": @inc=http://${CONFIG_SVC_HOST}:6789/apps/algos + , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/common/redis + , "algos": @inc=http://${CONFIG_SVC_HOST}:6789/apps/common/algos - # , "cvttcomm": { - # "type": "redis" - # , "redis_settings": "cvtt-prod-02" - # } , "session_type": "CALENDAR" , "calendar_session": { "trading_hours_url": [ @@ -17,8 +13,90 @@ , "http://cloud16.cvtt.vpn:8000/api/v1/markets/hours?mic=XNYS&start={start}&end={end}" ] } + , "backtest": { + "exchanges_settings": { + "*": { + "mkt_data": { + "enabled": true + , "streaming": true + } + ,"order_entry": { + "enabled": true + , "streaming": true + } + ,"accounting": { + "enabled": true + , "streaming": false + } + } + } + , "source": { + "database": { + "class": "cvttpy.tools.db.sqlite.sqlite_client.SqliteClient" + , "file_name": "aaa" + } + , "from_time": { + "BUY": "09:29" + "SELL": "15:30" + } + } + # , "initial_positions": { + # "COINBASE": { + # "BTC": 0 + # , "USD": 1000.0 + # } + # } + , "simulation": { + "speed_factor": 0.0 + } + , "execution": { + "top_only": true + ,"min_order_age_sec": 0.1 + , "pricing_method": "BY_MKT_TRD_PRICE_BY_ORDER" + } + , "result": { + "repository": "${ResultPath}/backtest_results.json" + , "db_file": "${ResultPath}/%T.backtest.db" + } + } , "exchanges_settings": { - "COINBASE_AT-MDPORTAL": { + "ALPACA_SNDBX-MDPORTAL": { + "order_entry": { + "enabled": true + , "streaming": true + }, + "mkt_data": { + "enabled": true + , "streaming": true + }, + "accounting": { + "enabled": false + , "streaming": false + } + , "credentials_key": { + "read_only": "ALPACA_SANDBOX" + , "trade": "ALPACA_SANDBOX" + } + } + , "ALPACA_SNDBX-MDP-03": { + "order_entry": { + "enabled": true + , "streaming": true + }, + "mkt_data": { + "enabled": true + , "streaming": true + }, + "accounting": { + "enabled": false + , "streaming": false + } + , "credentials_key": { + "read_only": "ALPACA_SANDBOX" + , "trade": "ALPACA_SANDBOX" + } + } + , "COINBASE_AT-MDPORTAL": { "order_entry": { "enabled": true , "streaming": true @@ -38,45 +116,3 @@ } } } -# , "books": { -# "ALPACA_BK02": {} -# , "ALPACA_BK_ILYA_01": {} -# } -# # -------------------------------------------------------------------- -# , "trader": { -# "app_channel": "TRDR" active_exchanges_: str - -# , "is_short_allowed": false -# , "exchanges_settings": { -# "*": { -# "mkt_data": { -# "enabled": true -# , "streaming": true -# }, -# } -# } -# , "trading_pos_diff_pct_trigger": 10.0 -# , "trading_depth": { -# "USD": 1000.0, -# } -# } -# , "quant": { -# "app_channel": "QUANT" -# , "strategies": @inc=http://${CONFIG_SVC_HOST}:6789/apps/strategies -# , "exchanges_settings": { -# "*": { -# "mkt_data": { -# "enabled": true -# , "streaming": true -# }, -# } -# # , "COINBASE_AT": { -# # "mkt_data": { -# # "enabled": true -# # , "streaming": true -# # }, -# # } -# } -# } -# } - diff --git a/data/apps/algos.cfg b/data/apps/common/algos.cfg similarity index 66% rename from data/apps/algos.cfg rename to data/apps/common/algos.cfg index 9ed0ee0..a549662 100644 --- a/data/apps/algos.cfg +++ b/data/apps/common/algos.cfg @@ -20,16 +20,28 @@ , "marketable_stage_added_ticks": 0 }, } - , "TRDALGO_ICEBERG01": { + , "TRDALGO_ICEBERG01_COINBS": { "class": "cvttpy.trading.algos.twap.TwapAlgo" , "params": { "num_slices": 5 , "duration_sec": 1500 # 25 min - , "max_order_usd": 100 + , "max_order_usd": 100. , "passive_stage_t1": 0 , "aggressive_stage_t2": 0 , "aggressivity_scale": [0.5, 1.0] # 0.5 = mid, 1.0= BBO-1 tick , "marketable_stage_added_ticks": 0 }, } + , "TRDALGO_ICEBERG01_ALPACA": { + "class": "cvttpy.trading.algos.twap.TwapAlgo" + , "params": { + "num_slices": 5 + , "duration_sec": 1500 # 25 min + , "max_order_usd": 1000. + , "passive_stage_t1": 0 + , "aggressive_stage_t2": 0 + # , "aggressivity_scale": [0.5, 1.0] # 0.5 = mid, 1.0= BBO-1 tick + , "marketable_stage_added_ticks": 0 + }, + } } diff --git a/data/apps/redis.cfg b/data/apps/common/redis.cfg similarity index 82% rename from data/apps/redis.cfg rename to data/apps/common/redis.cfg index e21b8e7..a2f1fbc 100644 --- a/data/apps/redis.cfg +++ b/data/apps/common/redis.cfg @@ -24,4 +24,9 @@ , "read_timeout" : 0.01 , "ping_timeout_secs": 2.0 } + , "cvtt-prod-03": { + "url": "redis://cvtt-prod-03.cvtt.vpn" + , "read_timeout" : 0.01 + , "ping_timeout_secs": 2.0 + } } diff --git a/data/apps/strategies.cfg b/data/apps/common/strategies.cfg similarity index 95% rename from data/apps/strategies.cfg rename to data/apps/common/strategies.cfg index a28fea9..871442b 100644 --- a/data/apps/strategies.cfg +++ b/data/apps/common/strategies.cfg @@ -9,7 +9,7 @@ "class": "cvttpy.trading.strategies.vwap_strat.VWAP001" , "params": { "vwap_interval": "1 hour" - , "hist_md_database": { + , "hist_md_source": { "class": "cvttpy.tools.db.timescale.tsdb_client.TimescaleDbClient" , "cred_key": "TSDB_MD_CVTTDATA_RO" , "data_type": "OHLCV" diff --git a/data/apps/cvtt.cfg b/data/apps/cvtt.cfg index 87dbbb6..e4601ee 100644 --- a/data/apps/cvtt.cfg +++ b/data/apps/cvtt.cfg @@ -3,7 +3,7 @@ { "refdata": @inc=http://${CONFIG_SVC_HOST}:6789/refdata/refdata - , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/redis + , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/common/redis , "cvttcomm": { "type": "redis" # , "redis_settings": "localhost" @@ -140,27 +140,7 @@ # -------------------------------------------------------------------- , "quant": { "app_channel": "QUANT" - - , "strategies": { - "CVTT_QST001": { - "class": "cvttpy.trading.strategies.test_strat.SeesawTestStrategy" - , "params": { - "dummy": "dummy" - } - } - , "VWAP001": { - "class": "cvttpy.trading.strategies.vwap_strat.VWAP001" - , "params": { - "vwap_interval": "1 hour" - , "hist_md_database": { - "class": "cvttpy.tools.db.timescale.tsdb_client.TimescaleDbClient" - , "cred_key": "TSDB_MD_CVTTDATA_RO" - , "data_type": "OHLCV" - } - , "publish_details": true - } - } - } + , "strategies": @inc=http://${CONFIG_SVC_HOST}:6789/apps/common/strategies , "exchanges_settings": { "COINBASE_AT": { "mkt_data": { diff --git a/data/apps/cvtt_crypto_coinbs.cfg b/data/apps/cvtt_crypto_coinbs.cfg index ddb02bc..3d3af7c 100644 --- a/data/apps/cvtt_crypto_coinbs.cfg +++ b/data/apps/cvtt_crypto_coinbs.cfg @@ -3,7 +3,7 @@ { "refdata": @inc=http://${CONFIG_SVC_HOST}:6789/refdata/refdata - , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/redis + , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/common/redis , "cvttcomm": { "type": "redis" # , "redis_settings": "localhost" @@ -37,7 +37,7 @@ } # , "interval": "4 hours" , "interval": "2 hours" - , "from_time": "2024-04-01 09:00:00" + , "from_time": "2024-04-15 09:00:00" } , "initial_positions": { "COINBASE": { @@ -72,7 +72,7 @@ }, } } - , "algos": @inc=http://${CONFIG_SVC_HOST}:6789/apps/algos + , "algos": @inc=http://${CONFIG_SVC_HOST}:6789/apps/common/algos , "trading_pos_diff_pct_trigger": 10.0 , "trading_depth": { "BTC": 0.001 @@ -107,7 +107,7 @@ , "quant": { "app_channel": "QUANT" - , "strategies": @inc=http://${CONFIG_SVC_HOST}:6789/apps/strategies + , "strategies": @inc=http://${CONFIG_SVC_HOST}:6789/apps/common/strategies , "exchanges_settings": { "COINBASE_AT": { "mkt_data": { diff --git a/data/apps/cvtt_eqt_alpaca.cfg b/data/apps/cvtt_eqt_alpaca.cfg index 460938f..13dc076 100644 --- a/data/apps/cvtt_eqt_alpaca.cfg +++ b/data/apps/cvtt_eqt_alpaca.cfg @@ -3,7 +3,7 @@ { "refdata": @inc=http://${CONFIG_SVC_HOST}:6789/refdata/refdata - , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/redis + , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/common/redis , "active_instruments": @inc=http://${CONFIG_SVC_HOST}:6789/apps/active_instruments , "cvttcomm": { "type": "redis" @@ -33,7 +33,7 @@ }, } } - , "algos": @inc=http://${CONFIG_SVC_HOST}:6789/apps/algos + , "algos": @inc=http://${CONFIG_SVC_HOST}:6789/apps/common/algos , "trading_pos_diff_pct_trigger": 10.0 , "trading_depth": { "USD": 1000.0, @@ -102,7 +102,7 @@ # -------------------------------------------------------------------- , "quant": { "app_channel": "QUANT" - , "strategies": @inc=http://${CONFIG_SVC_HOST}:6789/apps/strategies + , "strategies": @inc=http://${CONFIG_SVC_HOST}:6789/apps/common/strategies , "exchanges_settings": { "*": { "mkt_data": { diff --git a/data/apps/cvtt_eqt_alpaca_ilya.cfg b/data/apps/cvtt_eqt_alpaca_ilya.cfg index 7707414..c3ab60c 100644 --- a/data/apps/cvtt_eqt_alpaca_ilya.cfg +++ b/data/apps/cvtt_eqt_alpaca_ilya.cfg @@ -3,7 +3,7 @@ { "refdata": @inc=http://${CONFIG_SVC_HOST}:6789/refdata/refdata - , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/redis + , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/common/redis , "active_instruments": @inc=http://${CONFIG_SVC_HOST}:6789/apps/active_instruments , "cvttcomm": { "type": "redis" @@ -33,7 +33,7 @@ }, } } - , "algos": @inc=http://${CONFIG_SVC_HOST}:6789/apps/algos + , "algos": @inc=http://${CONFIG_SVC_HOST}:6789/apps/common/algos , "trading_pos_diff_pct_trigger": 10.0 , "trading_depth": { "USD": 1000.0, @@ -102,7 +102,7 @@ # -------------------------------------------------------------------- , "quant": { "app_channel": "QUANT_03" - , "strategies": @inc=http://${CONFIG_SVC_HOST}:6789/apps/strategies + , "strategies": @inc=http://${CONFIG_SVC_HOST}:6789/apps/common/strategies , "exchanges_settings": { "*": { "mkt_data": { diff --git a/data/apps/deprecated/algos.cfg.__DELETE__ b/data/apps/deprecated/algos.cfg.__DELETE__ new file mode 100644 index 0000000..a549662 --- /dev/null +++ b/data/apps/deprecated/algos.cfg.__DELETE__ @@ -0,0 +1,47 @@ +{ + "TRDALGO_001": { + "class": "cvttpy.trading.algos.simple.SimpleTradingAlgo" + , "params": {} + } + , "TRDALGO_MOOMOC_01": { + "class": "cvttpy.trading.algos.moo_moc.MooMocTradingAlgo" + , "params": { + }, + } + , "TRDALGO_TWAP01": { + "class": "cvttpy.trading.algos.twap.TwapAlgo" + , "params": { + "num_slices": 5 + , "duration_sec": 1500 # 25 min + , "max_order_usd": 100 + , "passive_stage_t1": 0.4 # join BBO, the rest is aggressive + , "aggressive_stage_t2": 0.4 + , "aggressivity_scale": [0.5, 1.0] # 0.5 = mid, 1.0= BBO-1 tick + , "marketable_stage_added_ticks": 0 + }, + } + , "TRDALGO_ICEBERG01_COINBS": { + "class": "cvttpy.trading.algos.twap.TwapAlgo" + , "params": { + "num_slices": 5 + , "duration_sec": 1500 # 25 min + , "max_order_usd": 100. + , "passive_stage_t1": 0 + , "aggressive_stage_t2": 0 + , "aggressivity_scale": [0.5, 1.0] # 0.5 = mid, 1.0= BBO-1 tick + , "marketable_stage_added_ticks": 0 + }, + } + , "TRDALGO_ICEBERG01_ALPACA": { + "class": "cvttpy.trading.algos.twap.TwapAlgo" + , "params": { + "num_slices": 5 + , "duration_sec": 1500 # 25 min + , "max_order_usd": 1000. + , "passive_stage_t1": 0 + , "aggressive_stage_t2": 0 + # , "aggressivity_scale": [0.5, 1.0] # 0.5 = mid, 1.0= BBO-1 tick + , "marketable_stage_added_ticks": 0 + }, + } +} diff --git a/data/apps/deprecated/executor_app.cfg b/data/apps/deprecated/executor_app.cfg index fb4fdfb..fad3101 100644 --- a/data/apps/deprecated/executor_app.cfg +++ b/data/apps/deprecated/executor_app.cfg @@ -1,6 +1,6 @@ { "refdata": @inc=http://cloud11.cvtt.vpn:6789/refdata/refdata - , "redis": @inc=http://cloud11.cvtt.vpn:6789/apps/redis + , "redis": @inc=http://cloud11.cvtt.vpn:6789/apps/common/redis , "cvttcomm": @inc=http://cloud11.cvtt.vpn:6789/apps/cvttcomm , "exchanges_settings": { "COINBASE_AT": { diff --git a/data/apps/deprecated/quant_app.cfg b/data/apps/deprecated/quant_app.cfg index 9a2d247..66aef27 100644 --- a/data/apps/deprecated/quant_app.cfg +++ b/data/apps/deprecated/quant_app.cfg @@ -2,7 +2,7 @@ { "refdata": @inc=http://${CONFIG_SVC_HOST}:6789/refdata/refdata - , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/redis + , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/common/redis , "cvttcomm": @inc=http://${CONFIG_SVC_HOST}:6789/apps/cvttcomm , "quant": { "books": { @@ -15,7 +15,7 @@ "dummy": "dummy" } } - } + } } , "exchanges_settings": { "COINBASE_AT": { diff --git a/data/apps/deprecated/redis.cfg.__DELETE__ b/data/apps/deprecated/redis.cfg.__DELETE__ new file mode 100644 index 0000000..a2f1fbc --- /dev/null +++ b/data/apps/deprecated/redis.cfg.__DELETE__ @@ -0,0 +1,32 @@ +{ + "localhost": { + "url": "redis://localhost" + , "read_timeout" : 0.01 + , "ping_timeout_secs": 2.0 + } + , "cloud17": { + "url": "redis://cloud17.cvtt.vpn" + , "read_timeout" : 0.01 + , "ping_timeout_secs": 2.0 + } + , "cvttdata": { + "url": "redis://cvttdata.cvtt.vpn" + , "read_timeout" : 0.01 + , "ping_timeout_secs": 2.0 + } + , "cvtt-prod-01": { + "url": "redis://cvtt-prod-01.cvtt.vpn" + , "read_timeout" : 0.01 + , "ping_timeout_secs": 2.0 + } + , "cvtt-prod-02": { + "url": "redis://cvtt-prod-02.cvtt.vpn" + , "read_timeout" : 0.01 + , "ping_timeout_secs": 2.0 + } + , "cvtt-prod-03": { + "url": "redis://cvtt-prod-03.cvtt.vpn" + , "read_timeout" : 0.01 + , "ping_timeout_secs": 2.0 + } +} diff --git a/data/apps/deprecated/risk_manager_app.cfg b/data/apps/deprecated/risk_manager_app.cfg index accc423..a52e154 100644 --- a/data/apps/deprecated/risk_manager_app.cfg +++ b/data/apps/deprecated/risk_manager_app.cfg @@ -3,7 +3,7 @@ "refdata": @inc=http://cloud11.cvtt.vpn:6789/refdata/refdata , "cvttcomm": @inc=http://cloud11.cvtt.vpn:6789/apps/cvttcomm - , "redis": @inc=http://cloud11.cvtt.vpn:6789/apps/redis + , "redis": @inc=http://cloud11.cvtt.vpn:6789/apps/common/redis , "risk_manager": { "book": "CVTT_BK01" , "database": { diff --git a/data/apps/deprecated/strategies.cfg.__DELETE__ b/data/apps/deprecated/strategies.cfg.__DELETE__ new file mode 100644 index 0000000..871442b --- /dev/null +++ b/data/apps/deprecated/strategies.cfg.__DELETE__ @@ -0,0 +1,25 @@ +{ + "CVTT_QST001": { + "class": "cvttpy.trading.strategies.test_strat.SeesawTestStrategy" + , "params": { + "dummy": "dummy" + } + } + , "VWAP001": { + "class": "cvttpy.trading.strategies.vwap_strat.VWAP001" + , "params": { + "vwap_interval": "1 hour" + , "hist_md_source": { + "class": "cvttpy.tools.db.timescale.tsdb_client.TimescaleDbClient" + , "cred_key": "TSDB_MD_CVTTDATA_RO" + , "data_type": "OHLCV" + } + } + } + , "DAILY_STOCK_001": { + "class": "cvttpy.trading.strategies.daily_stocks_strat.DailyStocksStrategy" + , "params": { + "liquidate_at": "15:45" # EDT Time + } + } +} diff --git a/data/apps/deprecated/trader_app.cfg b/data/apps/deprecated/trader_app.cfg index ef52996..906b876 100644 --- a/data/apps/deprecated/trader_app.cfg +++ b/data/apps/deprecated/trader_app.cfg @@ -1,7 +1,7 @@ { "refdata": @inc=http://cloud11.cvtt.vpn:6789/refdata/refdata , "cvttcomm": @inc=http://cloud11.cvtt.vpn:6789/apps/cvttcomm - , "redis": @inc=http://cloud11.cvtt.vpn:6789/apps/redis + , "redis": @inc=http://cloud11.cvtt.vpn:6789/apps/common/redis , "exchanges_settings": { "COINBASE_AT": { "mkt_data": { @@ -10,7 +10,7 @@ }, } } - , "trader": { + , "trader": { "books": { "CVTT_BK01": {} } diff --git a/data/apps/md_portal.cfg b/data/apps/md_portal.cfg index 18b4596..9041b2e 100644 --- a/data/apps/md_portal.cfg +++ b/data/apps/md_portal.cfg @@ -3,5 +3,5 @@ { # ---------------------------------- "refdata": @inc=http://${CONFIG_SVC_HOST}:6789/refdata/refdata - , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/redis + , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/common/redis } diff --git a/data/apps/md_portal_ilya.cfg b/data/apps/md_portal_ilya.cfg deleted file mode 100644 index 90396d5..0000000 --- a/data/apps/md_portal_ilya.cfg +++ /dev/null @@ -1,69 +0,0 @@ -@var CONFIG_SVC_HOST=cloud16.cvtt.vpn - -{ - # ---------------------------------- - "refdata": @inc=http://${CONFIG_SVC_HOST}:6789/refdata/refdata - , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/redis - , "md_portal": { - "app_channel": "MD_PORTAL_03" - , "exchanges_settings": { - "ALPACA_SNDBX": { - "order_entry": { - "enabled": false - , "streaming": false - }, - "mkt_data": { - "enabled": true - , "streaming": true - }, - "accounting": { - "enabled": false - , "streaming": false - } - } - , "BNBSPOT": { - "order_entry": { - "enabled": false - , "streaming": false - }, - "mkt_data": { - "enabled": true - , "streaming": true - }, - "accounting": { - "enabled": false - , "streaming": false - } - } - , "BNBFUT": { - "order_entry": { - "enabled": false - , "streaming": false - }, - "mkt_data": { - "enabled": true - , "streaming": true - }, - "accounting": { - "enabled": false - , "streaming": false - } - } - "COINBASE_AT": { - "order_entry": { - "enabled": false - , "streaming": false - }, - "mkt_data": { - "enabled": true - , "streaming": true - }, - "accounting": { - "enabled": false - , "streaming": false - } - } - } - } -} - diff --git a/data/apps/md_recorder.cfg b/data/apps/md_recorder.cfg index b517874..4ae77c3 100644 --- a/data/apps/md_recorder.cfg +++ b/data/apps/md_recorder.cfg @@ -2,7 +2,7 @@ { "refdata": @inc=http://${CONFIG_SVC_HOST}:6789/refdata/refdata - , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/redis + , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/common/redis , "active_instruments": @inc=http://${CONFIG_SVC_HOST}:6789/apps/active_instruments , "cvttcomm": { "type": "redis" diff --git a/data/apps/tests/get_positions.cfg b/data/apps/tests/get_positions.cfg index 2911114..0295244 100644 --- a/data/apps/tests/get_positions.cfg +++ b/data/apps/tests/get_positions.cfg @@ -23,6 +23,6 @@ } } , "refdata": @inc=http://${CONFIG_SVC_HOST}:6789/refdata/refdata - , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/redis + , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/common/redis } diff --git a/data/apps/tests/get_trades.cfg b/data/apps/tests/get_trades.cfg index 2911114..0295244 100644 --- a/data/apps/tests/get_trades.cfg +++ b/data/apps/tests/get_trades.cfg @@ -23,6 +23,6 @@ } } , "refdata": @inc=http://${CONFIG_SVC_HOST}:6789/refdata/refdata - , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/redis + , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/common/redis } diff --git a/data/apps/tests/listen_market_data.cfg b/data/apps/tests/listen_market_data.cfg index cd63ae3..39eb5bd 100644 --- a/data/apps/tests/listen_market_data.cfg +++ b/data/apps/tests/listen_market_data.cfg @@ -1,7 +1,7 @@ @var CONFIG_SVC_HOST=cloud16.cvtt.vpn { "refdata": @inc=http://${CONFIG_SVC_HOST}:6789/refdata/refdata - , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/redis + , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/common/redis , "active_instruments": @inc=http://${CONFIG_SVC_HOST}:6789/apps/active_instruments "exchanges_settings": { "*": { diff --git a/data/apps/tests/listen_market_data_prod.cfg b/data/apps/tests/listen_market_data_prod.cfg index 313653d..42444c1 100644 --- a/data/apps/tests/listen_market_data_prod.cfg +++ b/data/apps/tests/listen_market_data_prod.cfg @@ -1,7 +1,7 @@ @var CONFIG_SVC_HOST=cloud16.cvtt.vpn { "refdata": @inc=http://${CONFIG_SVC_HOST}:6789/refdata/refdata - , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/redis + , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/common/redis , "active_instruments": @inc=http://${CONFIG_SVC_HOST}:6789/apps/active_instruments , "exchanges_settings": { "*": { diff --git a/data/apps/tests/send_order_cvtt.cfg b/data/apps/tests/send_order_cvtt.cfg index 64dcd1b..f79871b 100644 --- a/data/apps/tests/send_order_cvtt.cfg +++ b/data/apps/tests/send_order_cvtt.cfg @@ -1,7 +1,7 @@ @var CVTT_CONFIG_HOST=cloud16.cvtt.vpn { "refdata": @inc=http://${CVTT_CONFIG_HOST}:6789/refdata/refdata - , "redis": @inc=http://${CVTT_CONFIG_HOST}:6789/apps/redis + , "redis": @inc=http://${CVTT_CONFIG_HOST}:6789/apps/common/redis , "cvttcomm": { "type": "redis" diff --git a/data/db/config_service.code-workspace b/data/db/config_service.code-workspace deleted file mode 100644 index e4e7c68..0000000 --- a/data/db/config_service.code-workspace +++ /dev/null @@ -1,7 +0,0 @@ -{ - "folders": [ - { - "path": "../.." - } - ] -} \ No newline at end of file diff --git a/data/db/hist_md.cfg b/data/db/hist_md.cfg deleted file mode 100644 index 4b00dad..0000000 --- a/data/db/hist_md.cfg +++ /dev/null @@ -1,10 +0,0 @@ -{ - "hist_md_database": { - "class": "cvttpy.tools.db.timescale.tsdb_client.TimescaleDbClient", - "connect": { - "host": "cvttdata.cvtt.vpn", - "port": 5432, - "database": "coinbase" - } - } -} \ No newline at end of file diff --git a/data/refdata/exchange_instruments.cfg b/data/refdata/exchange_instruments.cfg index 27d3040..7e9656d 100644 --- a/data/refdata/exchange_instruments.cfg +++ b/data/refdata/exchange_instruments.cfg @@ -285,6 +285,131 @@ }, } } + , "GEMINI": { + "instruments": { + # --- PAIRs + "PAIR-BTC-USD": { + "md_symbol": "BTCUSD", + "trade_symbol": "BTCUSD" + "specifics": { + "quote_increment": 0.5, + } + } + # --- PERPs + , "PERP-BTC-GUSD": { + "md_symbol": "BTCGUSDPERP", + "trade_symbol": "BTCGUSDPERP", + "base_asset": "BTCGUSDPERP", + "specifics": { + "quote_increment": 0.5, + } + } + # "PERP-BNB-GUSD": { + # "md_symbol": "BNBGUSDPERP", + # "trade_symbol": "BNBGUSDPERP", + # "base_asset": "BNBGUSDPERP", + # "specifics": { + # "quote_increment": 0.5, + # } + # }, + # "PERP-ETH-GUSD": { + # "md_symbol": "ETHGUSDPERP", + # "trade_symbol": "ETHGUSDPERP", + # "base_asset": "ETHGUSDPERP", + # "specifics": { + # "quote_increment": 0.5, + # } + # }, + # "PERP-PEPE-GUSD": { + # "md_symbol": "PEPEGUSDPERP", + # "trade_symbol": "PEPEGUSDPERP", + # "base_asset": "PEPEGUSDPERP", + # "specifics": { + # "quote_increment": 0.5, + # } + # }, + # "PERP-XRP-GUSD": { + # "md_symbol": "XRPGUSDPERP", + # "trade_symbol": "XRPGUSDPERP", + # "base_asset": "XRPGUSDPERP", + # "specifics": { + # "quote_increment": 0.5, + # } + # }, + # "PERP-SOL-GUSD": { + # "md_symbol": "SOLGUSDPERP", + # "trade_symbol": "SOLGUSDPERP", + # "base_asset": "SOLGUSDPERP", + # "specifics": { + # "quote_increment": 0.5, + # } + # }, + # "PERP-MATIC-GUSD": { + # "md_symbol": "MATICGUSDPERP", + # "trade_symbol": "MATICGUSDPERP", + # "base_asset": "MATICGUSDPERP", + # "specifics": { + # "quote_increment": 0.5, + # } + # }, + # "PERP-DOGE-GUSD": { + # "md_symbol": "DOGEGUSDPERP", + # "trade_symbol": "DOGEGUSDPERP", + # "base_asset": "DOGEGUSDPERP", + # "specifics": { + # "quote_increment": 0.5, + # } + # }, + # "PERP-DOT-GUSD": { + # "md_symbol": "DOTGUSDPERP", + # "trade_symbol": "DOTGUSDPERP", + # "base_asset": "DOTGUSDPERP", + # "specifics": { + # "quote_increment": 0.5, + # } + # }, + # "PERP-AVAX-GUSD": { + # "md_symbol": "AVAXGUSDPERP", + # "trade_symbol": "AVAXGUSDPERP", + # "base_asset": "AVAXGUSDPERP", + # "specifics": { + # "quote_increment": 0.5, + # } + # }, + # "PERP-LTC-GUSD": { + # "md_symbol": "LTCGUSDPERP", + # "trade_symbol": "LTCGUSDPERP", + # "base_asset": "LTCGUSDPERP", + # "specifics": { + # "quote_increment": 0.5, + # } + # }, + # "PERP-INJ-GUSD": { + # "md_symbol": "INJGUSDPERP", + # "trade_symbol": "INJGUSDPERP", + # "base_asset": "INJGUSDPERP", + # "specifics": { + # "quote_increment": 0.5, + # } + # }, + # "PERP-LINK-GUSD": { + # "md_symbol": "LINKGUSDPERP", + # "trade_symbol": "LINKGUSDPERP", + # "base_asset": "LINKGUSDPERP", + # "specifics": { + # "quote_increment": 0.5, + # } + # }, + # "PERP-WIF-GUSD": { + # "md_symbol": "WIFGUSDPERP", + # "trade_symbol": "WIFGUSDPERP", + # "base_asset": "WIFGUSDPERP", + # "specifics": { + # "quote_increment": 0.5, + # } + # }, + } + }, #******************************************************************************* #******************************************************************************* #******************************************************************************* diff --git a/data/refdata/exchanges.cfg b/data/refdata/exchanges.cfg index 701ee09..0e69e01 100644 --- a/data/refdata/exchanges.cfg +++ b/data/refdata/exchanges.cfg @@ -2,7 +2,7 @@ # @var DatabaseHost=cryptoval1.sheynin.home { "__DUMMY__": {} - # ---------------------- A + # ----------------------------- A , "ALPACA_SNDBX": { # https://docs.alpaca.markets/reference/ "exchange_id": "ALPACA" @@ -31,9 +31,12 @@ , "ws_url": ["WSS", "wss://stream.data.alpaca.markets/v2/iex"] , "REST": { "hist_md_bars": ["GET", "https://data.alpaca.markets/v2/stocks/bars"] + , "hist_md_quotes": ["GET", "https://data.alpaca.markets/v2/stocks/quotes"] + , "hist_md_trades": ["GET", "https://data.alpaca.markets/v2/stocks/trades"] , "latest_trade": ["GET", "https://data.alpaca.markets/v2/stocks/{symbol}/trades/latest"] + , "assets": ["GET", "https://paper-api.alpaca.markets/v2/assets"] + # , "assets": ["GET", "https://data.alpaca.markets/v2/assets"] } - } , "accounting": { "class": "cvttpy.exchanges.alpaca.account.AlpacaAccounting" @@ -73,6 +76,8 @@ , "REST": { "hist_md_bars": ["GET", "https://data.alpaca.markets/v2/stocks/bars"] , "latest_trade": ["GET", "https://data.alpaca.markets/v2/stocks/{symbol}/trades/latest"] + , "hist_md_quotes": ["GET", "https://data.alpaca.markets/v2/stocks/quotes"] + , "hist_md_trades": ["GET", "https://data.alpaca.markets/v2/stocks/trades"] } } , "accounting": { @@ -101,12 +106,55 @@ , "REST": { "hist_md_bars": ["GET", "https://data.alpaca.markets/v2/stocks/bars"] , "latest_trade": ["GET", "https://data.alpaca.markets/v2/stocks/{symbol}/trades/latest"] + , "hist_md_quotes": ["GET", "https://data.alpaca.markets/v2/stocks/quotes"] + , "hist_md_trades": ["GET", "https://data.alpaca.markets/v2/stocks/trades"] } } , "accounting": { } } - # ---------------------- B + , "ALPACA_SNDBX-MDP-03": { + # 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" + , "portal_name": "MD_PORTAL_ALPACA_03" + + , "REST": { + "hist_md_bars": ["GET", "https://data.alpaca.markets/v2/stocks/bars"] + , "latest_trade": ["GET", "https://data.alpaca.markets/v2/stocks/{symbol}/trades/latest"] + , "hist_md_quotes": ["GET", "https://data.alpaca.markets/v2/stocks/quotes"] + , "hist_md_trades": ["GET", "https://data.alpaca.markets/v2/stocks/trades"] + } + } + , "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 , "BITSTAMP": { "exchange_id": "BITSTAMP" , "name": "Bitstamp" @@ -122,7 +170,6 @@ , "ws_url": ["WSS", "wss://ws.bitstamp.net"] } } - , "BNBSPOT": { "exchange_id": "BNBSPOT" , "name": "Binance Spot" @@ -201,49 +248,49 @@ } } } - # ---------------------- C - , "CVTT": { - "exchange_id": "CVTT" - , "name": "CVTT Executor (proxy)" - , "type": "PROXY" + # ---------------------------- C + # , "CVTT": { + # "exchange_id": "CVTT" + # , "name": "CVTT Executor (proxy)" + # , "type": "PROXY" - , "order_entry": { - "class": "cvttpy.exchanges.proxies.cvtt.connector.CvttExecutorClient" + # , "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" + # } + # , "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" + # , "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" + # } + # , "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" + # , "order_entry": { + # "class": "cvttpy.exchanges.proxies.cvtt.connector.CvttExecutorClient" - } - ,"listen_channel_prefix": "CVTT_CLNT" - , "executor_channel": "EXEC" - } + # } + # ,"listen_channel_prefix": "CVTT_CLNT" + # , "executor_channel": "EXEC" + # } , "COINBASE_AT": { "exchange_id": "COINBASE" , "name": "Coinbase Advanced Trade" @@ -308,19 +355,28 @@ , "mktdata" : { "class": "cvttpy.exchanges.proxies.md_portal_clnt.mkt_data.MktDataPortalFeed" - , "portal_name": "MD_PORTAL_COINBS_02" + , "portal_name": "MD_PORTAL_COINBS_01" } } - , "MD_PORTAL": { - "exchange_id": "MD_PORTAL" - , "name": "MD Portal (proxy)" - , "type": "PROXY" + # ---------------------------- G + , "GEMINI": { + "exchange_id": "GEMINI" + , "name": "Gemini" + , "type": "SPOT" + + , "module" : "cvttpy.oms.exchange" + , "connector_class" : "MdOnlyExchangeConnector" , "mktdata" : { - "class": "cvttpy.exchanges.proxies.md_portal_clnt.mkt_data.MktDataPortalFeed" + "class": "cvttpy.exchanges.gemini.mkt_data.GeminiMdFeed" + , "reconnect_secs": 1 + + , "ws_url": ["WSS" , "wss://api.gemini.com/v2/marketdata"] } } + + # ---------------------------- M , "MD_PORTAL_ALPACA_02": { "exchange_id": "MD_PORTAL" , "name": "MD Portal (proxy)" @@ -332,7 +388,18 @@ , "channel_prefix": "MD_ALPACA_02" } } - , "MD_PORTAL_COINBS_02": { + , "MD_PORTAL_ALPACA_03": { + "exchange_id": "MD_PORTAL" + , "name": "MD Portal (proxy)" + , "type": "PROXY" + + , "mktdata" : { + "class": "cvttpy.exchanges.proxies.md_portal_clnt.mkt_data.MktDataPortalFeed" + , "redis_settings": "cvtt-prod-03" + , "channel_prefix": "MD_ALPACA_03" + } + } + , "MD_PORTAL_COINBS_01": { "exchange_id": "MD_PORTAL" , "name": "MD Portal (proxy)" , "type": "PROXY" @@ -340,7 +407,7 @@ , "mktdata" : { "class": "cvttpy.exchanges.proxies.md_portal_clnt.mkt_data.MktDataPortalFeed" , "redis_settings": "cvtt-prod-02" - , "channel_prefix": "MD_COINBS_02" + , "channel_prefix": "MD_COINBS_01" } } }