This commit is contained in:
Cryptoval Trading Technologies 2024-04-16 16:53:55 +01:00
parent 3aea35f424
commit 4724505fdf
6 changed files with 287 additions and 80 deletions

35
data/apps/algos.cfg Normal file
View File

@ -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
},
}
}

View File

@ -37,7 +37,7 @@
} }
# , "interval": "4 hours" # , "interval": "4 hours"
, "interval": "6 hours" , "interval": "6 hours"
, "from_time": "2024-03-01 09:00:00" , "from_time": "2024-04-01 09:00:00"
} }
, "initial_positions": { , "initial_positions": {
"COINBASE": { "COINBASE": {
@ -77,6 +77,35 @@
"class": "cvttpy.trading.algos.simple.SimpleTradingAlgo" "class": "cvttpy.trading.algos.simple.SimpleTradingAlgo"
, "params": {} , "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_pos_diff_pct_trigger": 10.0
, "trading_depth": { , "trading_depth": {

View File

@ -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"
}
}
}

View File

@ -10,7 +10,7 @@
, "redis_settings": "cvtt-prod-02" , "redis_settings": "cvtt-prod-02"
} }
, "session_type": "CALENDAR" , "session_type": "CALENDAR"
, "calendar": { , "calendar_session": {
"trading_hours_url": [ "trading_hours_url": [
"GET" "GET"
, "http://cloud16.cvtt.vpn:8000/api/v1/markets/hours?mic=XNYS&start={start}&end={end}" , "http://cloud16.cvtt.vpn:8000/api/v1/markets/hours?mic=XNYS&start={start}&end={end}"
@ -32,41 +32,7 @@
}, },
} }
} }
, "algos": { , "algos": @inc=http://${CONFIG_SVC_HOST}:6789/apps/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
},
}
}
, "trading_pos_diff_pct_trigger": 10.0 , "trading_pos_diff_pct_trigger": 10.0
, "trading_depth": { , "trading_depth": {
"USD": 1000.0, "USD": 1000.0,
@ -135,34 +101,7 @@
# -------------------------------------------------------------------- # --------------------------------------------------------------------
, "quant": { , "quant": {
"app_channel": "QUANT" "app_channel": "QUANT"
# , "strategy": "CVTT_QST001" , "strategies": @inc=http://${CONFIG_SVC_HOST}:6789/apps/strategies
# , "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
}
}
}
, "exchanges_settings": { , "exchanges_settings": {
"*": { "*": {
"mkt_data": { "mkt_data": {
@ -170,12 +109,12 @@
, "streaming": true , "streaming": true
}, },
} }
, "COINBASE_AT": { # , "COINBASE_AT": {
"mkt_data": { # "mkt_data": {
"enabled": true # "enabled": true
, "streaming": true # , "streaming": true
}, # },
} # }
} }
} }
# -------------------------------------------------------------------- # --------------------------------------------------------------------

25
data/apps/strategies.cfg Normal file
View File

@ -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
}
}
}

View File

@ -2,15 +2,15 @@
"__DUMMY__": {} "__DUMMY__": {}
# --------------------------------------------- # ---------------------------------------------
, "ALPACA": { , "ALPACA": {
"instruments": { "instrument_template": {
# "STOCK-AAPL": { # --- US Stocks only.
# "md_symbol": "AAPL", "instrument_id": "STOCK-{symbol}"
# "trade_symbol": "AAPL" , "base_asset": "EQT.{symbol}"
# } , "quote_asset": "USD"
# "STOCK-IBM": { , "quantity_precision": "1"
# "md_symbol": "IBM", , "price_tick": 0.01
# "trade_symbol": "IBM" , "md_symbol": "{symbol}"
# } , "trade_symbol": "{symbol}"
} }
} }
, "BNBSPOT": { , "BNBSPOT": {