From 4724505fdf605c066fbe846b259983e8822e357e Mon Sep 17 00:00:00 2001 From: Cryptoval Trading Technologies Date: Tue, 16 Apr 2024 16:53:55 +0100 Subject: [PATCH] . --- data/apps/algos.cfg | 35 +++++ data/apps/cvtt.cfg | 31 ++++- data/apps/cvtt_crypto_coinbs.cfg | 179 ++++++++++++++++++++++++++ data/apps/cvtt_eqt_alpaca.cfg | 79 ++---------- data/apps/strategies.cfg | 25 ++++ data/refdata/exchange_instruments.cfg | 18 +-- 6 files changed, 287 insertions(+), 80 deletions(-) create mode 100644 data/apps/algos.cfg create mode 100644 data/apps/cvtt_crypto_coinbs.cfg create mode 100644 data/apps/strategies.cfg diff --git a/data/apps/algos.cfg b/data/apps/algos.cfg new file mode 100644 index 0000000..f380ade --- /dev/null +++ b/data/apps/algos.cfg @@ -0,0 +1,35 @@ +{ + "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.BasicTwapAlgo" + , "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": { + "class": "cvttpy.trading.algos.twap.BasicTwapAlgo" + , "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 + }, + } +} diff --git a/data/apps/cvtt.cfg b/data/apps/cvtt.cfg index 0742423..87dbbb6 100644 --- a/data/apps/cvtt.cfg +++ b/data/apps/cvtt.cfg @@ -37,7 +37,7 @@ } # , "interval": "4 hours" , "interval": "6 hours" - , "from_time": "2024-03-01 09:00:00" + , "from_time": "2024-04-01 09:00:00" } , "initial_positions": { "COINBASE": { @@ -77,6 +77,35 @@ "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.BasicTwapAlgo" + , "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": { + "class": "cvttpy.trading.algos.twap.BasicTwapAlgo" + , "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 + }, + } } , "trading_pos_diff_pct_trigger": 10.0 , "trading_depth": { diff --git a/data/apps/cvtt_crypto_coinbs.cfg b/data/apps/cvtt_crypto_coinbs.cfg new file mode 100644 index 0000000..ddb02bc --- /dev/null +++ b/data/apps/cvtt_crypto_coinbs.cfg @@ -0,0 +1,179 @@ +@var CONFIG_SVC_HOST=cloud16.cvtt.vpn +@var ResultPath=/tmp + +{ + "refdata": @inc=http://${CONFIG_SVC_HOST}:6789/refdata/refdata + , "redis": @inc=http://${CONFIG_SVC_HOST}:6789/apps/redis + , "cvttcomm": { + "type": "redis" + # , "redis_settings": "localhost" + , "redis_settings": "cloud17" + } + , "session_type": "PERMANENT" + , "books": { + "CVTT_BK01": {} + } + , "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.timescale.tsdb_client.TimescaleDbClient" + , "credentials_key": "TSDB_MD_CVTTDATA_RO" + } + # , "interval": "4 hours" + , "interval": "2 hours" + , "from_time": "2024-04-01 09:00:00" + } + , "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" + # , "presubscribe_md_types": ["BOOK_TOP", "TRADES"] + } + , "result": { + "repository": "${ResultPath}/backtest_results.json" + , "db_file": "${ResultPath}/%T.backtest.db" + } + } + # -------------------------------------------------------------------- + , "trader": { + "app_channel": "TRDR" active_exchanges_: str + + , "is_short_allowed": false + , "exchanges_settings": { + "COINBASE_AT": { + "mkt_data": { + "enabled": true + , "streaming": true + }, + } + } + , "algos": @inc=http://${CONFIG_SVC_HOST}:6789/apps/algos + , "trading_pos_diff_pct_trigger": 10.0 + , "trading_depth": { + "BTC": 0.001 + # "BTC": 0.1 + } + } + # -------------------------------------------------------------------- + "executor": { + "app_channel": "EXEC" + , "exchanges_settings": { + "COINBASE_AT": { + "order_entry": { + "enabled": true + , "streaming": true + }, + "mkt_data": { + "enabled": false + , "streaming": false + }, + "accounting": { + "enabled": false + , "streaming": false + } + , "credentials_key": { + "read_only": "COINBASE_ADV_RO" + , "trade": "COINBASE_ADV_TRD" + } + } + } + } + # -------------------------------------------------------------------- + , "quant": { + "app_channel": "QUANT" + + , "strategies": @inc=http://${CONFIG_SVC_HOST}:6789/apps/strategies + , "exchanges_settings": { + "COINBASE_AT": { + "mkt_data": { + "enabled": true + , "streaming": true + }, + } + } + } + # -------------------------------------------------------------------- + , "risk_manager": { + "app_channel": "RMGR" + , "books": { + "CVTT_BK01": {} + } + , "db": { + "positions_table": "prod.cvtt_positions" + , "cred_key": { + "write": "TSDB_TRD_CVTTDATA" + , "read_only": "TSDB_TRD_CVTTDATA" + } + } + , "positions": { + "load_interval_sec": 10.0 + , "to_store_zero_positions": false + , "to_save_unchanged_positions": false + } + , "publish_value_interval": 10.0 + , "exchanges_settings": { + "COINBASE_AT": { + "mkt_data": { + "enabled": true + , "streaming": true + }, + "accounting": { + "enabled": true + , "streaming": false + } + , "credentials_key": { + "trade": "COINBASE_ADV" + , "read_only": "COINBASE_ADV_RO" + } + } + } + } + , "trading_recorder": { + # "format": "CSV" + # "format": "TSDB" + "format": "SQLite" + , "csv_settings": { + "order_events_file_path": "%T.order_events.csv" + "position_events_file_path": "%T.position_events.csv" + } + , "tsdb_settings": { + "db": { + "class": "cvttpy.tools.db.timescale.tsdb_client.TimescaleDbClient" + , "cred_key": "TSDB_TRD_CVTTDATA_DB_TEST" + } + , "order_events_table": "backtest.trading_orders" + , "trade_events_table": "backtest.trading_trades" + , "trading_md_summary_table": "backtest.trading_md" + } + , "sqlite_settings": { + # "file_name": "/tmp/%T.cvtt_backtest.db" + "file_name": "/tmp/cvtt_backtest.db" + } + } +} + diff --git a/data/apps/cvtt_eqt_alpaca.cfg b/data/apps/cvtt_eqt_alpaca.cfg index 21906b8..c2683d7 100644 --- a/data/apps/cvtt_eqt_alpaca.cfg +++ b/data/apps/cvtt_eqt_alpaca.cfg @@ -10,7 +10,7 @@ , "redis_settings": "cvtt-prod-02" } , "session_type": "CALENDAR" - , "calendar": { + , "calendar_session": { "trading_hours_url": [ "GET" , "http://cloud16.cvtt.vpn:8000/api/v1/markets/hours?mic=XNYS&start={start}&end={end}" @@ -32,41 +32,7 @@ }, } } - , "algos": { - "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.BasicTwapAlgo" - , "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": { - "class": "cvttpy.trading.algos.twap.BasicTwapAlgo" - , "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 - }, - } - } + , "algos": @inc=http://${CONFIG_SVC_HOST}:6789/apps/algos , "trading_pos_diff_pct_trigger": 10.0 , "trading_depth": { "USD": 1000.0, @@ -135,34 +101,7 @@ # -------------------------------------------------------------------- , "quant": { "app_channel": "QUANT" - # , "strategy": "CVTT_QST001" - # , "strategy": "VWAP001" - , "strategy": "DAILY_STOCK_001" - , "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" - } - } - } - , "DAILY_STOCK_001": { - "class": "cvttpy.trading.strategies.daily_stocks_strat.DailyStocksStrategy" - , "params": { - "liquidate_at": "15:45" # EDT Time - } - } - } + , "strategies": @inc=http://${CONFIG_SVC_HOST}:6789/apps/strategies , "exchanges_settings": { "*": { "mkt_data": { @@ -170,12 +109,12 @@ , "streaming": true }, } - , "COINBASE_AT": { - "mkt_data": { - "enabled": true - , "streaming": true - }, - } + # , "COINBASE_AT": { + # "mkt_data": { + # "enabled": true + # , "streaming": true + # }, + # } } } # -------------------------------------------------------------------- diff --git a/data/apps/strategies.cfg b/data/apps/strategies.cfg new file mode 100644 index 0000000..a28fea9 --- /dev/null +++ b/data/apps/strategies.cfg @@ -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_database": { + "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/refdata/exchange_instruments.cfg b/data/refdata/exchange_instruments.cfg index 6f6d7d4..9beda99 100644 --- a/data/refdata/exchange_instruments.cfg +++ b/data/refdata/exchange_instruments.cfg @@ -2,15 +2,15 @@ "__DUMMY__": {} # --------------------------------------------- , "ALPACA": { - "instruments": { - # "STOCK-AAPL": { - # "md_symbol": "AAPL", - # "trade_symbol": "AAPL" - # } - # "STOCK-IBM": { - # "md_symbol": "IBM", - # "trade_symbol": "IBM" - # } + "instrument_template": { + # --- US Stocks only. + "instrument_id": "STOCK-{symbol}" + , "base_asset": "EQT.{symbol}" + , "quote_asset": "USD" + , "quantity_precision": "1" + , "price_tick": 0.01 + , "md_symbol": "{symbol}" + , "trade_symbol": "{symbol}" } } , "BNBSPOT": {