Compare commits
122 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 42491d050c | |||
| 2ebac80d7b | |||
| 2abce705ee | |||
| 606f0a685d | |||
| b2594d75be | |||
| 7ff811196e | |||
| 4b0309631e | |||
| 9b580edf9e | |||
| 27b46bb5fb | |||
| e07264da16 | |||
| c9bbcfdf8b | |||
| 4000cb2cec | |||
| 13dc133043 | |||
| 84bd268ac4 | |||
| 357faf0442 | |||
| 6d073efb04 | |||
| b90e1f55b2 | |||
| dd5cb32d0b | |||
| ae8d85b216 | |||
| 92466faa3e | |||
| 64aaf6d3c4 | |||
| 36c12092bb | |||
| 6f0c8acefc | |||
| a0464ad59e | |||
| d5b4886202 | |||
| 6371a713bc | |||
| 1a6c940e6d | |||
| 35e037d2bf | |||
| 4ad394e28b | |||
| 71381027fd | |||
| 58d298cc58 | |||
| ab62540c99 | |||
| 1454db27fb | |||
| aced092d0a | |||
| 3d8c3114ab | |||
| e59c4431de | |||
| edfdc4aee8 | |||
| b8d3fd905a | |||
| fa098a79a0 | |||
| fa94cba379 | |||
| 561251fec7 | |||
| 1cef86db6b | |||
| f52bc56171 | |||
| 9ae93e6132 | |||
| 98e08b86b7 | |||
| f167ee1f71 | |||
| c8c2f08c20 | |||
| 92cfbc36a6 | |||
| 3e774723c1 | |||
| 420db0fe4e | |||
| 5c028d6236 | |||
| fb390fa5e7 | |||
| e08805c75f | |||
| fed37d0729 | |||
| f5839e2d76 | |||
| 789e05c539 | |||
| a28a263aea | |||
| 6b962a489e | |||
| 9d531a87e6 | |||
| 7ead186330 | |||
| 88fccf318e | |||
| 0e41203177 | |||
| 27dd217f9a | |||
| 69f9ea6e6e | |||
| b3b6ee4b47 | |||
| 5aaa4ff2a3 | |||
| fb56028485 | |||
| 3dcdcddba9 | |||
| 42a47c68a6 | |||
| 20270da409 | |||
| af375e9587 | |||
| f8fad120d7 | |||
| 467fa58d32 | |||
| 313f535887 | |||
| 3d18791797 | |||
| 1bacfb6c42 | |||
| 89dd815ea1 | |||
| e1c581afcb | |||
| d96ae9c408 | |||
| 92a561beec | |||
| 76cb915702 | |||
| c4961217d7 | |||
| cab71ef46e | |||
| bf8540fe4f | |||
| ce43cc308e | |||
| 793448f4b9 | |||
| 9d92bb7635 | |||
| d2e036f471 | |||
| 023ce27171 | |||
| 45e23b0c18 | |||
| 1f469ed148 | |||
| 3a260dc8e7 | |||
| ebb9eec8e6 | |||
| 48efb65399 | |||
| 15ef942ab0 | |||
| 34306b6eae | |||
| 69ee78424a | |||
| ee9d93b5ad | |||
| bc8c470a1a | |||
| 65ea6f14d9 | |||
| 0e8ee9434b | |||
| ce477ef871 | |||
| 6420df5158 | |||
| 4d12329f0b | |||
| 5796504377 | |||
| e7f3e4c5cb | |||
| 9feb87df5d | |||
| bed7b838ec | |||
| 088770e923 | |||
| b4fc81338d | |||
| 06c01115dd | |||
| 5e7cf812aa | |||
| 50dee15642 | |||
| 7cb2e5ed6b | |||
| 8ce21f0715 | |||
| c1c72b7f80 | |||
| 8b109e933c | |||
| cf62777b62 | |||
| 82bc99e00d | |||
| 8f77238d82 | |||
| 64536e2955 | |||
| d468bdfd79 |
+94
-95
@@ -1,160 +1,159 @@
|
||||
# ------- I M P O R T A N T
|
||||
# -----------------------------------------------------------------
|
||||
# ---- DO NOT USE JSON Booleans, jq considers "false" as missing,
|
||||
# ---- So it will replace it with default value
|
||||
# ---- Instead use strings (case insensitive): "false", "no", "N", "T"
|
||||
# -----------------------------------------------------------------
|
||||
{
|
||||
"cvtt.vpn": {
|
||||
// ----------- C l o u d
|
||||
"cloud11": {
|
||||
"type": "cloud",
|
||||
"users": ["oleg", "cvtt"],
|
||||
"docker": true,
|
||||
"supervisor": false,
|
||||
"docker": "true",
|
||||
},
|
||||
"cloud15": {
|
||||
"type": "cloud",
|
||||
"users": ["oleg"],
|
||||
"docker": false,
|
||||
"supervisor": false,
|
||||
"docker": "false",
|
||||
},
|
||||
"cloud16": {
|
||||
"type": "cloud",
|
||||
"users": ["oleg", "cvtt"],
|
||||
"docker": true,
|
||||
"supervisor": true,
|
||||
"users": ["oleg"],
|
||||
"docker": "true",
|
||||
},
|
||||
"cloud21": {
|
||||
"type": "cloud",
|
||||
"users": ["oleg", "cvtt"],
|
||||
"docker": true,
|
||||
"supervisor": true,
|
||||
"users": ["oleg", "cvtt", "cvttdist", "git"],
|
||||
"docker": "true",
|
||||
},
|
||||
"cloud22": {
|
||||
"type": "cloud",
|
||||
"users": ["oleg"],
|
||||
"docker": false,
|
||||
"supervisor": false,
|
||||
"docker": "false",
|
||||
},
|
||||
"cloud23": {
|
||||
"type": "cloud",
|
||||
"users": ["oleg", "cvtt"],
|
||||
"docker": true,
|
||||
"supervisor": false,
|
||||
"docker": "true",
|
||||
},
|
||||
"cloud24": {
|
||||
"cloud28": {
|
||||
"type": "cloud",
|
||||
"users": ["oleg", "cvtt"],
|
||||
"docker": true,
|
||||
"supervisor": true,
|
||||
"docker": "true",
|
||||
},
|
||||
"cloud29": {
|
||||
"type": "cloud",
|
||||
"users": ["oleg", "cvtt"],
|
||||
"docker": "true",
|
||||
},
|
||||
"cloud30": {
|
||||
"type": "cloud",
|
||||
"users": ["oleg", "cvtt"],
|
||||
"docker": "true",
|
||||
},
|
||||
"cloud31": {
|
||||
"type": "cloud",
|
||||
"users": ["oleg", "cvtt"],
|
||||
"docker": "true",
|
||||
},
|
||||
|
||||
// ----------- B a r e M e t a l
|
||||
"homestore": {
|
||||
"hs01": {
|
||||
"type": "metal",
|
||||
"users": ["oleg", "cvtt", "cvttdist", "git"],
|
||||
"docker": "true",
|
||||
},
|
||||
"hbkp01": {
|
||||
"type": "metal",
|
||||
"users": ["oleg"],
|
||||
"docker": true,
|
||||
"supervisor": false,
|
||||
"docker": "false",
|
||||
},
|
||||
"nsbackup": {
|
||||
"type": "metal",
|
||||
"users": ["oleg"],
|
||||
"docker": false,
|
||||
"supervisor": false,
|
||||
},
|
||||
"cryptoval2": {
|
||||
"type": "metal",
|
||||
"users": ["oleg"],
|
||||
"docker": false,
|
||||
"supervisor": false,
|
||||
},
|
||||
"cryptoval3": {
|
||||
"cv05": {
|
||||
"type": "metal",
|
||||
"users": ["oleg", "cvtt"],
|
||||
"docker": true,
|
||||
"supervisor": false,
|
||||
"docker": "true",
|
||||
"desktop": "true",
|
||||
},
|
||||
"cryptoval4": {
|
||||
"type": "metal",
|
||||
"users": ["oleg", "cvtt"],
|
||||
"docker": true,
|
||||
"supervisor": false,
|
||||
},
|
||||
"dtvmhost": {
|
||||
"cv06": {
|
||||
"type": "metal",
|
||||
"users": ["oleg"],
|
||||
"docker": false,
|
||||
"supervisor": false,
|
||||
"docker": "false",
|
||||
"desktop": "true",
|
||||
},
|
||||
"gpushnik": {
|
||||
"office-oleg-02": {
|
||||
"type": "metal",
|
||||
"users": ["oleg"],
|
||||
"docker": true,
|
||||
"supervisor": false,
|
||||
"docker": "false",
|
||||
"desktop": "true",
|
||||
},
|
||||
|
||||
// ----------- V i r t u a l M a c h i n e s
|
||||
"cvttdata": {
|
||||
"type": "vm",
|
||||
"users": ["oleg", "cvtt"],
|
||||
"docker": true,
|
||||
"supervisor": false,
|
||||
},
|
||||
"cvtt-dev": {
|
||||
// - GUI
|
||||
"cvtt-admin": {
|
||||
"type": "vm",
|
||||
"users": ["oleg"],
|
||||
"docker": true,
|
||||
"supervisor": false,
|
||||
"__eod__": null
|
||||
},
|
||||
"cvtt-edu": {
|
||||
"type": "vm",
|
||||
"users": ["oleg"],
|
||||
"docker": false,
|
||||
"supervisor": false,
|
||||
},
|
||||
"cvtt-prod-eqty-01": {
|
||||
"type": "vm",
|
||||
"users": ["oleg", "cvtt"],
|
||||
"docker": true,
|
||||
"supervisor": false,
|
||||
},
|
||||
"cvtt-research": {
|
||||
"type": "vm",
|
||||
"users": ["oleg"],
|
||||
"docker": true,
|
||||
"supervisor": false,
|
||||
"docker": "true",
|
||||
"gui": "true",
|
||||
"to_check": "No",
|
||||
},
|
||||
# Complete the list of GUI/Desktop VMs
|
||||
"desktop": {
|
||||
"type": "vm",
|
||||
"users": ["oleg"],
|
||||
"docker": false,
|
||||
"supervisor": false,
|
||||
"docker": "false",
|
||||
"gui": "true",
|
||||
"to_check": "No",
|
||||
},
|
||||
"ops-server": {
|
||||
"home-fin": {
|
||||
"type": "vm",
|
||||
"users": ["oleg", "cvtt"],
|
||||
"docker": true,
|
||||
"supervisor": false,
|
||||
"users": ["oleg"],
|
||||
"docker": "false",
|
||||
"gui": "true",
|
||||
"to_check": "No",
|
||||
},
|
||||
|
||||
// -- Headless
|
||||
# "cvtt-build": {
|
||||
# "type": "vm",
|
||||
# "users": ["oleg"],
|
||||
# "docker": "true",
|
||||
# "to_check": "No",
|
||||
# },
|
||||
"cvtt-md": {
|
||||
"type": "vm",
|
||||
"users": ["oleg", "cvtt"],
|
||||
"docker": true,
|
||||
"supervisor": false,
|
||||
"docker": "true",
|
||||
},
|
||||
"cvttdata-testdb": {
|
||||
# "cvtt-testserver": {
|
||||
# "type": "vm",
|
||||
# "users": ["oleg", "cvtt"],
|
||||
# "docker": "true",
|
||||
# "to_check": "No",
|
||||
# },
|
||||
# "cvtt-testdb": {
|
||||
# "type": "vm",
|
||||
# "users": ["oleg", "cvtt"],
|
||||
# "docker": "true",
|
||||
# "to_check": "false",
|
||||
# "timeout_sec": 11,
|
||||
# },
|
||||
"ops-server": {
|
||||
"type": "vm",
|
||||
"users": ["oleg", "cvtt"],
|
||||
"docker": true,
|
||||
"supervisor": false,
|
||||
"docker": "true",
|
||||
},
|
||||
"cvtt-testserver": {
|
||||
"cvtt-dev-server": {
|
||||
"type": "vm",
|
||||
"users": ["oleg", "cvtt", "yasha"],
|
||||
"docker": "true",
|
||||
"to_check": "Yes",
|
||||
},
|
||||
"dev-server-02": {
|
||||
"type": "vm",
|
||||
"users": ["oleg", "cvtt"],
|
||||
"docker": true,
|
||||
"supervisor": false,
|
||||
},
|
||||
"cvtt-prod-03": {
|
||||
"type": "vm",
|
||||
"users": ["oleg"],
|
||||
"docker": false,
|
||||
"supervisor": true,
|
||||
"docker": "true",
|
||||
"to_check": "Yes",
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
{
|
||||
"Mattermost": {
|
||||
"to_check": "Yes",
|
||||
"protocol": "https",
|
||||
"host": "mattermost.cryptovaltrading.com",
|
||||
"port": 443
|
||||
},
|
||||
"Gitea": {
|
||||
"to_check": "Yes",
|
||||
"protocol": "http",
|
||||
"host": "gitea.cvtt.net",
|
||||
"port": 443
|
||||
# "host": "cloud30.cvtt.net",
|
||||
# "port": 3000
|
||||
},
|
||||
"Docker Registry": {
|
||||
"to_check": "Yes",
|
||||
"protocol": "http",
|
||||
"host": "cloud21.cvtt.vpn",
|
||||
"port": 5500
|
||||
},
|
||||
"CVTT Config Service": {
|
||||
"to_check": "Yes",
|
||||
"protocol": "http",
|
||||
"host": "cloud16.cvtt.vpn",
|
||||
"port": 6789
|
||||
},
|
||||
"Infisical Secret Management": {
|
||||
"to_check": "Yes",
|
||||
"protocol": "https",
|
||||
"host": "infisical.cvtt.net",
|
||||
"port": 443
|
||||
},
|
||||
"Youtrack": {
|
||||
"to_check": "Yes",
|
||||
"protocol": "http",
|
||||
# "host": "vendor-services.cvtt.vpn",
|
||||
# "port": 8383
|
||||
"host": "tasks.cvtt.net",
|
||||
"port": 443
|
||||
},
|
||||
"Trading Calendar": {
|
||||
"to_check": "Yes",
|
||||
"protocol": "https",
|
||||
"host": "trading-calendar.cvtt.net",
|
||||
"port": 443
|
||||
},
|
||||
"US EQTY Rel.Liquidity": {
|
||||
"to_check": "Yes",
|
||||
"protocol": "http",
|
||||
"host": "cloud23.cvtt.vpn",
|
||||
"port": 5678
|
||||
},
|
||||
# "PyTorch (Jupyter)": {
|
||||
# "to_check": "No",
|
||||
# "protocol": "http",
|
||||
# "host": "gpushnik.cvtt.vpn",
|
||||
# "port": 8888
|
||||
# },
|
||||
# "TensorFlow (Jupyter)": {
|
||||
# "to_check": "No",
|
||||
# "protocol": "http",
|
||||
# "host": "gpushnik.cvtt.vpn",
|
||||
# "port": 9999
|
||||
# },
|
||||
|
||||
# "FastAI (Jupyter)": {
|
||||
# "to_check": "No",
|
||||
# "protocol": "http",
|
||||
# "host": "gpushnik.cvtt.vpn",
|
||||
# "port": 7777
|
||||
# },
|
||||
"Jenkins": {
|
||||
"to_check": "No",
|
||||
"protocol": "http",
|
||||
"host": "cvtt-build.cvtt.vpn",
|
||||
"port": 8080
|
||||
},
|
||||
"NetBird": {
|
||||
"to_check": "Yes",
|
||||
"protocol": "http",
|
||||
"host": "cloud18.cryptovaltrading.com",
|
||||
"port": 80
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"Alpaca HBAR Loader": {
|
||||
"image_name": "alpaca_hbar",
|
||||
"docker_dev_path": "market_data/alpaca_hbar",
|
||||
"based_on_project": "cvtt-rust"
|
||||
# "additional_projects": []
|
||||
# "test_script": "alpacka_hbar_test.sh"
|
||||
}
|
||||
, "Alpaca QAT Loader": {
|
||||
"image_name": "alpaca_qat",
|
||||
"docker_dev_path": "market_data/alpaca_qat",
|
||||
"based_on_project": "cvtt-rust"
|
||||
# "additional_projects": []
|
||||
}
|
||||
, "Crypto Exchange Statistics": {
|
||||
"image_name": "crypto_exch_stats",
|
||||
"docker_dev_path": "research/crypto_exch_stats",
|
||||
"based_on_project": "cvttpy"
|
||||
# "additional_projects": []
|
||||
}
|
||||
, "Crypto Daily MD": {
|
||||
"image_name": "crypto_md_day",
|
||||
"docker_dev_path": "market_data/crypto_md_day",
|
||||
"based_on_project": "cvttpy"
|
||||
# "additional_projects": []
|
||||
}
|
||||
# , "Market Data Recorder": {
|
||||
# "image_name": "md_recorder",
|
||||
# "docker_dev_path": "market_data/md_recorder",
|
||||
# "based_on_project": "cvttpy"
|
||||
# "additional_projects": ["ops"]
|
||||
# }
|
||||
# , "MD Rec MONITOR": {
|
||||
# "image_name": "md_recorder_monitor",
|
||||
# "docker_dev_path": "market_data/md_recorder_monitor",
|
||||
# "based_on_project": "cvttpy"
|
||||
# "additional_projects": ["ops"]
|
||||
# }
|
||||
, "CONFIG SERVICE": {
|
||||
"image_name": "config_service",
|
||||
"docker_dev_path": "config_service",
|
||||
"based_on_project": "cvttpy"
|
||||
"additional_projects": ["ops"]
|
||||
}
|
||||
, "Relative Liquidity": {
|
||||
"image_name": "relative_liquidity",
|
||||
"docker_dev_path": "market_data/relative_liquidity",
|
||||
"based_on_project": "cvttpy"
|
||||
"additional_projects": []
|
||||
}
|
||||
}
|
||||
@@ -2,75 +2,75 @@
|
||||
"cvtt": {
|
||||
"cvtt2:": {
|
||||
"cvttpy": [
|
||||
{"origin": "git@cloud21.cvtt.vpn:/opt/store/git/cvttpy.git" },
|
||||
{"homestore": "git@homestore.cvtt.vpn:/opt/git/cvtt2/cvttpy.git" },
|
||||
{"cryptova": "ssh://cryptova@cryptovaltrading.com:1588/home/cryptova/git/cvtt2/cvttpy.git" },
|
||||
{"gitea": "ssh://git@homestore.cvtt.vpn:20022/oleg/cvttpy.git" },
|
||||
{"gitea": "ssh://git@hs01.cvtt.vpn:20022/oleg/cvttpy.git" },
|
||||
{"hs01": "git@hs01.cvtt.vpn:/works/git/cvtt2/cvttpy.git" },
|
||||
{"origin": "git@cloud21.cvtt.vpn:/opt/store/git/cvttpy.git" },
|
||||
],
|
||||
"ops": [
|
||||
{"origin": "ssh://cryptova@cryptovaltrading.com:1588/home/cryptova/git/cvtt2/ops.git" },
|
||||
{"homestore": "git@homestore.cvtt.vpn:/opt/git/cvtt2/ops.git" },
|
||||
{"cryptova": "ssh://cryptova@cryptovaltrading.com:1588/home/cryptova/git/cvtt2/ops.git" },
|
||||
{"gitea": "ssh://git@homestore.cvtt.vpn:20022/oleg/ops.git" },
|
||||
{"gitea": "ssh://git@hs01.cvtt.vpn:20022/oleg/ops.git" },
|
||||
{"hs01": "git@hs01.cvtt.vpn:/works/git/cvtt2/ops.git" },
|
||||
{"origin": "git@cloud21.cvtt.vpn:/opt/store/git/cvtt2/ops.git" },
|
||||
],
|
||||
"docker_dev": [
|
||||
{"origin": "ssh://cryptova@cryptovaltrading.com:1588/home/cryptova/git/cvtt2/docker_dev.git" },
|
||||
{"homestore": "git@homestore.cvtt.vpn:/opt/git/cvtt2/docker_dev.git" },
|
||||
{"cryptova": "ssh://cryptova@cryptovaltrading.com:1588/home/cryptova/git/cvtt2/docker_dev.git" },
|
||||
{"gitea": "ssh://git@homestore.cvtt.vpn:20022/oleg/docker_dev.git" },
|
||||
{"gitea": "ssh://git@hs01.cvtt.vpn:20022/development/docker_dev.git" },
|
||||
{"hs01": "git@hs01.cvtt.vpn:/works/git/cvtt2/docker_dev.git" },
|
||||
{"origin": "git@cloud21.cvtt.vpn:/opt/store/git/docker_dev.git" },
|
||||
],
|
||||
"config_service": [
|
||||
{"origin": "ssh://cryptova@cryptovaltrading.com:1588/home/cryptova/git/cvtt2/config_service.git" },
|
||||
{"homestore": "git@homestore.cvtt.vpn:/opt/git/cvtt2/config_service.git" },
|
||||
{"cryptova": "ssh://cryptova@cryptovaltrading.com:1588/home/cryptova/git/cvtt2/config_service.git" },
|
||||
{"gitea": "ssh://git@homestore.cvtt.vpn:20022/oleg/config_service.git" },
|
||||
{"gitea": "ssh://git@hs01.cvtt.vpn:20022/oleg/config_service.git" },
|
||||
{"hs01": "git@hs01.cvtt.vpn:/works/git/cvtt2/config_service.git" },
|
||||
{"origin": "git@cloud21.cvtt.vpn:/opt/store/git/cvtt2/config_service.git" },
|
||||
],
|
||||
"cronjobs": [
|
||||
{"origin": "ssh://cryptova@cryptovaltrading.com:1588/home/cryptova/git/cvtt2/cronjobs.git" },
|
||||
{"homestore": "git@homestore.cvtt.vpn:/opt/git/cvtt2/cronjobs.git" },
|
||||
{"cryptova": "ssh://cryptova@cryptovaltrading.com:1588/home/cryptova/git/cvtt2/cronjobs.git" },
|
||||
{"gitea": "ssh://git@homestore.cvtt.vpn:20022/oleg/cronjobs.git" },
|
||||
{"gitea": "ssh://git@hs01.cvtt.vpn:20022/oleg/cronjobs.git" },
|
||||
{"hs01": "git@hs01.cvtt.vpn:/works/git/cvtt2/cronjobs.git" },
|
||||
{"origin": "git@cloud21.cvtt.vpn:/opt/store/git/cvtt2/cronjobs.git" },
|
||||
],
|
||||
"research": [
|
||||
{"origin": "ssh://cryptova@cryptovaltrading.com:1588/home/cryptova/git/cvtt2/research.git" },
|
||||
{"homestore": "git@homestore.cvtt.vpn:/opt/git/cvtt2/research.git" },
|
||||
{"origin": "git@cloud21.cvtt.vpn:/opt/store/git/cvtt2/research.git" },
|
||||
{"hs01": "git@hs01.cvtt.vpn:/works/git/cvtt2/research.git" },
|
||||
{"cryptova": "ssh://cryptova@cryptovaltrading.com:1588/home/cryptova/git/cvtt2/research.git" },
|
||||
{"gitea": "ssh://git@homestore.cvtt.vpn:20022/oleg/research.git" },
|
||||
{"gitea": "ssh://git@hs01.cvtt.vpn:20022/oleg/research.git" },
|
||||
],
|
||||
"jupyter_gpu": [
|
||||
{"origin": "ssh://cryptova@cryptovaltrading.com:1588/home/cryptova/git/cvtt2/jupyter_gpu.git" },
|
||||
{"homestore": "git@homestore.cvtt.vpn:/opt/git/cvtt2/jupyter_gpu.git" },
|
||||
{"origin": "git@cloud21.cvtt.vpn:/works/store/git/jupyter_gpu.git" },
|
||||
{"hs01": "git@hs01.cvtt.vpn:/works/git/cvtt2/jupyter_gpu.git" },
|
||||
],
|
||||
}
|
||||
}
|
||||
, "allbright": {
|
||||
"allbright-ops": [
|
||||
{"origin": "ssh://allbrigh@allbrightacademy.com:7822/home/allbrigh/git/allbright-ops.git"},
|
||||
{"homestore": "ssh://oleg@homestore.sheynin.home:/opt/git/allbright/allbright-ops.git"},
|
||||
{"hs01": "ssh://oleg@hs01.sheynin.home:/works/git/allbright/allbright-ops.git"},
|
||||
],
|
||||
"allbright-www": [
|
||||
{"origin": "ssh://allbrigh@allbrightacademy.com:7822/home/allbrigh/git/allbright.git"},
|
||||
{"homestore": "ssh://oleg@homestore.sheynin.home:/opt/git/allbright/allbright.git"},
|
||||
{"hs01": "ssh://oleg@hs01.sheynin.home:/works/git/allbright/allbright.git"},
|
||||
]
|
||||
}
|
||||
, "devel-env": {
|
||||
"cvtt-dev": [
|
||||
{"gitea": "ssh://git@homestore.cvtt.vpn:20022/develop_env/.vscode.cvtt-dev.git"},
|
||||
{"gitea": "ssh://git@hs01.cvtt.vpn:20022/develop_env/.vscode.cvtt-dev.git"},
|
||||
]
|
||||
, "cvtt-research": [
|
||||
{"gitea": "ssh://git@homestore.cvtt.vpn:20022/develop_env/.vscode.cvtt-research.git"},
|
||||
{"gitea": "ssh://git@hs01.cvtt.vpn:20022/develop_env/.vscode.cvtt-research.git"},
|
||||
]
|
||||
, "oleg-macpro": [
|
||||
{"gitea": "ssh://git@homestore.cvtt.vpn:20022/develop_env/.vscode.oleg-macpro.git"},
|
||||
{"gitea": "ssh://git@hs01.cvtt.vpn:20022/develop_env/.vscode.oleg-macpro.git"},
|
||||
]
|
||||
},
|
||||
, "education-materials": {
|
||||
"Algorithmic Trading Book": [
|
||||
{"origin": "ssh://git@homestore.cvtt.vpn:20022/edu/Algorithmic_Trading_Book.git"}
|
||||
{"origin": "ssh://git@hs01.cvtt.vpn:20022/edu/Algorithmic_Trading_Book.git"}
|
||||
]
|
||||
|
||||
, "Kubernetes Cookbook": [
|
||||
{"origin": "ssh://git@homestore.cvtt.vpn:20022/edu/Kubernetes_Cookbook.git"}
|
||||
{"origin": "ssh://git@hs01.cvtt.vpn:20022/edu/Kubernetes_Cookbook.git"}
|
||||
]
|
||||
}
|
||||
"personal": {
|
||||
@@ -78,13 +78,24 @@
|
||||
{"origin": "ssh://cryptova@cryptovaltrading.com:1588/home/cryptova/git/personal/obsidian_notes.git"}
|
||||
],
|
||||
"data-analysis": [
|
||||
{"origin": "git@homestore.cvtt.vpn:/opt/git/data_analysis.git"}
|
||||
{"origin": "git@hs01.cvtt.vpn:/works/git/data_analysis.git"}
|
||||
],
|
||||
"leathercraft": [
|
||||
{"origin": "git@homestore.cvtt.vpn:/opt/git/leathercraft.git"}
|
||||
{"origin": "git@hs01.cvtt.vpn:/works/git/leathercraft.git"}
|
||||
],
|
||||
"musicscore": [
|
||||
{"origin": "git@homestore.cvtt.vpn:/opt/git/musicscore.git"}
|
||||
{"origin": "git@hs01.cvtt.vpn:/works/git/musicscore.git"}
|
||||
],
|
||||
".vscode": {
|
||||
"cvtt-dev": [
|
||||
{"origin": "ssh://git@hs01.cvtt.vpn:20022/personal/.vscode.cvtt-dev.git"},
|
||||
],
|
||||
"cvtt-edu": [
|
||||
{"origin": "ssh://git@hs01.cvtt.vpn:20022/personal/.vscode.cvtt-edu.git"},
|
||||
],
|
||||
"cvtt-research": [
|
||||
{"origin": "ssh://git@hs01.cvtt.vpn:20022/personal/.vscode.cvtt-research.git"},
|
||||
],
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"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": {
|
||||
"loader_class": "cvttpy.research.time_series.loaders.tsdb_loader.TsMdLoader"
|
||||
, "credentials_key": "TSDB_MD_CVTTDATA_RO"
|
||||
, "interval": "2 hours"
|
||||
#, "from_time" is calculated
|
||||
}
|
||||
}
|
||||
}
|
||||
, "DAILY_STOCK_001": {
|
||||
"class": "cvttpy.trading.strategies.daily_stocks_strat.DailyStocksStrategy"
|
||||
, "params": {
|
||||
"liquidate_at": "15:45" # EDT Time
|
||||
}
|
||||
}
|
||||
, "MAN-TPOS-BY-REDIS": {
|
||||
"class": "cvttpy.trading.strategies.manual_strat.TgtPosByRedisStrategy"
|
||||
, "params": {
|
||||
"redis_subject": "MAN_TGT_POS"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
"dynamic_stock_list": {
|
||||
"exchange_id": "ALPACA"
|
||||
, "list_source": "redis"
|
||||
, "redis_settings": "cvtt-prod-eqty-01"
|
||||
, "comm_settings": "/comm/pubsub/redis/cvtt-prod-eqty-01"
|
||||
, "redis_key": "DAY_STOCK_LIST"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,251 @@
|
||||
@var ResultPath=/tmp
|
||||
|
||||
{
|
||||
"refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
|
||||
, "comm_settings": "/comm/pubsub/redis/cloud17"
|
||||
# , "cvttcomm": {
|
||||
# "type": "redis"
|
||||
# # , "comm_settings": "/comm/pubsub/redis/localhost"
|
||||
# , "comm_settings": "/comm/pubsub/redis/cloud17"
|
||||
# }
|
||||
, "session_type": "PERMANENT"
|
||||
, "books": {
|
||||
"CVTT_BK01": {}
|
||||
}
|
||||
###### N E W S E C T I O N (example)
|
||||
, "simulation": {
|
||||
"speed_factor": 0.0,
|
||||
"time_events_interval_ms": 100
|
||||
}
|
||||
, "market_simulator" : {
|
||||
"market_data": {
|
||||
"sources": [
|
||||
{
|
||||
"loader_class": "cvttpy.research.time_series.loaders.tsdb_loader.TimescaleTSLoader"
|
||||
, "credentials_key": "TSDB_MD_CVTTDATA_RO"
|
||||
# , "interval": "4 hours"
|
||||
, "interval": "2 hours"
|
||||
, "from_time": "2024-04-15 09:00:00"
|
||||
}
|
||||
# , {
|
||||
# "loader_class": "cvttpy.research.time_series.loaders.sqlite_loader.SqliteMdLoader",
|
||||
# "file_name": "${SourcePath}/20240424.ALPACA.QAT.db"
|
||||
# }
|
||||
]
|
||||
}
|
||||
, "accounting": {
|
||||
"initial_positions": {
|
||||
"COINBASE": {
|
||||
"BTC": 0
|
||||
, "USD": 1000.0
|
||||
}
|
||||
}
|
||||
}
|
||||
, "order_entry": {
|
||||
"execution": {
|
||||
"top_only": true
|
||||
,"min_order_age_sec": 0.1
|
||||
, "pricing_method": "BY_MKT_TRD_PRICE_BY_ORDER"
|
||||
# , "presubscribe_md_types": ["BOOK_TOP", "TRADES"]
|
||||
}
|
||||
}
|
||||
}
|
||||
###### N E W S E C T I O N - 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.timescale.tsdb_client.TimescaleDbClient"
|
||||
, "credentials_key": "TSDB_MD_CVTTDATA_RO"
|
||||
}
|
||||
# , "interval": "4 hours"
|
||||
, "interval": "6 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": {
|
||||
"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_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://@env{CONFIG_SERVICE}/apps/common/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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
@var CONFIG_SERVICE=cloud23.cvtt.vpn:6789
|
||||
@var ResultPath=/tmp
|
||||
|
||||
{
|
||||
"refdata": @inc=http://${CONFIG_SERVICE}/refdata/refdata
|
||||
, "redis": @inc=http://${CONFIG_SERVICE}/apps/common/redis
|
||||
, "cvttcomm": {
|
||||
"type": "redis"
|
||||
# , "redis_settings": "localhost"
|
||||
, "redis_settings": "cloud17"
|
||||
}
|
||||
"refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
|
||||
, "comm_settings": "/comm/pubsub/redis/cloud17"
|
||||
# , "cvttcomm": {
|
||||
# "type": "redis"
|
||||
# }
|
||||
, "session_type": "PERMANENT"
|
||||
, "books": {
|
||||
"CVTT_BK01": {}
|
||||
@@ -109,7 +107,7 @@
|
||||
},
|
||||
}
|
||||
}
|
||||
, "algos": @inc=http://${CONFIG_SERVICE}/apps/common/algos
|
||||
, "algos": @inc=http://@env{CONFIG_SERVICE}/apps/common/algos
|
||||
, "trading_pos_diff_pct_trigger": 10.0
|
||||
, "trading_depth": {
|
||||
"BTC": 0.001
|
||||
@@ -144,7 +142,7 @@
|
||||
, "quant": {
|
||||
"app_channel": "QUANT"
|
||||
|
||||
, "strategies": @inc=http://${CONFIG_SERVICE}/apps/common/strategies
|
||||
, "strategies": @inc=http://@env{CONFIG_SERVICE}/apps/common/strategies
|
||||
, "exchanges_settings": {
|
||||
"COINBASE_AT": {
|
||||
"mkt_data": {
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"type": "redis",
|
||||
"redis_settings": "localhost"
|
||||
"comm_settings": "/comm/pubsub/redis/localhost"
|
||||
, "app_channels": {
|
||||
"executor": "EXEC"
|
||||
, "risk_manager": "RMGR"
|
||||
, "risk_manager": "RMGR"
|
||||
, "trader": "TRDR"
|
||||
, "quant": "QUANT"
|
||||
, "quant": "QUANT"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
@var DatabaseHost=cryptoval1.cvtt.vpn
|
||||
# @var DatabaseHost=cryptoval1.sheynin.home
|
||||
{
|
||||
"__DUMMY__": {}
|
||||
# ----------------------------- A
|
||||
, "ALPACA_PROD01": {
|
||||
"exchange": "ALPACA_PROD",
|
||||
"credentials_key": "ALPACA_PROD"
|
||||
}
|
||||
, "ALPACA_SIM": {
|
||||
"exchange": "ALPACA_SIM",
|
||||
"credentials_key": "ALPACA_PROD"
|
||||
}
|
||||
, "ALPACA_SNDBX01": {
|
||||
"exchange": "ALPACA_SNDBX",
|
||||
"credentials_key": "ALPACA_SANDBOX"
|
||||
}
|
||||
# ---------------------------- B
|
||||
, "BITSTAMP_ACCT": {
|
||||
"exchange": "BITSTAMP",
|
||||
}
|
||||
, "BNBSPOT_ACCT": {
|
||||
"exchange": "BNBSPOT"
|
||||
}
|
||||
, "BNBFUT01": {
|
||||
"exchange": "BNBFUT"
|
||||
}
|
||||
, "BNBFUT02": {
|
||||
"exchange": "BNBFUT-2"
|
||||
}
|
||||
|
||||
, "BNBSPOT_US01": {
|
||||
"exchange": "BNBSPOT_US"
|
||||
}
|
||||
, "COINBASE_PROD01": {
|
||||
"exchange": "COINBASE_AT"
|
||||
}
|
||||
, "COINBASE_SIM": {
|
||||
"exchange_id": "COINBASE_SIM"
|
||||
}
|
||||
# ---------------------------- G
|
||||
, "GEMINI01": {
|
||||
"exchange": "GEMINI"
|
||||
}
|
||||
, "GEMINI-SNDBX01": {
|
||||
"exchange": "GEMINI-SNDBX"
|
||||
}
|
||||
# ---------------------------- K
|
||||
, "KRAKEN01": {
|
||||
"exchange": "KRAKEN"
|
||||
}
|
||||
# ---------------------------- O
|
||||
, "OKX01": {
|
||||
"exchange": "OKX"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"refdata": @inc=http://cloud11.cvtt.vpn:6789/refdata/refdata
|
||||
, "redis": @inc=http://cloud11.cvtt.vpn:6789/apps/common/redis
|
||||
, "cvttcomm": @inc=http://cloud11.cvtt.vpn:6789/apps/cvttcomm
|
||||
"refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
|
||||
, "exchanges_settings": {
|
||||
"COINBASE_AT": {
|
||||
"order_entry": {
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
# ----------------------------------
|
||||
"refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
@var WINDOW_SIZE_SEC=2592000 # 30 days
|
||||
@var CONFIG_SERVICE=cloud23.cvtt.vpn:6789
|
||||
{
|
||||
"md_recorder": {
|
||||
"db": {
|
||||
@@ -68,7 +67,7 @@
|
||||
}
|
||||
|
||||
# ----------------------------------
|
||||
, "refdata": @inc=http://${CONFIG_SERVICE}/refdata/refdata
|
||||
, "refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
, "exchanges_settings": {
|
||||
"COINBASE_AT": {
|
||||
"order_entry": {
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
@var CONFIG_SERVICE=cloud23.cvtt.vpn:6789
|
||||
{
|
||||
|
||||
"refdata": @inc=http://${CONFIG_SERVICE}/refdata/refdata
|
||||
, "redis": @inc=http://${CONFIG_SERVICE}/apps/common/redis
|
||||
, "cvttcomm": @inc=http://${CONFIG_SERVICE}/apps/cvttcomm
|
||||
"refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
|
||||
, "quant": {
|
||||
"books": {
|
||||
"CVTT_BK01": {}
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
|
||||
{
|
||||
|
||||
"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/common/redis
|
||||
"refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
|
||||
, "risk_manager": {
|
||||
"book": "CVTT_BK01"
|
||||
, "database": {
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"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/common/redis
|
||||
"refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
|
||||
, "exchanges_settings": {
|
||||
"COINBASE_AT": {
|
||||
"mkt_data": {
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
@var CONFIG_SERVICE=cloud23.cvtt.vpn:6789
|
||||
@var ResultPath=/tmp
|
||||
@var SourcePath=/home/oleg/develop/cvtt2/tmp
|
||||
{
|
||||
"refdata": @inc=http://${CONFIG_SERVICE}/refdata/refdata
|
||||
, "redis": @inc=http://${CONFIG_SERVICE}/apps/common/redis
|
||||
, "algos": @inc=http://${CONFIG_SERVICE}/apps/common/algos
|
||||
"refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
|
||||
, "algos": @inc=http://@env{CONFIG_SERVICE}/apps/common/algos
|
||||
|
||||
, "session_type": "CALENDAR"
|
||||
, "calendar_session": {
|
||||
"trading_hours_url": [
|
||||
"GET"
|
||||
, "http://cloud16.cvtt.vpn:8000/api/v1/markets/hours?mic=XNYS&start={start}&end={end}"
|
||||
, "https://trading-calendar.cvtt.net/api/v1/markets/hours?mic=XNYS&start={start}&end={end}"
|
||||
]
|
||||
}
|
||||
###### N E W S E C T I O N (example)
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
{
|
||||
"TRDALGO_001": {
|
||||
"class": "cvttpy.trading.algos.simple.SimpleTradingAlgo"
|
||||
"DIRECT_ORDER_ALGO": {
|
||||
"class": "cvttpy_trading.trading.algos.common.trading_algo.DirOrdTradingAlgo"
|
||||
, "params": {}
|
||||
}
|
||||
, "TRDALGO_SIMPLE_BO": {
|
||||
"class": "cvttpy.trading.algos.bid_and_offer.SimpleBidAndOfferTradingAlgo"
|
||||
"class": "cvttpy_trading.trading.algos.bid_and_offer.SimpleBidAndOfferTradingAlgo"
|
||||
, "params": {}
|
||||
}
|
||||
, "TRDALGO_MOOMOC_01": {
|
||||
"class": "cvttpy.trading.algos.moo_moc.MooMocTradingAlgo"
|
||||
"class": "cvttpy_trading.trading.algos.moo_moc.MooMocTradingAlgo"
|
||||
, "params": {}
|
||||
}
|
||||
, "TRDALGO_TWAP01": {
|
||||
"class": "cvttpy.trading.algos.twap.TwapAlgo"
|
||||
"class": "cvttpy_trading.trading.algos.twap.TwapAlgo"
|
||||
, "params": {
|
||||
"num_slices": 5
|
||||
, "duration_sec": 1500 # 25 min
|
||||
@@ -24,7 +24,7 @@
|
||||
},
|
||||
}
|
||||
, "TRDALGO_ICEBERG01_COINBS": {
|
||||
"class": "cvttpy.trading.algos.twap.TwapAlgo"
|
||||
"class": "cvttpy_trading.trading.algos.twap.TwapAlgo"
|
||||
, "params": {
|
||||
"num_slices": 5
|
||||
, "duration_sec": 1500 # 25 min #overloaded by --duration
|
||||
@@ -37,7 +37,7 @@
|
||||
},
|
||||
}
|
||||
, "TRDALGO_ICEBERG01_ALPACA": {
|
||||
"class": "cvttpy.trading.algos.twap.TwapAlgo"
|
||||
"class": "cvttpy_trading.trading.algos.twap.TwapAlgo"
|
||||
, "params": {
|
||||
"num_slices": 5
|
||||
, "duration_sec": 1500 # 25 min
|
||||
|
||||
+48
-20
@@ -1,35 +1,63 @@
|
||||
# INTENDED TO REPLACE redis.cfg
|
||||
# /comm
|
||||
{
|
||||
"redis": {
|
||||
"localhost": {
|
||||
"url": "redis://localhost"
|
||||
"pubsub" : {
|
||||
"REDIS_DCKR_COMPOSE": { # docker compose used
|
||||
"type": "redis"
|
||||
, "url": "redis://redis:6379"
|
||||
, "read_timeout" : 0.01
|
||||
, "ping_timeout_secs": 2.0
|
||||
, "verbose": false
|
||||
}
|
||||
, "cvttdata": {
|
||||
"url": "redis://cvttdata.cvtt.vpn"
|
||||
, "REDIS_LCLHOST": {
|
||||
"type": "redis"
|
||||
, "url": "redis://localhost"
|
||||
, "read_timeout" : 0.01
|
||||
, "ping_timeout_secs": 2.0
|
||||
, "verbose": false
|
||||
}
|
||||
, "cvtt-testserver": {
|
||||
"url": "redis://cvtt-testserver.cvtt.vpn"
|
||||
, "REDIS_LCLHOST_2_DCKR_COMPOSE": {
|
||||
"type": "redis"
|
||||
, "url": "redis://localhost:16379"
|
||||
, "read_timeout" : 0.01
|
||||
, "ping_timeout_secs": 2.0
|
||||
, "verbose": false
|
||||
}
|
||||
, "cvtt-prod-eqty-01": {
|
||||
"url": "redis://cvtt-prod-eqty-01.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
|
||||
}
|
||||
, "cvtt-prod-eqty-01": {
|
||||
"url": "redis://cvtt-prod-eqty-01.cvtt.vpn"
|
||||
, "REDIS_tester-01_2_DCKR_COMPOSE": { # to use docker compose service from outside
|
||||
"type": "redis"
|
||||
, "url": "redis://cvtt-tester-01.cvtt.vpn:16379"
|
||||
, "read_timeout" : 0.01
|
||||
, "ping_timeout_secs": 2.0
|
||||
, "verbose": false
|
||||
}
|
||||
# , "redis": {
|
||||
# "docker_microservices": { # docker compose used
|
||||
# "url": "redis://redis:6379"
|
||||
# , "type": "redis"
|
||||
# , "read_timeout" : 0.01
|
||||
# , "ping_timeout_secs": 2.0
|
||||
# , "verbose": false
|
||||
# }
|
||||
# , "localhost": {
|
||||
# "url": "redis://localhost"
|
||||
# , "type": "redis"
|
||||
# , "read_timeout" : 0.01
|
||||
# , "ping_timeout_secs": 2.0
|
||||
# , "verbose": false
|
||||
# }
|
||||
# , "localhost-2-docker": {
|
||||
# "url": "redis://localhost:16379"
|
||||
# , "type": "redis"
|
||||
# , "read_timeout" : 0.01
|
||||
# , "ping_timeout_secs": 2.0
|
||||
# , "verbose": false
|
||||
# }
|
||||
# , "tester-01": { # to use docker compose service from outside
|
||||
# "url": "redis://cvtt-tester-01.cvtt.vpn:16379"
|
||||
# , "type": "redis"
|
||||
# , "read_timeout" : 0.01
|
||||
# , "ping_timeout_secs": 2.0
|
||||
# , "verbose": false
|
||||
# }
|
||||
# }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"TimescaleMktDataLoader" : {
|
||||
"loader_class": "cvttpy.trading.mkt_data.time_series.loaders.tsdb_loader.TsMdLoader",
|
||||
"credentials_key": "TSDB_MD_CVTTDATA_RO"
|
||||
}
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
{
|
||||
"localhost": {
|
||||
"url": "redis://localhost"
|
||||
, "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-testserver": {
|
||||
"url": "redis://cvtt-testserver.cvtt.vpn"
|
||||
, "read_timeout" : 0.01
|
||||
, "ping_timeout_secs": 2.0
|
||||
}
|
||||
, "cvtt-prod-eqty-01": {
|
||||
"url": "redis://cvtt-prod-eqty-01.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
|
||||
}
|
||||
, "cvtt-prod-eqty-01": {
|
||||
"url": "redis://cvtt-prod-eqty-01.cvtt.vpn"
|
||||
, "read_timeout" : 0.01
|
||||
, "ping_timeout_secs": 2.0
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"PERMISSIVE_RISK_STRATEGY": {
|
||||
"class": "cvttpy.trading.risk.permissive.PermissiveRiskStrategy"
|
||||
, "params": {
|
||||
"dummy": "dummy"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,32 +1,31 @@
|
||||
{
|
||||
"CVTT_QST001": {
|
||||
|
||||
"hist_md_loaders": @inc=http://@env{CONFIG_SERVICE}/apps/common/hist_md_loaders
|
||||
|
||||
, "CVTT_QST001": {
|
||||
"class": "cvttpy.trading.strategies.test_strat.SeesawTestStrategy"
|
||||
, "params": {
|
||||
"dummy": "dummy"
|
||||
}
|
||||
, "default_params": {}
|
||||
}
|
||||
, "VWAP001": {
|
||||
"class": "cvttpy.trading.strategies.vwap_strat.VWAP001"
|
||||
, "params": {
|
||||
"vwap_interval": "1 hour"
|
||||
, "hist_md_source": {
|
||||
"loader_class": "cvttpy.research.time_series.loaders.tsdb_loader.TsMdLoader"
|
||||
, "credentials_key": "TSDB_MD_CVTTDATA_RO"
|
||||
, "default_params": {
|
||||
"vwap_interval": "1 hour" , "hist_md_source": {
|
||||
"loader": "TimescaleMktDataLoader"
|
||||
, "interval": "2 hours"
|
||||
#, "from_time" is calculated
|
||||
}
|
||||
}
|
||||
}
|
||||
, "DAILY_STOCK_001": {
|
||||
"class": "cvttpy.trading.strategies.daily_stocks_strat.DailyStocksStrategy"
|
||||
, "params": {
|
||||
"liquidate_at": "15:45" # EDT Time
|
||||
}
|
||||
}
|
||||
, "MAN-TPOS-BY-REDIS": {
|
||||
"class": "cvttpy.trading.strategies.manual_strat.TgtPosByRedisStrategy"
|
||||
, "params": {
|
||||
"redis_subject": "MAN_TGT_POS"
|
||||
}
|
||||
}
|
||||
# , "DAILY_STOCK_001": {
|
||||
# "class": "cvttpy.trading.strategies.daily_stocks_strat.DailyStocksStrategy"
|
||||
# , "params": {
|
||||
# "liquidate_at": "15:45" # EDT Time
|
||||
# }
|
||||
# }
|
||||
# , "MAN-TPOS-BY-REDIS": {
|
||||
# "class": "cvttpy.trading.strategies.manual_strat.TgtPosByRedisStrategy"
|
||||
# , "params": {
|
||||
# "redis_subject": "MAN_TGT_POS"
|
||||
# }
|
||||
# }
|
||||
}
|
||||
|
||||
+83
-218
@@ -1,251 +1,116 @@
|
||||
@var CONFIG_SERVICE=cloud23.cvtt.vpn:6789
|
||||
@var ResultPath=/tmp
|
||||
@var COORDINATOR_PORT=23456
|
||||
@var PASS_THROUGH_STRAT_PORT=12345
|
||||
|
||||
|
||||
{
|
||||
"refdata": @inc=http://${CONFIG_SERVICE}/refdata/refdata
|
||||
, "redis": @inc=http://${CONFIG_SERVICE}/apps/common/redis
|
||||
, "cvttcomm": {
|
||||
"type": "redis"
|
||||
# , "redis_settings": "localhost"
|
||||
, "redis_settings": "cloud17"
|
||||
}
|
||||
, "session_type": "PERMANENT"
|
||||
, "books": {
|
||||
"CVTT_BK01": {}
|
||||
}
|
||||
###### N E W S E C T I O N (example)
|
||||
, "simulation": {
|
||||
"speed_factor": 0.0,
|
||||
"time_events_interval_ms": 100
|
||||
}
|
||||
, "market_simulator" : {
|
||||
"market_data": {
|
||||
"sources": [
|
||||
{
|
||||
"loader_class": "cvttpy.research.time_series.loaders.tsdb_loader.TimescaleTSLoader"
|
||||
, "credentials_key": "TSDB_MD_CVTTDATA_RO"
|
||||
# , "interval": "4 hours"
|
||||
, "interval": "2 hours"
|
||||
, "from_time": "2024-04-15 09:00:00"
|
||||
}
|
||||
# , {
|
||||
# "loader_class": "cvttpy.research.time_series.loaders.sqlite_loader.SqliteMdLoader",
|
||||
# "file_name": "${SourcePath}/20240424.ALPACA.QAT.db"
|
||||
# }
|
||||
]
|
||||
}
|
||||
, "accounting": {
|
||||
"initial_positions": {
|
||||
"COINBASE": {
|
||||
"BTC": 0
|
||||
, "USD": 1000.0
|
||||
}
|
||||
}
|
||||
}
|
||||
, "order_entry": {
|
||||
"execution": {
|
||||
"top_only": true
|
||||
,"min_order_age_sec": 0.1
|
||||
, "pricing_method": "BY_MKT_TRD_PRICE_BY_ORDER"
|
||||
# , "presubscribe_md_types": ["BOOK_TOP", "TRADES"]
|
||||
"refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
|
||||
, "algos": @inc=http://@env{CONFIG_SERVICE}/apps/common/algos
|
||||
, "strategies": @inc=http://@env{CONFIG_SERVICE}/apps/common/strategies
|
||||
|
||||
, "comm_settings": "comm/pubsub/redis/localhost"
|
||||
|
||||
, "coordinator": {
|
||||
"api": {
|
||||
"REST": {
|
||||
"port": ${COORDINATOR_PORT},
|
||||
"base_url": ["POST", "http://localhost:${COORDINATOR_PORT}"]
|
||||
}
|
||||
}
|
||||
}
|
||||
###### N E W S E C T I O N - end
|
||||
, "backtest": {
|
||||
, "market_data_gateway": {
|
||||
"exchanges_settings": {
|
||||
"*": {
|
||||
"mkt_data": {
|
||||
"enabled": true
|
||||
, "streaming": true
|
||||
}
|
||||
,"order_entry": {
|
||||
"enabled": true
|
||||
, "streaming": true
|
||||
}
|
||||
,"accounting": {
|
||||
"enabled": true
|
||||
},
|
||||
"order_entry": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
}
|
||||
}
|
||||
}
|
||||
, "source": {
|
||||
"database": {
|
||||
"class": "cvttpy.tools.db.timescale.tsdb_client.TimescaleDbClient"
|
||||
, "credentials_key": "TSDB_MD_CVTTDATA_RO"
|
||||
}
|
||||
# , "interval": "4 hours"
|
||||
, "interval": "6 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"
|
||||
},
|
||||
"accounting": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
},
|
||||
}
|
||||
, "channel_prefix": "MD_GW"
|
||||
, "app_status_channel": "MD_GW_APP_STATUS"
|
||||
, "exchanges": [
|
||||
"BNBFUT"
|
||||
, "COINBASE_AT"
|
||||
]
|
||||
}
|
||||
# --------------------------------------------------------------------
|
||||
, "trader": {
|
||||
"app_channel": "TRDR" active_exchanges_: str
|
||||
|
||||
, "is_short_allowed": false
|
||||
, "exchanges_settings": {
|
||||
"COINBASE_AT": {
|
||||
, "order_entry_gateway": {
|
||||
"exchanges_settings": {
|
||||
"ALPACA_SNDBX": {
|
||||
"mkt_data": {
|
||||
"enabled": true
|
||||
, "streaming": true
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
}
|
||||
}
|
||||
, "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_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"
|
||||
"read_only": "ALPACA_SANDBOX"
|
||||
, "trade": "ALPACA_SANDBOX"
|
||||
}
|
||||
}
|
||||
}
|
||||
, "channel_prefix": "OE_GW"
|
||||
, "app_status_channel": "OE_GW_APP_STATUS"
|
||||
, "exchanges": [
|
||||
"ALPACA_SNDBX"
|
||||
]
|
||||
}
|
||||
, "accounting_gateway": {
|
||||
"exchanges_settings": {
|
||||
"ALPACA_SNDBX": {
|
||||
"mkt_data": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
"order_entry": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
"accounting": {
|
||||
"enabled": true
|
||||
, "streaming": false
|
||||
}
|
||||
, "credentials_key": {
|
||||
"read_only": "ALPACA_SANDBOX"
|
||||
, "trade": "ALPACA_SANDBOX"
|
||||
}
|
||||
}
|
||||
}
|
||||
, "channel_prefix": "ACCT_GW"
|
||||
, "app_status_channel": "ACCT_GW_APP_STATUS"
|
||||
, "exchanges": [
|
||||
"ALPACA_SNDBX"
|
||||
]
|
||||
}
|
||||
# --------------------------------------------------------------------
|
||||
, "quant": {
|
||||
"app_channel": "QUANT"
|
||||
, "strategies": @inc=http://${CONFIG_SERVICE}/apps/common/strategies
|
||||
, "exchanges_settings": {
|
||||
"COINBASE_AT": {
|
||||
"mkt_data": {
|
||||
"enabled": true
|
||||
, "streaming": true
|
||||
},
|
||||
"channel_prefix": "QUANT"
|
||||
, "app_status_channel": "QUANT_MS_STATUS"
|
||||
, "passthrough_strategy": {
|
||||
"REST": {
|
||||
"port": ${PASS_THROUGH_STRAT_PORT}
|
||||
"base_url": ["POST", "http://localhost:${PASS_THROUGH_STRAT_PORT}"]
|
||||
}
|
||||
, "WS": {
|
||||
"url": "ws://localhost:12346/ws"
|
||||
}
|
||||
}
|
||||
}
|
||||
# --------------------------------------------------------------------
|
||||
, "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"
|
||||
}
|
||||
}
|
||||
}
|
||||
, "trader": {
|
||||
"channel_prefix": "TRADER"
|
||||
, "app_status_channel": "TRADER_MS_STATUS"
|
||||
}
|
||||
, "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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,19 +1,25 @@
|
||||
@var CONFIG_SERVICE=cloud23.cvtt.vpn:6789
|
||||
@var ResultPath=/tmp
|
||||
|
||||
{ "___dummy___": null
|
||||
, "refdata": @inc=http://${CONFIG_SERVICE}/refdata/refdata
|
||||
, "redis": @inc=http://${CONFIG_SERVICE}/apps/common/redis
|
||||
, "active_instruments": @inc=http://${CONFIG_SERVICE}/apps/active_instruments
|
||||
, "cvttcomm": {
|
||||
"type": "redis"
|
||||
, "redis_settings": "cvtt-prod-eqty-01"
|
||||
, "refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
|
||||
, "active_instruments": {
|
||||
"ALPACA_SNDBX": {
|
||||
"dynamic_stock_list": {
|
||||
"exchange_id": "ALPACA"
|
||||
, "list_source": "redis"
|
||||
, "comm_settings": "/comm/pubsub/redis/cvtt-prod-eqty-01"
|
||||
, "redis_key": "DAY_STOCK_LIST"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
, "comm_settings": "/comm/pubsub/redis/cvtt-prod-eqty-01"
|
||||
, "session_type": "CALENDAR"
|
||||
, "calendar_session": {
|
||||
"trading_hours_url": [
|
||||
"GET"
|
||||
, "http://cloud16.cvtt.vpn:8000/api/v1/markets/hours?mic=XNYS&start={start}&end={end}"
|
||||
, "https://trading-calendar.cvtt.net/api/v1/markets/hours?mic=XNYS&start={start}&end={end}"
|
||||
]
|
||||
}
|
||||
, "books": {
|
||||
@@ -45,7 +51,7 @@
|
||||
},
|
||||
}
|
||||
}
|
||||
, "algos": @inc=http://${CONFIG_SERVICE}/apps/common/algos
|
||||
, "algos": @inc=http://@env{CONFIG_SERVICE}/apps/common/algos
|
||||
, "trading_pos_diff_pct_trigger": 10.0
|
||||
, "trading_depth": {
|
||||
"USD": 1000.0,
|
||||
@@ -114,7 +120,7 @@
|
||||
# --------------------------------------------------------------------
|
||||
, "quant": {
|
||||
"app_channel": "QUANT"
|
||||
, "strategies": @inc=http://${CONFIG_SERVICE}/apps/common/strategies
|
||||
, "strategies": @inc=http://@env{CONFIG_SERVICE}/apps/common/strategies
|
||||
, "exchanges_settings": {
|
||||
"*": {
|
||||
"mkt_data": {
|
||||
|
||||
@@ -0,0 +1,169 @@
|
||||
@var COORDINATOR_REST_PORT=23456
|
||||
@var PRICER_REST_PORT=23457
|
||||
@var PRICER_WS_PORT=12346
|
||||
|
||||
@var GLOBAL_CHANNEL_PREFIX=CVTT_MU
|
||||
|
||||
{
|
||||
"refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
|
||||
, "algos": @inc=http://@env{CONFIG_SERVICE}/apps/common/algos
|
||||
, "strategies": @inc=http://@env{CONFIG_SERVICE}/apps/common/strategies
|
||||
, "risk_strategies": @inc=http://@env{CONFIG_SERVICE}/apps/common/risk_strategies
|
||||
|
||||
, "comm_settings": @env{CONFIG_COMM_SETTINGS}
|
||||
, "global_channel_prefix": ${GLOBAL_CHANNEL_PREFIX}
|
||||
|
||||
, "accounting_gateway": {
|
||||
"exchanges_settings": {
|
||||
"ALPACA_SNDBX": {
|
||||
"mkt_data": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
"order_entry": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
"accounting": {
|
||||
"enabled": true
|
||||
, "streaming": false
|
||||
}
|
||||
, "credentials_key": {
|
||||
"read_only": "ALPACA_SANDBOX"
|
||||
, "trade": "ALPACA_SANDBOX"
|
||||
}
|
||||
},
|
||||
"COINBASE_AT": {
|
||||
"mkt_data": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
"order_entry": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
"accounting": {
|
||||
"enabled": true
|
||||
, "streaming": false
|
||||
}
|
||||
, "credentials_key": {
|
||||
"read_only": "COINBASE_ADV_RO"
|
||||
}
|
||||
}
|
||||
}
|
||||
, "channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.ACCT_GW"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.ACCT_GW_APP_STATUS"
|
||||
, "exchanges": [
|
||||
"ALPACA_SNDBX", "COINBASE_AT"
|
||||
]
|
||||
}
|
||||
, "bookkeeper": {
|
||||
"channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.BKPR"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.BKPR_MUSVC_STATUS"
|
||||
, "db": {
|
||||
"server_type": "timescale",
|
||||
"cred_key": "TSDB_CVTT_TESTER_01_DIRECT"
|
||||
# "cred_key": "TSDB_CVTT_TRADINNG_PROD-01-RW"
|
||||
}
|
||||
}
|
||||
, "coordinator": {
|
||||
"api": {
|
||||
"REST": {
|
||||
"port": @env{COORDINATOR_REST_PORT},
|
||||
"base_url": ["POST", "http://localhost:@env{COORDINATOR_REST_PORT}"]
|
||||
}
|
||||
}
|
||||
}
|
||||
, "market_data_gateway": {
|
||||
"exchanges_settings": {
|
||||
"*": {
|
||||
"mkt_data": {
|
||||
"enabled": true
|
||||
, "streaming": true
|
||||
},
|
||||
"order_entry": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
"accounting": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
},
|
||||
}
|
||||
, "channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.MD_GW"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.MD_GW_APP_STATUS"
|
||||
, "exchanges": [
|
||||
"COINBASE_AT"
|
||||
, "COINBASE_FUT"
|
||||
# , "BNBSPOT"
|
||||
# , "BNBFUT"
|
||||
# , "KRAKEN"
|
||||
# , "BITSTAMP"
|
||||
# , "OKX"
|
||||
# , "GEMINI"
|
||||
# , "ALPACA_SNDBX"
|
||||
]
|
||||
}
|
||||
, "order_entry_gateway": {
|
||||
"exchanges_settings": {
|
||||
"ALPACA_SNDBX": {
|
||||
"mkt_data": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
"order_entry": {
|
||||
"enabled": true
|
||||
, "streaming": true
|
||||
},
|
||||
"accounting": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
}
|
||||
, "credentials_key": {
|
||||
"read_only": "ALPACA_SANDBOX"
|
||||
, "trade": "ALPACA_SANDBOX"
|
||||
}
|
||||
}
|
||||
}
|
||||
, "channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.OE_GW"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.OE_GW_APP_STATUS"
|
||||
, "exchanges": [
|
||||
"ALPACA_SNDBX"
|
||||
]
|
||||
}
|
||||
, "pricer": {
|
||||
"channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.PXER"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.PXER_MUSVC_STATUS"
|
||||
, "api": {
|
||||
"REST": {
|
||||
"port": @env{PRICER_REST_PORT},
|
||||
"base_url": ["POST", "http://localhost:@env{PRICER_REST_PORT}"]
|
||||
}
|
||||
, "WS": {
|
||||
"url": "ws://localhost:@env{PRICER_WS_PORT}/ws"
|
||||
}
|
||||
}
|
||||
}
|
||||
, "quant": {
|
||||
"channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.QUANT"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.QUANT_MUSVC_STATUS"
|
||||
}
|
||||
, "risk_manager": {
|
||||
"channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.RMGR"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.RMGR_MUSVC_STATUS"
|
||||
, "revalue_interval_sec": 10.5
|
||||
}
|
||||
, "trader": {
|
||||
"channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.TRADER"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.TRADER_MUSVC_STATUS"
|
||||
|
||||
, "pos_diff_pct_trigger": 10.0
|
||||
, "trading_depth": {
|
||||
"BTC": 0.001
|
||||
# "BTC": 0.1
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
@var COORDINATOR_REST_PORT=23456
|
||||
# @var COORDINATOR_WS_PORT=12345
|
||||
|
||||
@var PRICER_REST_PORT=23457
|
||||
@var PRICER_WS_PORT=12346
|
||||
|
||||
@var GLOBAL_CHANNEL_PREFIX=CVTT_MU
|
||||
|
||||
{
|
||||
"refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
|
||||
, "algos": @inc=http://@env{CONFIG_SERVICE}/apps/common/algos
|
||||
, "strategies": @inc=http://@env{CONFIG_SERVICE}/apps/common/strategies
|
||||
, "risk_strategies": @inc=http://@env{CONFIG_SERVICE}/apps/common/risk_strategies
|
||||
|
||||
, "comm_settings": @env{CONFIG_COMM_SETTINGS}
|
||||
, "global_channel_prefix": ${GLOBAL_CHANNEL_PREFIX}
|
||||
|
||||
, "coordinator": {
|
||||
"api": {
|
||||
"REST": {
|
||||
"port": ${COORDINATOR_REST_PORT},
|
||||
"base_url": ["POST", "http://localhost:${COORDINATOR_REST_PORT}"]
|
||||
}
|
||||
# , "WS": {
|
||||
# "url": "ws://localhost:${COORDINATOR_WS_PORT}/ws"
|
||||
# }
|
||||
}
|
||||
}
|
||||
, "market_data_gateway": {
|
||||
"exchanges_settings": {
|
||||
"*": {
|
||||
"mkt_data": {
|
||||
"enabled": true
|
||||
, "streaming": true
|
||||
},
|
||||
"order_entry": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
"accounting": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
},
|
||||
}
|
||||
, "channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.MD_GW"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.MD_GW_APP_STATUS"
|
||||
, "exchanges": [
|
||||
"COINBASE_AT"
|
||||
, "BNBSPOT"
|
||||
]
|
||||
}
|
||||
, "order_entry_gateway": {
|
||||
"exchanges_settings": {
|
||||
"COINBASE_AT": {
|
||||
"mkt_data": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
"order_entry": {
|
||||
"enabled": true
|
||||
, "streaming": true
|
||||
},
|
||||
"accounting": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
}
|
||||
}
|
||||
}
|
||||
, "channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.OE_GW"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.OE_GW_APP_STATUS"
|
||||
, "exchanges": [
|
||||
"COINBASE_AT"
|
||||
]
|
||||
}
|
||||
, "accounting_gateway": {
|
||||
"exchanges_settings": {
|
||||
"COINBASE_AT": {
|
||||
"mkt_data": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
"order_entry": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
"accounting": {
|
||||
"enabled": true
|
||||
, "streaming": false
|
||||
}
|
||||
}
|
||||
}
|
||||
, "channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.ACCT_GW"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.ACCT_GW_APP_STATUS"
|
||||
, "exchanges": [
|
||||
"ALPACA_SNDBX", "COINBASE_AT"
|
||||
]
|
||||
}
|
||||
, "quant": {
|
||||
"channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.QUANT"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.QUANT_MUSVC_STATUS"
|
||||
}
|
||||
, "trader": {
|
||||
"channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.TRADER"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.TRADER_MUSVC_STATUS"
|
||||
}
|
||||
, "bookkeeper": {
|
||||
"channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.BKPR"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.BKPR_MUSVC_STATUS"
|
||||
, "db": {
|
||||
"server_type": "timescale",
|
||||
# "cred_key": "TSDB_TRADING_CVTT_TESTDB"
|
||||
"cred_key": "TSDB_CVTT_TRADINNG_PROD-01-RW"
|
||||
}
|
||||
}
|
||||
, "risk_manager": {
|
||||
"channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.RMGR"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.RMGR_MUSVC_STATUS"
|
||||
, "revalue_interval_sec": 10.5
|
||||
}
|
||||
, "pricer": {
|
||||
"channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.PXER"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.PXER_MUSVC_STATUS"
|
||||
, "api": {
|
||||
"REST": {
|
||||
"port": ${PRICER_REST_PORT},
|
||||
"base_url": ["POST", "http://localhost:${PRICER_REST_PORT}"]
|
||||
}
|
||||
, "WS": {
|
||||
"url": "ws://localhost:${PRICER_WS_PORT}/ws"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
@var CONFIG_SERVICE=cloud23.cvtt.vpn:6789
|
||||
|
||||
{
|
||||
# ----------------------------------
|
||||
"refdata": @inc=http://${CONFIG_SERVICE}/refdata/refdata
|
||||
, "redis": @inc=http://${CONFIG_SERVICE}/apps/common/redis
|
||||
}
|
||||
@@ -1,17 +1,6 @@
|
||||
@var CONFIG_SERVICE=cloud23.cvtt.vpn:6789
|
||||
|
||||
{
|
||||
"refdata": @inc=http://${CONFIG_SERVICE}/refdata/refdata
|
||||
, "redis": @inc=http://${CONFIG_SERVICE}/apps/common/redis
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// This is used only for dynamically loaded instrument lists (as for Alpaca)
|
||||
, "active_instruments": @inc=http://${CONFIG_SERVICE}/apps/active_instruments
|
||||
, "cvttcomm": {
|
||||
"type": "redis"
|
||||
, "redis_settings": "cvtt-prod-eqty-01"
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
"refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
|
||||
|
||||
, "md_recorder": {
|
||||
"instrument_groups": {
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
@var CONFIG_SERVICE=cloud23.cvtt.vpn:6789
|
||||
{
|
||||
"refdata": @inc=http://${CONFIG_SERVICE}/refdata/refdata
|
||||
"refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
"exchanges_settings": {
|
||||
"*": {
|
||||
"mkt_data": {
|
||||
@@ -9,9 +8,10 @@
|
||||
},
|
||||
}
|
||||
}
|
||||
, "cvttcomm": {
|
||||
"type": "redis"
|
||||
, "redis_settings": "localhost"
|
||||
}
|
||||
, "comm_settings": "/comm/pubsub/redis/localhost"
|
||||
# , "cvttcomm": {
|
||||
# "type": "redis"
|
||||
# , "comm_settings": "/comm/pubsub/redis/localhost"
|
||||
# }
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
@var CONFIG_SERVICE=cloud23.cvtt.vpn:6789
|
||||
{
|
||||
"refdata": @inc=http://${CONFIG_SERVICE}/refdata/refdata
|
||||
"refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
, "calendar_session": {
|
||||
"trading_hours_url": [
|
||||
"GET"
|
||||
, "http://cloud16.cvtt.vpn:8000/api/v1/markets/hours?mic=XNYS&start={start}&end={end}"
|
||||
, "https://trading-calendar.cvtt.net/api/v1/markets/hours?mic=XNYS&start={start}&end={end}"
|
||||
]
|
||||
}
|
||||
, "exchanges_settings": {
|
||||
@@ -15,9 +14,10 @@
|
||||
},
|
||||
}
|
||||
}
|
||||
, "cvttcomm": {
|
||||
"type": "redis"
|
||||
, "redis_settings": "localhost"
|
||||
}
|
||||
, "comm_settings": "/comm/pubsub/redis/localhost"
|
||||
# , "cvttcomm": {
|
||||
# "type": "redis"
|
||||
# , "comm_settings": "/comm/pubsub/redis/localhost"
|
||||
# }
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
|
||||
, "algos": @inc=http://@env{CONFIG_SERVICE}/apps/common/algos
|
||||
, "exchanges_settings": {
|
||||
"ALPACA_SIM": {
|
||||
"mkt_data": {
|
||||
"enabled": true
|
||||
, "streaming": true
|
||||
},
|
||||
"order_entry": {
|
||||
"enabled": true
|
||||
, "streaming": true
|
||||
},
|
||||
"accounting": {
|
||||
"enabled": true
|
||||
, "streaming": false
|
||||
},
|
||||
},
|
||||
# "ALPACA-MD-REST-ONLY": {
|
||||
# "mkt_data": {
|
||||
# "enabled": true
|
||||
# , "streaming": false
|
||||
# },
|
||||
# },
|
||||
# "COINBASE_SIM": {
|
||||
# "mkt_data": {
|
||||
# "enabled": true
|
||||
# , "streaming": true
|
||||
# },
|
||||
# "order_entry": {
|
||||
# "enabled": true
|
||||
# , "streaming": true
|
||||
# },
|
||||
# "accounting": {
|
||||
# "enabled": true
|
||||
# , "streaming": false
|
||||
# },
|
||||
# },
|
||||
|
||||
}
|
||||
, "trading": {
|
||||
"book_id": "COINTEGR_BOOK_001"
|
||||
,"algo": "TRDALGO_SIMPLE_BO"
|
||||
, "usd_amount": 1000.0
|
||||
, "price_offset_bps": 20
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
@var CONFIG_SERVICE=cloud23.cvtt.vpn:6789
|
||||
{
|
||||
"refdata": @inc=http://${CONFIG_SERVICE}/refdata/refdata
|
||||
, "comm": @inc=http://${CONFIG_SERVICE}/apps/common/comm
|
||||
, "algos": @inc=http://${CONFIG_SERVICE}/apps/common/algos
|
||||
"refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
|
||||
, "algos": @inc=http://@env{CONFIG_SERVICE}/apps/common/algos
|
||||
"exchanges_settings": {
|
||||
"*": {
|
||||
"mkt_data": {
|
||||
@@ -29,7 +28,21 @@
|
||||
"enabled": true
|
||||
, "streaming": false
|
||||
},
|
||||
}
|
||||
},
|
||||
"ALPACA_SIM": {
|
||||
"mkt_data": {
|
||||
"enabled": true
|
||||
, "streaming": true
|
||||
},
|
||||
"order_entry": {
|
||||
"enabled": true
|
||||
, "streaming": true
|
||||
},
|
||||
"accounting": {
|
||||
"enabled": true
|
||||
, "streaming": false
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
@var CONFIG_SERVICE=cloud23.cvtt.vpn:6789
|
||||
@var SQLITE_DIR=/home/oleg/tmp/sqlite
|
||||
|
||||
@var FROM_TIME="2024-10-03 13:30:00"
|
||||
@var FROM_TIME="2024-11-14 13:30:00"
|
||||
@var INTERVAL="18 minutes"
|
||||
# @var INTERVAL="5 minutes"
|
||||
|
||||
{
|
||||
"refdata": @inc=http://${CONFIG_SERVICE}/refdata/refdata
|
||||
, "redis": @inc=http://${CONFIG_SERVICE}/apps/common/redis
|
||||
, "comm": @inc=http://${CONFIG_SERVICE}/apps/common/comm
|
||||
, "redis_settings": "localhost"
|
||||
"refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
|
||||
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
|
||||
, "comm_settings": "/comm/pubsub/redis/localhost"
|
||||
, "simulation": {
|
||||
# "speed_factor": 1.0,
|
||||
"speed_factor": 0.0,
|
||||
@@ -0,0 +1,144 @@
|
||||
@var DATA_DIR=/home/coder/project/data
|
||||
|
||||
@var MD_WS_PORT=10180
|
||||
@var OE_WS_PORT=10181
|
||||
@var OE_REST_PORT=10182
|
||||
@var ACCT_REST_PORT=10083
|
||||
|
||||
@var DATE=20241114
|
||||
@var FROM_TIME=13:30
|
||||
@var TO_TIME=20:00
|
||||
|
||||
{
|
||||
"refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
|
||||
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
|
||||
, "comm_settings": "/comm/pubsub/redis/localhost"
|
||||
, "simulation": {
|
||||
"speed_factor": 0.0,
|
||||
# "speed_factor": 1000.0,
|
||||
"time_events_interval_ms": 0
|
||||
}
|
||||
, "market_simulator" : {
|
||||
"initial_positions": {
|
||||
"exchange": "ALPACA",
|
||||
"assets": {
|
||||
"BTC": 0.5
|
||||
, "ETH": 0.0
|
||||
, "USD": 10_000.0
|
||||
}
|
||||
}
|
||||
, "market_data": {
|
||||
"sources": [
|
||||
{
|
||||
"loader_class": "cvttpy.trading.mkt_data.time_series.loaders.sqlite_loader.SqliteMdLoader"
|
||||
, "file_name": "${DATA_DIR}/eqt/${DATE}.alpaca_sim_md.db"
|
||||
, "exchange_id": "ALPACA"
|
||||
, "instruments": ["STOCK-COIN", "STOCK-CAN"]
|
||||
, "md_types": {
|
||||
"TRADES": {
|
||||
"table_name": "md_trades"
|
||||
, "columns": [
|
||||
"tstamp"
|
||||
, "tstamp_ns as tm" # required column
|
||||
, "tstamp_ns as exchange_ts_ns"
|
||||
, "tstamp_ns as local_time_ns"
|
||||
, "exchange_id"
|
||||
, "instrument_id"
|
||||
, "exch as exchange_code"
|
||||
, "px as price"
|
||||
, "qty as quantity"
|
||||
, "'' as taker_side" # get from condition (?)
|
||||
, "trade_id"
|
||||
, "condition"
|
||||
, "tape"
|
||||
]
|
||||
, "time_column": "tstamp"
|
||||
, "from_time": "${FROM_TIME}"
|
||||
, "to_time": "${TO_TIME}"
|
||||
}
|
||||
, "BOOK_TOP": {
|
||||
"table_name": "md_quotes"
|
||||
, "columns": [
|
||||
"tstamp"
|
||||
, "tstamp_ns as tm" # required column
|
||||
, "tstamp_ns as local_time_ns"
|
||||
, "exchange_id"
|
||||
, "instrument_id"
|
||||
, "bid_exch as bid_exchange_code"
|
||||
, "ask_exch as ask_exchange_code"
|
||||
, "bid_px as bid_price"
|
||||
, "bid_qty as bid_quantity"
|
||||
, "ask_px as ask_price"
|
||||
, "ask_qty as ask_quantity"
|
||||
]
|
||||
, "time_column": "tstamp"
|
||||
, "from_time": "${FROM_TIME}"
|
||||
, "to_time": "${TO_TIME}"
|
||||
}
|
||||
# , "HIST_BAR": {
|
||||
# "table_name": "md_1min_bars"
|
||||
# , "columns": [
|
||||
# "tstamp"
|
||||
# , "tstamp_ns as tm" # must have tm for DataFrame
|
||||
# , "tstamp_ns as local_time_ns" # must have for simrunner
|
||||
# , "exchange_id"
|
||||
# , "instrument_id"
|
||||
# , "open"
|
||||
# , "high"
|
||||
# , "low"
|
||||
# , "close"
|
||||
# , "volume"
|
||||
# , "vwap"
|
||||
# , "num_trades"
|
||||
# ]
|
||||
# , "time_column": "tstamp"
|
||||
# }
|
||||
}
|
||||
}
|
||||
]
|
||||
, "api": {
|
||||
"web_socket": {
|
||||
"url": "ws://localhost:${MD_WS_PORT}/ws"
|
||||
}
|
||||
}
|
||||
}
|
||||
, "order_entry": {
|
||||
"execution": {
|
||||
"execute_on": ["BOOK_TOP", "TRADES"]
|
||||
"top_only": true
|
||||
,"min_order_age_sec": 0.1
|
||||
, "pricing_method": "BY_MKT_TRD_PRICE_BY_TRADE"
|
||||
|
||||
, "short_sale_allowed": false
|
||||
, "fee_schedule": { # ALPACA -
|
||||
"taker_fee_rate": 0.0
|
||||
"maker_fee_rate": 0.0
|
||||
}
|
||||
# , "presubscribe_md_types": ["BOOK_TOP", "TRADES"]
|
||||
}
|
||||
, "api": {
|
||||
"web_socket": {
|
||||
"url": "ws://localhost:${OE_WS_PORT}/ws"
|
||||
}
|
||||
, "REST": {
|
||||
"port": ${OE_REST_PORT}
|
||||
"new_order_url": ["POST", "http://localhost:${OE_REST_PORT}/order"]
|
||||
, "cancel_order_url": ["POST", "http://localhost:${OE_REST_PORT}/cancel"]
|
||||
, "cancel_all_url": ["POST", "http://localhost:${OE_REST_PORT}/cancel_all"]
|
||||
, "open_orders_url": ["GET", "http://localhost:${OE_REST_PORT}/open_orders"]
|
||||
, "order_status_url": ["GET", "http://localhost:${OE_REST_PORT}/order_status"]
|
||||
}
|
||||
}
|
||||
}
|
||||
, "accounting": {
|
||||
"api": {
|
||||
"REST": {
|
||||
"port": ${ACCT_REST_PORT}
|
||||
, "positions_url": ["GET", "http://localhost:${ACCT_REST_PORT}/positions"]
|
||||
, "trades_url": ["GET", "http://localhost:${ACCT_REST_PORT}/trades"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,349 @@
|
||||
@var COORDINATOR_HOST=localhost
|
||||
@var COORDINATOR_REST_PORT=28001
|
||||
@var COORDINATOR_WS_PORT=28002
|
||||
|
||||
@var GLOBAL_CHANNEL_PREFIX=CVTT_MU_SIM
|
||||
|
||||
@var SIM_HOST=localhost
|
||||
@var SIM_DATA_DIR=/home/oleg/develop/simulation/data
|
||||
|
||||
@var SIM_MD_WS_PORT=28080
|
||||
@var SIM_OE_WS_PORT=28081
|
||||
@var SIM_OE_REST_PORT=28082
|
||||
@var SIM_AC_REST_PORT=28083
|
||||
|
||||
|
||||
{
|
||||
# ---------------------------------------
|
||||
"__dummy__": null
|
||||
# ---------------------------------------
|
||||
# Overwriting "exchanges" part in "refdata"
|
||||
# "refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
"refdata": {
|
||||
"assets": @inc=http://@env{CONFIG_SERVICE}/refdata/assets ,
|
||||
"instruments": @inc=http://@env{CONFIG_SERVICE}/refdata/instruments ,
|
||||
"exchange_instruments": @inc=http://@env{CONFIG_SERVICE}/refdata/exchange_instruments ,
|
||||
"dynamic_instrument_exchanges": ["ALPACA"],
|
||||
"exchanges": {
|
||||
"SIM_COINBASE": {
|
||||
"exchange_id": "COINBASE",
|
||||
"name": "Coinbase Advanced Trade (Simulation)",
|
||||
"type": "SPOT",
|
||||
|
||||
"mktdata" : {
|
||||
"class": "cvttpy.exchanges.mkt_simulator.md_client.MktSimMdClientFeed"
|
||||
"api": @pathptr=simulation/market_simulator/market_data/api
|
||||
},
|
||||
"order_entry": {
|
||||
"class": "cvttpy.exchanges.mkt_simulator.oe_client.MarketSimulatorOEClient"
|
||||
"api": @ptrpath=simulation/market_simulator/order_entry/api
|
||||
},
|
||||
"accounting": {
|
||||
"class": "cvttpy.exchanges.mkt_simulator.acct_client.MktSimAccounting"
|
||||
"api": @ptrpath=simulation/market_simulator/accounting/api
|
||||
},
|
||||
},
|
||||
"SIM_ALPACA": {
|
||||
"exchange_id": "ALPACA",
|
||||
"name": "Alpaca Trading",
|
||||
"type": "EQUITY",
|
||||
|
||||
"mktdata" : {
|
||||
"class": "cvttpy.exchanges.mkt_simulator.md_client.MktSimMdClientFeed"
|
||||
"config_key": "simulation/market_simulator/market_data/api"
|
||||
},
|
||||
"order_entry": {
|
||||
"class": "cvttpy.exchanges.mkt_simulator.oe_client.MarketSimulatorOEClient"
|
||||
"config_key": "simulation/market_simulator/order_entry/api"
|
||||
},
|
||||
"accounting": {
|
||||
"class": "cvttpy.exchanges.mkt_simulator.acct_client.MktSimAccounting"
|
||||
"config_key": "simulation/market_simulator/accounting/api"
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
"comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm ,
|
||||
"algos": @inc=http://@env{CONFIG_SERVICE}/apps/common/algos ,
|
||||
"strategies": @inc=http://@env{CONFIG_SERVICE}/apps/common/strategies ,
|
||||
"risk_strategies": @inc=http://@env{CONFIG_SERVICE}/apps/common/risk_strategies ,
|
||||
|
||||
"comm_settings": "@env{CONFIG_COMM_SETTINGS}",
|
||||
"global_channel_prefix": "${GLOBAL_CHANNEL_PREFIX}",
|
||||
|
||||
"simulation": {
|
||||
# "speed_factor": 1.0,
|
||||
"speed_factor": 0.0
|
||||
, "time_events_interval_ms": 0
|
||||
, "simtime_file": "${SIM_DATA_DIR}/simtime.bin"
|
||||
, "expected_consumers": [
|
||||
"md_gateway",
|
||||
"mkt_gateway_tester"
|
||||
"coordinator",
|
||||
# "oe_gateway",
|
||||
# "acct_gateway",
|
||||
# "quant",
|
||||
# "trader",
|
||||
# "bookkeeper",
|
||||
# "risk_manager",
|
||||
# "pricer"
|
||||
]
|
||||
, "consumer_timeout_sec": 30.0
|
||||
|
||||
, "market_simulator" : {
|
||||
"initial_positions": {
|
||||
"exchange": "COINBASE",
|
||||
"assets": {
|
||||
"BTC": 0.5
|
||||
, "ETH": 0.0
|
||||
, "USD": 10_000.0
|
||||
}
|
||||
}
|
||||
, "market_data": {
|
||||
"sources": [
|
||||
{
|
||||
"loader_class": "cvttpy.trading.mkt_data.time_series.loaders.sqlite_loader.SqliteMdLoader"
|
||||
, "file_name": "${SIM_DATA_DIR}/20250422.CNBS.BTC_USD.db"
|
||||
, "table_name": "md_trades"
|
||||
, "columns": [
|
||||
"tstamp"
|
||||
, "tstamp_ns as tm" # must have tm for DataFrame
|
||||
, "tstamp_ns as local_time_ns" # must have for simrunner
|
||||
, "exchange_id"
|
||||
, "instrument_id"
|
||||
, "px as price"
|
||||
, "qty as quantity"
|
||||
, "trade_id"
|
||||
, "condition as aggressor_side"
|
||||
, "condition as taker_side"
|
||||
]
|
||||
, "time_column": "tstamp"
|
||||
, "exchange_id": "COINBASE"
|
||||
, "instruments": ["PAIR-BTC-USD"]
|
||||
, "md_type": "TRADES"
|
||||
}
|
||||
# , {
|
||||
# "loader_class": "cvttpy.trading.mkt_data.time_series.loaders.tsdb_loader.TimescaleTSLoader"
|
||||
# , "credentials_key": "TSDB_MD_CVTTDATA_RO"
|
||||
# , "interval": ${INTERVAL}
|
||||
# , "from_time": ${FROM_TIME} #"2024-10-03 09:00:00"
|
||||
# , "exchange_id": "COINBASE"
|
||||
# , "instruments": ["PAIR-BTC-USD"]
|
||||
# , "md_type": "BOOK_TOP"
|
||||
# , "table_name": "coinbase.md_booktops"
|
||||
# , "columns": [
|
||||
# "time",
|
||||
# "local_time_ns",
|
||||
# "exchange_id",
|
||||
# "instrument_id",
|
||||
# "bid_price",
|
||||
# "bid_quantity",
|
||||
# "ask_price",
|
||||
# "ask_quantity",
|
||||
# "'BT' as type",
|
||||
# ]
|
||||
# , "time_column": "time"
|
||||
# }
|
||||
]
|
||||
, "api": {
|
||||
"web_socket": {
|
||||
"url": "ws://${SIM_HOST}:${SIM_MD_WS_PORT}/ws"
|
||||
}
|
||||
}
|
||||
}
|
||||
, "order_entry": {
|
||||
"execution": {
|
||||
"execute_on": ["BOOK_TOP", "TRADES"]
|
||||
"top_only": true
|
||||
,"min_order_age_sec": 0.1
|
||||
, "pricing_method": "BY_MKT_TRD_PRICE_BY_TRADE"
|
||||
|
||||
, "short_sale_allowed": false
|
||||
, "fee_schedule": {
|
||||
"taker_fee_rate": 0.006
|
||||
"maker_fee_rate": 0.004
|
||||
}
|
||||
# , "presubscribe_md_types": ["BOOK_TOP", "TRADES"]
|
||||
}
|
||||
, "api": {
|
||||
"web_socket": {
|
||||
"url": "ws://${SIM_HOST}:${SIM_OE_WS_PORT}/ws"
|
||||
}
|
||||
, "REST": {
|
||||
"port": ${SIM_OE_REST_PORT},
|
||||
"base_url": "http://${SIM_HOST}:${SIM_OE_REST_PORT}",
|
||||
"endpoints": {
|
||||
"new_order": ["POST", "/order"],
|
||||
"cancel_order": ["POST", "/cancel"],
|
||||
"cancel_all": ["POST", "/cancel_all"],
|
||||
"open_orders": ["GET", "/open_orders"],
|
||||
"order_status": ["GET", "/order_status"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
, "accounting": {
|
||||
"api": {
|
||||
"REST": {
|
||||
"port": ${SIM_AC_REST_PORT},
|
||||
"base_url": "http://${SIM_HOST}:${SIM_AC_REST_PORT}",
|
||||
"endpoints": {
|
||||
"positions": ["GET", "/positions"]
|
||||
"trades": ["GET", "/trades"]
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
, "external_participants": [
|
||||
{
|
||||
"class": "cvttpy.apps.trading_simulator.participants.external_strategy.ExternalStrategySim"
|
||||
"params": {
|
||||
"reader": {
|
||||
"source": "file://${SIM_DATA_DIR}/trading_instructions.json"
|
||||
}
|
||||
"listener": {
|
||||
"book_id": "TESTBK_COINBS_01",
|
||||
"strategy_id": "DUMMY_STRATEGY"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
, "coordinator": {
|
||||
"api": {
|
||||
"REST": {
|
||||
"port": ${COORDINATOR_REST_PORT},
|
||||
"base_url": ["POST", "http://${COORDINATOR_HOST}:${COORDINATOR_REST_PORT}"],
|
||||
}
|
||||
, "WS": {
|
||||
"url": "ws://${COORDINATOR_HOST}:${COORDINATOR_WS_PORT}/ws"
|
||||
}
|
||||
}
|
||||
}
|
||||
, "market_data_gateway": {
|
||||
"exchanges_settings": {
|
||||
"*": {
|
||||
"mkt_data": {
|
||||
"enabled": true
|
||||
, "streaming": true
|
||||
},
|
||||
"order_entry": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
"accounting": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
},
|
||||
}
|
||||
, "channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.MD_GW"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.MD_GW_APP_STATUS"
|
||||
, "exchanges": [
|
||||
"SIM_COINBASE"
|
||||
],
|
||||
"presubscribe": [
|
||||
"COINBASE:PAIR-BTC-USD"
|
||||
]
|
||||
}
|
||||
, "order_entry_gateway": {
|
||||
"exchanges_settings": {
|
||||
"ALPACA_SNDBX": {
|
||||
"mkt_data": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
"order_entry": {
|
||||
"enabled": true
|
||||
, "streaming": true
|
||||
},
|
||||
"accounting": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
}
|
||||
, "credentials_key": {
|
||||
"read_only": "ALPACA_SANDBOX"
|
||||
, "trade": "ALPACA_SANDBOX"
|
||||
}
|
||||
}
|
||||
}
|
||||
, "channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.OE_GW"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.OE_GW_APP_STATUS"
|
||||
, "exchanges": [
|
||||
"SIM_COINBASE"
|
||||
]
|
||||
}
|
||||
, "accounting_gateway": {
|
||||
"exchanges_settings": {
|
||||
"ALPACA_SNDBX": {
|
||||
"mkt_data": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
"order_entry": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
"accounting": {
|
||||
"enabled": true
|
||||
, "streaming": false
|
||||
}
|
||||
, "credentials_key": {
|
||||
"read_only": "ALPACA_SANDBOX"
|
||||
, "trade": "ALPACA_SANDBOX"
|
||||
}
|
||||
},
|
||||
"COINBASE_AT": {
|
||||
"mkt_data": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
"order_entry": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
"accounting": {
|
||||
"enabled": true
|
||||
, "streaming": false
|
||||
}
|
||||
, "credentials_key": {
|
||||
"read_only": "COINBASE_ADV_RO"
|
||||
}
|
||||
}
|
||||
}
|
||||
, "channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.ACCT_GW"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.ACCT_GW_APP_STATUS"
|
||||
, "exchanges": [
|
||||
"SIM_COINBASE"
|
||||
]
|
||||
}
|
||||
, "quant": {
|
||||
"channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.QUANT"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.QUANT_MUSVC_STATUS"
|
||||
}
|
||||
, "trader": {
|
||||
"channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.TRADER"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.TRADER_MUSVC_STATUS"
|
||||
}
|
||||
, "bookkeeper": {
|
||||
"channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.BKPR"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.BKPR_MUSVC_STATUS"
|
||||
, "db": {
|
||||
"server_type": "timescale",
|
||||
"cred_key": "TSDB_TRADING_CVTT_TESTDB"
|
||||
}
|
||||
}
|
||||
, "risk_manager": {
|
||||
"channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.RMGR"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.RMGR_MUSVC_STATUS"
|
||||
, "revalue_interval_sec": 10.5
|
||||
}
|
||||
, "pricer": {
|
||||
"channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.PXER"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.PXER_MUSVC_STATUS"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,349 @@
|
||||
@var COORDINATOR_HOST=localhost
|
||||
@var COORDINATOR_REST_PORT=28001
|
||||
@var COORDINATOR_WS_PORT=28002
|
||||
|
||||
@var GLOBAL_CHANNEL_PREFIX=CVTT_MU_SIM
|
||||
|
||||
@var SIM_HOST=localhost
|
||||
@var SIM_DATA_DIR=/home/oleg/develop/simulation/data
|
||||
|
||||
@var SIM_MD_WS_PORT=28080
|
||||
@var SIM_OE_WS_PORT=28081
|
||||
@var SIM_OE_REST_PORT=28082
|
||||
@var SIM_AC_REST_PORT=28083
|
||||
|
||||
|
||||
{
|
||||
# ---------------------------------------
|
||||
"__dummy__": null
|
||||
# ---------------------------------------
|
||||
# Overwriting "exchanges" part in "refdata"
|
||||
# "refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
"refdata": {
|
||||
"assets": @inc=http://@env{CONFIG_SERVICE}/refdata/assets ,
|
||||
"instruments": @inc=http://@env{CONFIG_SERVICE}/refdata/instruments ,
|
||||
"exchange_instruments": @inc=http://@env{CONFIG_SERVICE}/refdata/exchange_instruments ,
|
||||
"dynamic_instrument_exchanges": ["ALPACA"],
|
||||
"exchanges": {
|
||||
"SIM_COINBASE": {
|
||||
"exchange_id": "COINBASE",
|
||||
"name": "Coinbase Advanced Trade (Simulation)",
|
||||
"type": "SPOT",
|
||||
|
||||
"mktdata" : {
|
||||
"class": "cvttpy.exchanges.mkt_simulator.md_client.MktSimMdClientFeed"
|
||||
"api": @pathptr=simulation/market_simulator/market_data/api
|
||||
},
|
||||
"order_entry": {
|
||||
"class": "cvttpy.exchanges.mkt_simulator.oe_client.MarketSimulatorOEClient"
|
||||
"api": @ptrpath=simulation/market_simulator/order_entry/api
|
||||
},
|
||||
"accounting": {
|
||||
"class": "cvttpy.exchanges.mkt_simulator.acct_client.MktSimAccounting"
|
||||
"api": @ptrpath=simulation/market_simulator/accounting/api
|
||||
},
|
||||
},
|
||||
"SIM_ALPACA": {
|
||||
"exchange_id": "ALPACA",
|
||||
"name": "Alpaca Trading",
|
||||
"type": "EQUITY",
|
||||
|
||||
"mktdata" : {
|
||||
"class": "cvttpy.exchanges.mkt_simulator.md_client.MktSimMdClientFeed"
|
||||
"config_key": "simulation/market_simulator/market_data/api"
|
||||
},
|
||||
"order_entry": {
|
||||
"class": "cvttpy.exchanges.mkt_simulator.oe_client.MarketSimulatorOEClient"
|
||||
"config_key": "simulation/market_simulator/order_entry/api"
|
||||
},
|
||||
"accounting": {
|
||||
"class": "cvttpy.exchanges.mkt_simulator.acct_client.MktSimAccounting"
|
||||
"config_key": "simulation/market_simulator/accounting/api"
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
"comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm ,
|
||||
"algos": @inc=http://@env{CONFIG_SERVICE}/apps/common/algos ,
|
||||
"strategies": @inc=http://@env{CONFIG_SERVICE}/apps/common/strategies ,
|
||||
"risk_strategies": @inc=http://@env{CONFIG_SERVICE}/apps/common/risk_strategies ,
|
||||
|
||||
"comm_settings": "@env{CONFIG_COMM_SETTINGS}",
|
||||
"global_channel_prefix": "${GLOBAL_CHANNEL_PREFIX}",
|
||||
|
||||
"simulation": {
|
||||
# "speed_factor": 1.0,
|
||||
"speed_factor": 0.0
|
||||
, "time_events_interval_ms": 0
|
||||
, "simtime_file": "${SIM_DATA_DIR}/simtime.bin"
|
||||
, "expected_consumers": [
|
||||
"md_gateway",
|
||||
"mkt_gateway_tester"
|
||||
"coordinator",
|
||||
# "oe_gateway",
|
||||
# "acct_gateway",
|
||||
# "quant",
|
||||
# "trader",
|
||||
# "bookkeeper",
|
||||
# "risk_manager",
|
||||
# "pricer"
|
||||
]
|
||||
, "consumer_timeout_sec": 30.0
|
||||
|
||||
, "market_simulator" : {
|
||||
"initial_positions": {
|
||||
"exchange": "COINBASE",
|
||||
"assets": {
|
||||
"BTC": 0.5
|
||||
, "ETH": 0.0
|
||||
, "USD": 10_000.0
|
||||
}
|
||||
}
|
||||
, "market_data": {
|
||||
"sources": [
|
||||
{
|
||||
"loader_class": "cvttpy.trading.mkt_data.time_series.loaders.sqlite_loader.SqliteMdLoader"
|
||||
, "file_name": "${SIM_DATA_DIR}/20250422.CNBS.BTC_USD.db"
|
||||
, "table_name": "md_trades"
|
||||
, "columns": [
|
||||
"tstamp"
|
||||
, "tstamp_ns as tm" # must have tm for DataFrame
|
||||
, "tstamp_ns as local_time_ns" # must have for simrunner
|
||||
, "exchange_id"
|
||||
, "instrument_id"
|
||||
, "px as price"
|
||||
, "qty as quantity"
|
||||
, "trade_id"
|
||||
, "condition as aggressor_side"
|
||||
, "condition as taker_side"
|
||||
]
|
||||
, "time_column": "tstamp"
|
||||
, "exchange_id": "COINBASE"
|
||||
, "instruments": ["PAIR-BTC-USD"]
|
||||
, "md_type": "TRADES"
|
||||
}
|
||||
# , {
|
||||
# "loader_class": "cvttpy.trading.mkt_data.time_series.loaders.tsdb_loader.TimescaleTSLoader"
|
||||
# , "credentials_key": "TSDB_MD_CVTTDATA_RO"
|
||||
# , "interval": ${INTERVAL}
|
||||
# , "from_time": ${FROM_TIME} #"2024-10-03 09:00:00"
|
||||
# , "exchange_id": "COINBASE"
|
||||
# , "instruments": ["PAIR-BTC-USD"]
|
||||
# , "md_type": "BOOK_TOP"
|
||||
# , "table_name": "coinbase.md_booktops"
|
||||
# , "columns": [
|
||||
# "time",
|
||||
# "local_time_ns",
|
||||
# "exchange_id",
|
||||
# "instrument_id",
|
||||
# "bid_price",
|
||||
# "bid_quantity",
|
||||
# "ask_price",
|
||||
# "ask_quantity",
|
||||
# "'BT' as type",
|
||||
# ]
|
||||
# , "time_column": "time"
|
||||
# }
|
||||
]
|
||||
, "api": {
|
||||
"web_socket": {
|
||||
"url": "ws://${SIM_HOST}:${SIM_MD_WS_PORT}/ws"
|
||||
}
|
||||
}
|
||||
}
|
||||
, "order_entry": {
|
||||
"execution": {
|
||||
"execute_on": ["BOOK_TOP", "TRADES"]
|
||||
"top_only": true
|
||||
,"min_order_age_sec": 0.1
|
||||
, "pricing_method": "BY_MKT_TRD_PRICE_BY_TRADE"
|
||||
|
||||
, "short_sale_allowed": false
|
||||
, "fee_schedule": {
|
||||
"taker_fee_rate": 0.006
|
||||
"maker_fee_rate": 0.004
|
||||
}
|
||||
# , "presubscribe_md_types": ["BOOK_TOP", "TRADES"]
|
||||
}
|
||||
, "api": {
|
||||
"web_socket": {
|
||||
"url": "ws://${SIM_HOST}:${SIM_OE_WS_PORT}/ws"
|
||||
}
|
||||
, "REST": {
|
||||
"port": ${SIM_OE_REST_PORT},
|
||||
"base_url": "http://${SIM_HOST}:${SIM_OE_REST_PORT}",
|
||||
"endpoints": {
|
||||
"new_order": ["POST", "/order"],
|
||||
"cancel_order": ["POST", "/cancel"],
|
||||
"cancel_all": ["POST", "/cancel_all"],
|
||||
"open_orders": ["GET", "/open_orders"],
|
||||
"order_status": ["GET", "/order_status"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
, "accounting": {
|
||||
"api": {
|
||||
"REST": {
|
||||
"port": ${SIM_AC_REST_PORT},
|
||||
"base_url": "http://${SIM_HOST}:${SIM_AC_REST_PORT}",
|
||||
"endpoints": {
|
||||
"positions": ["GET", "/positions"]
|
||||
"trades": ["GET", "/trades"]
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
, "external_participants": [
|
||||
{
|
||||
"class": "cvttpy.apps.trading_simulator.participants.external_strategy.ExternalStrategySim"
|
||||
"params": {
|
||||
"reader": {
|
||||
"source": "file://${SIM_DATA_DIR}/trading_instructions.json"
|
||||
}
|
||||
"listener": {
|
||||
"book_id": "TESTBK_COINBS_01",
|
||||
"strategy_id": "DUMMY_STRATEGY"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
, "coordinator": {
|
||||
"api": {
|
||||
"REST": {
|
||||
"port": ${COORDINATOR_REST_PORT},
|
||||
"base_url": ["POST", "http://${COORDINATOR_HOST}:${COORDINATOR_REST_PORT}"],
|
||||
}
|
||||
, "WS": {
|
||||
"url": "ws://${COORDINATOR_HOST}:${COORDINATOR_WS_PORT}/ws"
|
||||
}
|
||||
}
|
||||
}
|
||||
, "market_data_gateway": {
|
||||
"exchanges_settings": {
|
||||
"*": {
|
||||
"mkt_data": {
|
||||
"enabled": true
|
||||
, "streaming": true
|
||||
},
|
||||
"order_entry": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
"accounting": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
},
|
||||
}
|
||||
, "channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.MD_GW"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.MD_GW_APP_STATUS"
|
||||
, "exchanges": [
|
||||
"SIM_COINBASE"
|
||||
],
|
||||
"presubscribe": [
|
||||
"COINBASE:PAIR-BTC-USD"
|
||||
]
|
||||
}
|
||||
, "order_entry_gateway": {
|
||||
"exchanges_settings": {
|
||||
"ALPACA_SNDBX": {
|
||||
"mkt_data": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
"order_entry": {
|
||||
"enabled": true
|
||||
, "streaming": true
|
||||
},
|
||||
"accounting": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
}
|
||||
, "credentials_key": {
|
||||
"read_only": "ALPACA_SANDBOX"
|
||||
, "trade": "ALPACA_SANDBOX"
|
||||
}
|
||||
}
|
||||
}
|
||||
, "channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.OE_GW"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.OE_GW_APP_STATUS"
|
||||
, "exchanges": [
|
||||
"SIM_COINBASE"
|
||||
]
|
||||
}
|
||||
, "accounting_gateway": {
|
||||
"exchanges_settings": {
|
||||
"ALPACA_SNDBX": {
|
||||
"mkt_data": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
"order_entry": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
"accounting": {
|
||||
"enabled": true
|
||||
, "streaming": false
|
||||
}
|
||||
, "credentials_key": {
|
||||
"read_only": "ALPACA_SANDBOX"
|
||||
, "trade": "ALPACA_SANDBOX"
|
||||
}
|
||||
},
|
||||
"COINBASE_AT": {
|
||||
"mkt_data": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
"order_entry": {
|
||||
"enabled": false
|
||||
, "streaming": false
|
||||
},
|
||||
"accounting": {
|
||||
"enabled": true
|
||||
, "streaming": false
|
||||
}
|
||||
, "credentials_key": {
|
||||
"read_only": "COINBASE_ADV_RO"
|
||||
}
|
||||
}
|
||||
}
|
||||
, "channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.ACCT_GW"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.ACCT_GW_APP_STATUS"
|
||||
, "exchanges": [
|
||||
"SIM_COINBASE"
|
||||
]
|
||||
}
|
||||
, "quant": {
|
||||
"channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.QUANT"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.QUANT_MUSVC_STATUS"
|
||||
}
|
||||
, "trader": {
|
||||
"channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.TRADER"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.TRADER_MUSVC_STATUS"
|
||||
}
|
||||
, "bookkeeper": {
|
||||
"channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.BKPR"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.BKPR_MUSVC_STATUS"
|
||||
, "db": {
|
||||
"server_type": "timescale",
|
||||
"cred_key": "TSDB_TRADING_CVTT_TESTDB"
|
||||
}
|
||||
}
|
||||
, "risk_manager": {
|
||||
"channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.RMGR"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.RMGR_MUSVC_STATUS"
|
||||
, "revalue_interval_sec": 10.5
|
||||
}
|
||||
, "pricer": {
|
||||
"channel_prefix": "${GLOBAL_CHANNEL_PREFIX}.PXER"
|
||||
, "app_status_channel": "${GLOBAL_CHANNEL_PREFIX}.PXER_MUSVC_STATUS"
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,3 @@
|
||||
@var CONFIG_SERVICE=cloud23.cvtt.vpn:6789
|
||||
|
||||
{
|
||||
"__DUMMY__": null
|
||||
|
||||
@@ -24,6 +22,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
, "refdata": @inc=http://${CONFIG_SERVICE}/refdata/refdata
|
||||
, "refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
@var CONFIG_SERVICE=cloud23.cvtt.vpn:6789
|
||||
|
||||
{
|
||||
"__DUMMY__": null
|
||||
|
||||
@@ -24,6 +22,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
, "refdata": @inc=http://${CONFIG_SERVICE}/refdata/refdata
|
||||
, "refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
@var CONFIG_SERVICE=cloud23.cvtt.vpn:6789
|
||||
|
||||
{
|
||||
"__DUMMY__": null
|
||||
|
||||
@@ -29,6 +27,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
, "refdata": @inc=http://${CONFIG_SERVICE}/refdata/refdata
|
||||
, "refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
@var CONFIG_SERVICE=cloud23.cvtt.vpn:6789
|
||||
{
|
||||
"__DUMMY__": null
|
||||
|
||||
, "exchanges_settings": {
|
||||
|
||||
"COINBASE_AT": {
|
||||
"accounting": {
|
||||
"enabled": true
|
||||
@@ -21,6 +21,15 @@
|
||||
"read_only": "ALPACA_SANDBOX"
|
||||
}
|
||||
}
|
||||
, "ALPACA_PROD": {
|
||||
"accounting": {
|
||||
"enabled": true
|
||||
, "streaming": false
|
||||
}
|
||||
, "credentials_key": {
|
||||
"read_only": "ALPACA_PROD"
|
||||
}
|
||||
}
|
||||
, "GEMINI-SNDBX": {
|
||||
"accounting": {
|
||||
"enabled": true
|
||||
@@ -31,7 +40,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
, "refdata": @inc=http://${CONFIG_SERVICE}/refdata/refdata
|
||||
, "redis": @inc=http://${CONFIG_SERVICE}/apps/common/redis
|
||||
, "refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
@var CONFIG_SERVICE=cloud23.cvtt.vpn:6789
|
||||
{
|
||||
"__DUMMY__": null
|
||||
|
||||
@@ -21,8 +20,16 @@
|
||||
"read_only": "ALPACA_SANDBOX"
|
||||
}
|
||||
}
|
||||
, "ALPACA_PROD": {
|
||||
"accounting": {
|
||||
"enabled": true
|
||||
, "streaming": false
|
||||
}
|
||||
, "credentials_key": {
|
||||
"read_only": "ALPACA_PROD"
|
||||
}
|
||||
}
|
||||
}
|
||||
, "refdata": @inc=http://${CONFIG_SERVICE}/refdata/refdata
|
||||
, "redis": @inc=http://${CONFIG_SERVICE}/apps/common/redis
|
||||
, "refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,16 @@
|
||||
@var CONFIG_SERVICE=cloud23.cvtt.vpn:6789
|
||||
{
|
||||
"refdata": @inc=http://${CONFIG_SERVICE}/refdata/refdata
|
||||
, "redis": @inc=http://${CONFIG_SERVICE}/apps/common/redis
|
||||
, "active_instruments": @inc=http://${CONFIG_SERVICE}/apps/active_instruments
|
||||
"refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
|
||||
, "active_instruments": {
|
||||
"ALPACA_SNDBX": {
|
||||
"dynamic_stock_list": {
|
||||
"exchange_id": "ALPACA"
|
||||
, "list_source": "redis"
|
||||
, "comm_settings": "/comm/pubsub/redis/cvtt-prod-eqty-01"
|
||||
, "redis_key": "DAY_STOCK_LIST"
|
||||
}
|
||||
}
|
||||
}
|
||||
"exchanges_settings": {
|
||||
"*": {
|
||||
"mkt_data": {
|
||||
@@ -19,7 +27,7 @@
|
||||
}
|
||||
# , "cvttcomm": {
|
||||
# "type": "redis"
|
||||
# , "redis_settings": "localhost"
|
||||
# , "comm_settings": "/comm/pubsub/redis/localhost"
|
||||
# }
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,16 @@
|
||||
@var CONFIG_SERVICE=cloud23.cvtt.vpn:6789
|
||||
{
|
||||
"refdata": @inc=http://${CONFIG_SERVICE}/refdata/refdata
|
||||
, "redis": @inc=http://${CONFIG_SERVICE}/apps/common/redis
|
||||
, "active_instruments": @inc=http://${CONFIG_SERVICE}/apps/active_instruments
|
||||
"refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
|
||||
, "active_instruments": {
|
||||
"ALPACA_SNDBX": {
|
||||
"dynamic_stock_list": {
|
||||
"exchange_id": "ALPACA"
|
||||
, "list_source": "redis"
|
||||
, "comm_settings": "/comm/pubsub/redis/cvtt-prod-eqty-01"
|
||||
, "redis_key": "DAY_STOCK_LIST"
|
||||
}
|
||||
}
|
||||
}
|
||||
, "exchanges_settings": {
|
||||
"*": {
|
||||
"mkt_data": {
|
||||
@@ -11,10 +19,11 @@
|
||||
},
|
||||
}
|
||||
}
|
||||
, "cvttcomm": {
|
||||
"type": "redis"
|
||||
, "redis_settings": "cvtt-prod-eqty-01"
|
||||
}
|
||||
, "comm_settings": "/comm/pubsub/redis/cvtt-prod-eqty-01"
|
||||
# , "cvttcomm": {
|
||||
# "type": "redis"
|
||||
# , "comm_settings": "/comm/pubsub/redis/cvtt-prod-eqty-01"
|
||||
# }
|
||||
, "md_portal": {
|
||||
"app_channel": "MD_PORTAL"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
@var CONFIG_SERVICE=cloud23.cvtt.vpn:6789
|
||||
|
||||
{
|
||||
"__DUMMY__": null
|
||||
|
||||
@@ -23,6 +21,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
, "refdata": @inc=http://${CONFIG_SERVICE}/refdata/refdata
|
||||
, "refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
}
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
@var CONFIG_SERVICE=cloud23.cvtt.vpn:6789
|
||||
{
|
||||
"refdata": @inc=http://${CONFIG_SERVICE}/refdata/refdata
|
||||
, "redis": @inc=http://${CONFIG_SERVICE}/apps/common/redis
|
||||
"refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
|
||||
|
||||
, "cvttcomm": {
|
||||
"type": "redis"
|
||||
# , "redis_settings": "localhost"
|
||||
, "redis_settings": "cvtt-prod"
|
||||
}
|
||||
, "comm_settings": "/comm/pubsub/redis/cvtt-prod"
|
||||
# , "cvttcomm": {
|
||||
# "type": "redis"
|
||||
# # , "comm_settings": "/comm/pubsub/redis/localhost"
|
||||
# , "comm_settings": "/comm/pubsub/redis/cvtt-prod"
|
||||
# }
|
||||
, "executor": {
|
||||
"app_channel": "EXEC"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"__DUMMY__": null
|
||||
|
||||
, "refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
|
||||
# , "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
|
||||
|
||||
, "exchanges_settings": {
|
||||
|
||||
"COINBASE_AT": {
|
||||
"accounting": {
|
||||
"enabled": true
|
||||
, "streaming": false
|
||||
}
|
||||
, "credentials_key": {
|
||||
"read_only": "COINBASE_ADV_RO"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"folders": [
|
||||
{
|
||||
"path": ".."
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -43,9 +43,9 @@
|
||||
"md_symbol": "ADAUSDT",
|
||||
"trade_symbol": "ADAUSDT"
|
||||
},
|
||||
"PAIR-AVAX-BUSD": {
|
||||
"md_symbol": "AVAXBUSD",
|
||||
"trade_symbol": "AVAXBUSD"
|
||||
"PAIR-AVAX-USDT": {
|
||||
"md_symbol": "AVAXUSDT",
|
||||
"trade_symbol": "AVAXUSDT"
|
||||
},
|
||||
"PAIR-BCH-BUSD": {
|
||||
"md_symbol": "BCHBUSD",
|
||||
@@ -301,6 +301,25 @@
|
||||
},
|
||||
}
|
||||
}
|
||||
, "COINBASE-FUT": {
|
||||
"instruments": {}
|
||||
, "dynamic_instruments": {
|
||||
# dynamically created instruments (futures)
|
||||
"credentials_key": "COINBASE_ADV_RO"
|
||||
"class": "cvttpy_trading.exchanges.coinbase.futures.market.InstrumentLoader"
|
||||
, "api": {
|
||||
"REST": {
|
||||
"products_method": "GET"
|
||||
, "products_url": "https://api.coinbase.com/api/v3/brokerage/products"
|
||||
, "futures_params": {
|
||||
"product_type": "FUTURE"
|
||||
, "contract_expiry_type": "EXPIRING"
|
||||
, "expiring_contract_status": "STATUS_UNEXPIRED"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
, "GEMINI": {
|
||||
"instruments": {
|
||||
# --- PAIRs
|
||||
@@ -435,7 +454,8 @@
|
||||
, "quantity_precision": "0.00001"
|
||||
}
|
||||
}
|
||||
} , "OKX": {
|
||||
}
|
||||
, "OKX": {
|
||||
"instruments": {
|
||||
# --- PAIRs
|
||||
"PAIR-BTC-USDT": {
|
||||
|
||||
+396
-276
@@ -3,17 +3,103 @@
|
||||
{
|
||||
"__DUMMY__": {}
|
||||
# ----------------------------- A
|
||||
, "ALPACA_SNDBX": {
|
||||
, "ALPACA_PROD": {
|
||||
# https://docs.alpaca.markets/reference/
|
||||
"exchange_id": "ALPACA"
|
||||
, "name": "Alpaca Trading"
|
||||
, "type": "EQUITY"
|
||||
|
||||
, "cred_key": "ALPACA_SANDBOX"
|
||||
, "order_entry": {
|
||||
"credentials_key": "ALPACA_PROD"
|
||||
, "class": "cvttpy_trading.exchanges.alpaca.oe_client.AlpacaOrderEntryClient"
|
||||
|
||||
# D E P R E C A T E D
|
||||
, "REST": {
|
||||
"submit_order_url": ["POST", "https://api.alpaca.markets/v2/orders"]
|
||||
, "orders_url": ["GET", "https://api.alpaca.markets/v2/orders"]
|
||||
, "order_status": ["GET", "https://api.alpaca.markets/v2/orders/{order_id}"]
|
||||
, "cancel_order_url": ["DELETE", "https://api.alpaca.markets/v2/orders/{order_id}"]
|
||||
, "cancel_all_url": ["DELETE", "https://api.alpaca.markets/v2/orders"]
|
||||
}
|
||||
, "ws_url": ["WSS", "wss://api.alpaca.markets/stream"]
|
||||
# D E P R E C A T E D
|
||||
|
||||
, "api": {
|
||||
"web_socket": {
|
||||
"url": "wss://api.alpaca.markets/stream"
|
||||
}
|
||||
, "REST": {
|
||||
"submit_order_url": ["POST", "https://api.alpaca.markets/v2/orders"]
|
||||
, "orders_url": ["GET", "https://api.alpaca.markets/v2/orders"]
|
||||
, "order_status": ["GET", "https://api.alpaca.markets/v2/orders/{order_id}"]
|
||||
, "cancel_order_url": ["DELETE", "https://api.alpaca.markets/v2/orders/{order_id}"]
|
||||
, "cancel_all_url": ["DELETE", "https://api.alpaca.markets/v2/orders"]
|
||||
}
|
||||
}
|
||||
}
|
||||
, "mktdata" : {
|
||||
"class": "cvttpy_trading.exchanges.alpaca.mkt_data.AlpacaStockFeed"
|
||||
, "reconnect_secs": 2.0
|
||||
|
||||
# D E P R E C A T E D
|
||||
, "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://api.alpaca.markets/v2/assets"]
|
||||
# , "assets": ["GET", "https://data.alpaca.markets/v2/assets"]
|
||||
}
|
||||
# D E P R E C A T E D
|
||||
|
||||
, "api": {
|
||||
"web_socket": {
|
||||
# "wss://stream.data.alpaca.markets/v2/sip"
|
||||
"url": "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://api.alpaca.markets/v2/assets"]
|
||||
# , "assets": ["GET", "https://data.alpaca.markets/v2/assets"]
|
||||
}
|
||||
}
|
||||
}
|
||||
, "accounting": {
|
||||
"class": "cvttpy_trading.exchanges.alpaca.acct_client.AlpacaAccounting"
|
||||
|
||||
# D E P R E C A T E D
|
||||
, "REST": {
|
||||
"balances_url": ["GET", "https://api.alpaca.markets/v2/positions"]
|
||||
, "account_info_url": ["GET", "https://api.alpaca.markets/v2/account"]
|
||||
, "trades_url": ["GET", "https://api.alpaca.markets/v2/account/activities/FILL"]
|
||||
}
|
||||
# D E P R E C A T E D
|
||||
|
||||
, "api": {
|
||||
"REST": {
|
||||
"balances_url": ["GET", "https://api.alpaca.markets/v2/positions"]
|
||||
, "account_info_url": ["GET", "https://api.alpaca.markets/v2/account"]
|
||||
, "trades_url": ["GET", "https://api.alpaca.markets/v2/account/activities/FILL"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
, "ALPACA_SNDBX": {
|
||||
# https://docs.alpaca.markets/reference/
|
||||
"exchange_id": "ALPACA"
|
||||
, "name": "Alpaca Trading"
|
||||
, "type": "EQUITY"
|
||||
|
||||
|
||||
, "order_entry": {
|
||||
"class": "cvttpy.exchanges.alpaca.oe_client.AlpacaOrderEntryClient"
|
||||
"credentials_key": "ALPACA_SANDBOX"
|
||||
, "class": "cvttpy_trading.exchanges.alpaca.oe_client.AlpacaOrderEntryClient"
|
||||
|
||||
# D E P R E C A T E D
|
||||
, "REST": {
|
||||
"submit_order_url": ["POST", "https://paper-api.alpaca.markets/v2/orders"]
|
||||
, "orders_url": ["GET", "https://paper-api.alpaca.markets/v2/orders"]
|
||||
@@ -22,11 +108,26 @@
|
||||
, "cancel_all_url": ["DELETE", "https://paper-api.alpaca.markets/v2/orders"]
|
||||
}
|
||||
, "ws_url": ["WSS", "wss://paper-api.alpaca.markets/stream"]
|
||||
# D E P R E C A T E D
|
||||
|
||||
, "api": {
|
||||
"web_socket": {
|
||||
"url": "wss://paper-api.alpaca.markets/stream"
|
||||
}
|
||||
, "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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
, "mktdata" : {
|
||||
"class": "cvttpy.exchanges.alpaca.mkt_data.AlpacaStockFeed"
|
||||
"class": "cvttpy_trading.exchanges.alpaca.mkt_data.AlpacaMdFeed"
|
||||
, "reconnect_secs": 2.0
|
||||
|
||||
# D E P R E C A T E D
|
||||
# , "ws_url": ["WSS", "wss://stream.data.alpaca.markets/v2/sip"]
|
||||
, "ws_url": ["WSS", "wss://stream.data.alpaca.markets/v2/iex"]
|
||||
, "REST": {
|
||||
@@ -37,120 +138,39 @@
|
||||
, "assets": ["GET", "https://paper-api.alpaca.markets/v2/assets"]
|
||||
# , "assets": ["GET", "https://data.alpaca.markets/v2/assets"]
|
||||
}
|
||||
# D E P R E C A T E D
|
||||
|
||||
, "api": {
|
||||
"web_socket": {
|
||||
"url": "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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
, "accounting": {
|
||||
"class": "cvttpy.exchanges.alpaca.account.AlpacaAccounting"
|
||||
"credentials_key": "ALPACA_SANDBOX"
|
||||
, "class": "cvttpy_trading.exchanges.alpaca.acct_client.AlpacaAccounting"
|
||||
|
||||
# D E P R E C A T E D
|
||||
, "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"
|
||||
# D E P R E C A T E D
|
||||
|
||||
, "cred_key": "ALPACA_SANDBOX"
|
||||
|
||||
, "order_entry": {
|
||||
"class": "cvttpy.exchanges.alpaca.oe_client.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_SNDBX"
|
||||
|
||||
# allow direct REST requests
|
||||
, "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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
, "ALPACA-MD-REST-ONLY": {
|
||||
# https://docs.alpaca.markets/reference/
|
||||
"exchange_id": "ALPACA"
|
||||
, "name": "Alpaca Trading"
|
||||
, "type": "EQUITY"
|
||||
|
||||
, "cred_key": "ALPACA_SANDBOX"
|
||||
|
||||
, "order_entry": {
|
||||
}
|
||||
, "mktdata" : {
|
||||
"class": "cvttpy.exchanges.alpaca.mkt_data.AlpacaStockFeed"
|
||||
|
||||
, "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": {
|
||||
}
|
||||
}
|
||||
, "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.oe_client.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"]
|
||||
, "api": {
|
||||
"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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -160,31 +180,19 @@
|
||||
, "name": "Bitstamp"
|
||||
, "type": "SPOT"
|
||||
|
||||
, "module" : "cvttpy.oms.exchange"
|
||||
, "connector_class" : "MdOnlyExchangeConnector"
|
||||
|
||||
, "mktdata" : {
|
||||
"class": "cvttpy.exchanges.bitstamp.mkt_data.BitstampMdFeed"
|
||||
"class": "cvttpy_trading.exchanges.bitstamp.mkt_data.BitstampMdFeed"
|
||||
, "reconnect_secs": 2
|
||||
|
||||
# D E P R E C A T E D
|
||||
, "ws_url": ["WSS", "wss://ws.bitstamp.net"]
|
||||
}
|
||||
}
|
||||
, "BNBSPOT": {
|
||||
"exchange_id": "BNBSPOT"
|
||||
, "name": "Binance Spot"
|
||||
, "type": "SPOT"
|
||||
# D E P R E C A T E D
|
||||
|
||||
, "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"],
|
||||
, "api": {
|
||||
"web_socket": {
|
||||
"url": "wss://ws.bitstamp.net"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -194,41 +202,59 @@
|
||||
, "type": "FUTURES"
|
||||
|
||||
, "mktdata" : {
|
||||
"class": "cvttpy.exchanges.binance.futures.mkt_data.BnbFutMultiWsFeed"
|
||||
"class": "cvttpy_trading.exchanges.binance.futures.mkt_data.BnbFutMktDataFeed"
|
||||
, "max_connections": 10
|
||||
, "reconnect_secs": 2.0
|
||||
|
||||
# D E P R E C A T E D
|
||||
, "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"],
|
||||
}
|
||||
# D E P R E C A T E D
|
||||
|
||||
, "api": {
|
||||
"web_socket": {
|
||||
"url": "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"
|
||||
|
||||
, "BNBSPOT": {
|
||||
"exchange_id": "BNBSPOT"
|
||||
, "name": "Binance Spot"
|
||||
, "type": "SPOT"
|
||||
|
||||
, "mktdata" : {
|
||||
"class": "cvttpy.exchanges.binance.futures.mkt_data.BinanceFuturesFeedWs2"
|
||||
"class": "cvttpy_trading.exchanges.binance.spot.mkt_data.BnbSpotMktDataFeed"
|
||||
, "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"
|
||||
# D E P R E C A T E D
|
||||
, "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"],
|
||||
}
|
||||
# D E P R E C A T E D
|
||||
|
||||
, "api": {
|
||||
"web_socket": {
|
||||
"url": "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"],
|
||||
}
|
||||
}
|
||||
|
||||
, "mktdata" : {
|
||||
"class": "cvttpy.exchanges.book_top_feed.mkt_data.BookTopFeedClient"
|
||||
, "mmap_file": "/tmp/BNBFUT.MD.dat"
|
||||
}
|
||||
}
|
||||
, "BNBSPOT_US": {
|
||||
@@ -237,15 +263,26 @@
|
||||
, "type": "SPOT"
|
||||
|
||||
, "mktdata" : {
|
||||
"class": "cvttpy.exchanges.binance.spot.mkt_data.BinanceSpotFeed"
|
||||
"class": "cvttpy_trading.exchanges.binance.spot.mkt_data.BnbSpotMktDataFeed"
|
||||
, "reconnect_secs": 10
|
||||
|
||||
# D E P R E C A T E D
|
||||
, "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"],
|
||||
}
|
||||
# D E P R E C A T E D
|
||||
|
||||
, "api": {
|
||||
"web_socket": {
|
||||
"url": "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"],
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
, "COINBASE_AT": {
|
||||
@@ -253,99 +290,112 @@
|
||||
, "name": "Coinbase Advanced Trade"
|
||||
, "type": "SPOT"
|
||||
|
||||
, "order_entry": {
|
||||
"class": "cvttpy.exchanges.coinbase.spot.oe_client.CoinbaseSpotOEClient"
|
||||
|
||||
, "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"
|
||||
"class": "cvttpy_trading.exchanges.coinbase.spot.mkt_data.CoinbaseSpotMdFeed"
|
||||
# "class": "cvttpy_trading.exchanges.coinbase.spot.mkt_data.CoinbaseMdFeed"
|
||||
|
||||
, "reconnect_secs": 2
|
||||
, "max_connections": 10
|
||||
, "price_throttle": true
|
||||
|
||||
, "ws_url": ["WSS", "wss://ws-feed.exchange.coinbase.com"]
|
||||
, "api": {
|
||||
"REST": {
|
||||
"products_url": "https://api.exchange.coinbase.com/products"
|
||||
},
|
||||
"web_socket": {
|
||||
"url": "wss://ws-feed.exchange.coinbase.com"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
, "COINBASE_AT-MDPORTAL": {
|
||||
"exchange_id": "COINBASE"
|
||||
, "name": "Coinbase Advanced Trade"
|
||||
, "type": "SPOT"
|
||||
|
||||
, "order_entry": {
|
||||
"class": "cvttpy.exchanges.coinbase.spot.oe_client.CoinbaseSpotOEClient"
|
||||
"credentials_key": "COINBASE_ADV_TRD"
|
||||
"class": "cvttpy_trading.exchanges.coinbase.spot.oe_client.CoinbaseSpotOEClient"
|
||||
|
||||
, "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"]
|
||||
, "api": {
|
||||
"web_socket": {
|
||||
"url": "wss://advanced-trade-ws.coinbase.com"
|
||||
}
|
||||
, "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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
, "mktdata" : {
|
||||
"class": "cvttpy.exchanges.proxies.md_portal_clnt.mkt_data.MktDataPortalFeed"
|
||||
, "portal_name": "MD_PORTAL_COINBS_01"
|
||||
, "accounting": {
|
||||
"credentials_key": "COINBASE_ADV_RO"
|
||||
"class": "cvttpy_trading.exchanges.coinbase.spot.account.CoinbaseSpotAccounting"
|
||||
|
||||
, "api": {
|
||||
"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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
, "COINBASE_SIM": {
|
||||
"exchange_id": "COINBASE"
|
||||
, "name": "Coinbase Advanced Trade (Simulation)"
|
||||
, "type": "SPOT"
|
||||
|
||||
, "COINBASE_FUT": {
|
||||
"exchange_id": "COINBASE-FUT"
|
||||
, "name": "Coinbase Advanced Trade Futures"
|
||||
, "type": "FUTURES"
|
||||
|
||||
, "mktdata" : {
|
||||
"class": "cvttpy.exchanges.mkt_simulator.md_client.MktSimMdClientFeed"
|
||||
"ws_url": ["WS", "ws://localhost:8080/ws"]
|
||||
}
|
||||
"credentials_key": "COINBASE_ADV_TRD"
|
||||
"class": "cvttpy_trading.exchanges.coinbase.futures.mkt_data.CoinbaseFutMdFeed"
|
||||
|
||||
, "order_entry": {
|
||||
"class": "cvttpy.exchanges.mkt_simulator.oe_client.MarketSimulatorOEClient"
|
||||
, "reconnect_secs": 2
|
||||
, "max_connections": 10
|
||||
, "price_throttle": true
|
||||
|
||||
, "REST": {
|
||||
"new_order_url": ["POST", "http://localhost:8181/order"]
|
||||
, "cancel_order_url": ["POST", "http://localhost:8181/cancel"]
|
||||
, "cancel_all_url": ["POST", "http://localhost:8181/cancel_all"]
|
||||
, "open_orders_url": ["GET", "http://localhost:8181/open_orders"]
|
||||
, "order_status_url": ["GET", "http://localhost:8181/order_status"]
|
||||
},
|
||||
"ws_url": ["WSS", "ws://localhost:8180/ws"]
|
||||
}
|
||||
, "accounting": {
|
||||
"class": "cvttpy.exchanges.mkt_simulator.acct_client.MktSimAccounting"
|
||||
, "REST": {
|
||||
"positions_url": ["GET", "http://localhost:8182/positions"]
|
||||
, "trades_url": ["GET", "http://localhost:8182/trades"]
|
||||
, "api": {
|
||||
"REST": {
|
||||
"products": {
|
||||
"method": "GET"
|
||||
, "url": "https://api.coinbase.com/api/v3/brokerage/products"
|
||||
, "params": {
|
||||
"product_type": "FUTURE"
|
||||
, "contract_expiry_type": "EXPIRING"
|
||||
, "expiring_contract_status": "STATUS_UNEXPIRED"
|
||||
}
|
||||
}
|
||||
},
|
||||
"web_socket": {
|
||||
"url": "wss://advanced-trade-ws.coinbase.com"
|
||||
}
|
||||
}
|
||||
}
|
||||
, "order_entry": {
|
||||
"credentials_key": "COINBASE_ADV_TRD"
|
||||
"class": "cvttpy_trading.exchanges.coinbase.spot.oe_client.CoinbaseSpotOEClient"
|
||||
|
||||
, "api": {
|
||||
"web_socket": {
|
||||
"url": "wss://advanced-trade-ws.coinbase.com"
|
||||
}
|
||||
, "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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
, "accounting": {
|
||||
"credentials_key": "COINBASE_ADV_RO"
|
||||
"class": "cvttpy_trading.exchanges.coinbase.spot.account.CoinbaseSpotAccounting"
|
||||
|
||||
, "api": {
|
||||
"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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
# ---------------------------- G
|
||||
, "GEMINI": {
|
||||
@@ -354,52 +404,60 @@
|
||||
, "name": "Gemini"
|
||||
, "type": "SPOT"
|
||||
|
||||
, "module" : "cvttpy.oms.exchange"
|
||||
, "connector_class" : "MdOnlyExchangeConnector"
|
||||
|
||||
, "mktdata" : {
|
||||
"class": "cvttpy.exchanges.gemini.mkt_data.GeminiMdFeed"
|
||||
"class": "cvttpy_trading.exchanges.gemini.mkt_data.GeminiMdFeed"
|
||||
, "reconnect_secs": 1
|
||||
|
||||
# D E P R E C A T E D
|
||||
, "ws_url": ["WSS" , "wss://api.gemini.com/v2/marketdata"]
|
||||
}
|
||||
# D E P R E C A T E D
|
||||
|
||||
# , "REST": {
|
||||
# "open_orders_url": ["POST", "https://api.gemini.com/v1/orders"]
|
||||
# , "order_status_url": ["POST", "https://api.gemini.com/v1/order/status"]
|
||||
# , "cancel_all_url": ["POST", "https://api.gemini.com/v1/order/cancel/all"]
|
||||
# , "balances_url": ["POST", "https://api.gemini.com/v1/balances"]
|
||||
# , "positions_url": ["POST", "https://api.gemini.com/v1/positions"]
|
||||
# , "trades_url": ["POST", "https://api.gemini.com/v1/mytrades"]
|
||||
# , "symbol_url": ["GET", "https://api.gemini.com/v1/symbols/details"]
|
||||
# , "margin_url": ["POST", "https://api.gemini.com/v1/margin"]
|
||||
# }
|
||||
, "api": {
|
||||
"web_socket": {
|
||||
"url": "wss://api.gemini.com/v2/marketdata"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
, "GEMINI-SNDBX": {
|
||||
# https://docs.gemini.com/rest-api
|
||||
"exchange_id": "GEMINI"
|
||||
, "name": "Gemini"
|
||||
, "type": "SPOT"
|
||||
|
||||
, "module" : "cvttpy.oms.exchange"
|
||||
, "connector_class" : "MdOnlyExchangeConnector"
|
||||
|
||||
, "mktdata" : {
|
||||
"class": "cvttpy.exchanges.gemini.mkt_data.GeminiMdFeed"
|
||||
"class": "cvttpy_trading.exchanges.gemini.mkt_data.GeminiMdFeed"
|
||||
, "reconnect_secs": 1
|
||||
|
||||
# D E P R E C A T E D
|
||||
, "ws_url": ["WSS" , "wss://api.sandbox.gemini.com/v2/marketdata"]
|
||||
# D E P R E C A T E D
|
||||
|
||||
, "api": {
|
||||
"web_socket": {
|
||||
"url": "wss://api.sandbox.gemini.com/v2/marketdata"
|
||||
}
|
||||
}
|
||||
}
|
||||
, "order_entry": {
|
||||
# D E P R E C A T E D
|
||||
"REST": {
|
||||
"order_status_url": ["POST", "https://api.sandbox.gemini.com/v1/order/status"]
|
||||
, "cancel_all_url": ["POST", "https://api.sandbox.gemini.com/v1/order/cancel/all"]
|
||||
}
|
||||
# D E P R E C A T E D
|
||||
|
||||
|
||||
, "api": {
|
||||
"REST": {
|
||||
"order_status_url": ["POST", "https://api.sandbox.gemini.com/v1/order/status"]
|
||||
, "cancel_all_url": ["POST", "https://api.sandbox.gemini.com/v1/order/cancel/all"]
|
||||
}
|
||||
}
|
||||
}
|
||||
, "accounting": {
|
||||
"class": "cvttpy.exchanges.gemini.account.GeminiExchAccounting"
|
||||
"class": "cvttpy_trading.exchanges.gemini.account.GeminiExchAccounting"
|
||||
# D E P R E C A T E D
|
||||
, "REST": {
|
||||
"open_orders_url": ["POST", "https://api.sandbox.gemini.com/v1/orders"]
|
||||
, "order_status_url": ["POST", "https://api.sandbox.gemini.com/v1/order/status"]
|
||||
@@ -409,6 +467,19 @@
|
||||
, "symbol_url": ["GET", "https://api.sandbox.gemini.com/v1/symbols/details"]
|
||||
, "margin_url": ["POST", "https://api.sandbox.gemini.com/v1/margin"]
|
||||
}
|
||||
# D E P R E C A T E D
|
||||
|
||||
, "api": {
|
||||
"REST": {
|
||||
"open_orders_url": ["POST", "https://api.sandbox.gemini.com/v1/orders"]
|
||||
, "order_status_url": ["POST", "https://api.sandbox.gemini.com/v1/order/status"]
|
||||
, "balances_url": ["POST", "https://api.sandbox.gemini.com/v1/balances"]
|
||||
, "positions_url": ["POST", "https://api.sandbox.gemini.com/v1/positions"]
|
||||
, "trades_url": ["POST", "https://api.sandbox.gemini.com/v1/mytrades"]
|
||||
, "symbol_url": ["GET", "https://api.sandbox.gemini.com/v1/symbols/details"]
|
||||
, "margin_url": ["POST", "https://api.sandbox.gemini.com/v1/margin"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
# ---------------------------- K
|
||||
@@ -418,48 +489,24 @@
|
||||
, "type": "SPOT"
|
||||
|
||||
, "mktdata" : {
|
||||
"class": "cvttpy.exchanges.kraken.mkt_data.KrakenMdFeed"
|
||||
"class": "cvttpy_trading.exchanges.kraken.mkt_data.KrakenMdFeed"
|
||||
, "max_connections": 10
|
||||
, "reconnect_secs": 2.0
|
||||
|
||||
|
||||
# D E P R E C A T E D
|
||||
, "ws_url": ["WSS", "wss://ws.kraken.com/v2"]
|
||||
, "REST": {}
|
||||
# D E P R E C A T E D
|
||||
|
||||
, "api": {
|
||||
"web_socket": {
|
||||
"url": "wss://ws.kraken.com/v2"
|
||||
}
|
||||
, "REST": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
# ---------------------------- M
|
||||
, "MD_PORTAL_ALPACA_SNDBX": {
|
||||
"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-eqty-01"
|
||||
, "channel_prefix": "MD_ALPACA_SNDBX"
|
||||
}
|
||||
}
|
||||
, "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"
|
||||
}
|
||||
}
|
||||
# , "MARKET_SIMULATOR": {
|
||||
# "exchange_id": "MARKET_SIMULATOR"
|
||||
# , "name": "Market Simulator"
|
||||
# , "type": "SIM"
|
||||
|
||||
# , "mktdata" : {
|
||||
# "class": "cvttpy.exchanges.mkt_simulator.md_client.MktSimMdClientFeed"
|
||||
# "ws_url": ["WS", "ws://localhost:8080/ws"]
|
||||
# }
|
||||
# }
|
||||
# ---------------------------- O
|
||||
, "OKX": {
|
||||
"exchange_id": "OKX"
|
||||
@@ -467,14 +514,87 @@
|
||||
, "type": "SPOT"
|
||||
|
||||
, "mktdata" : {
|
||||
"class": "cvttpy.exchanges.okx.mkt_data.OkxMultiWsFeed"
|
||||
"class": "cvttpy_trading.exchanges.okx.mkt_data.OkxMdFeed"
|
||||
, "max_connections": 10
|
||||
, "reconnect_secs": 2.0
|
||||
|
||||
|
||||
# D E P R E C A T E D
|
||||
, "ws_url": ["WSS", "wss://ws.okx.com:8443/ws/v5/public"]
|
||||
, "REST": {}
|
||||
# D E P R E C A T E D
|
||||
|
||||
, "api": {
|
||||
"web_socket": {
|
||||
"url": "wss://ws.okx.com:8443/ws/v5/public"
|
||||
}
|
||||
, "REST": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# , "ALPACA_SIM": {
|
||||
# # https://docs.alpaca.markets/reference/
|
||||
# "exchange_id": "ALPACA"
|
||||
# , "name": "Alpaca Trading"
|
||||
# , "type": "EQUITY"
|
||||
|
||||
|
||||
# , "mktdata" : {
|
||||
# "class": "cvttpy_trading.exchanges.mkt_simulator.md_client.MktSimMdClientFeed"
|
||||
# "ws_url": ["WS", "ws://localhost:10180/ws"]
|
||||
# }
|
||||
|
||||
# , "order_entry": {
|
||||
# "class": "cvttpy_trading.exchanges.mkt_simulator.oe_client.MarketSimulatorOEClient"
|
||||
|
||||
# , "REST": {
|
||||
# "new_order_url": ["POST", "http://localhost:10182/order"]
|
||||
# , "cancel_order_url": ["POST", "http://localhost:10182/cancel"]
|
||||
# , "cancel_all_url": ["POST", "http://localhost:10182/cancel_all"]
|
||||
# , "open_orders_url": ["GET", "http://localhost:10182/open_orders"]
|
||||
# , "order_status_url": ["GET", "http://localhost:10182/order_status"]
|
||||
# },
|
||||
# "ws_url": ["WSS", "ws://localhost:10181/ws"]
|
||||
# }
|
||||
# , "accounting": {
|
||||
# "class": "cvttpy_trading.exchanges.mkt_simulator.acct_client.MktSimAccounting"
|
||||
# , "REST": {
|
||||
# "positions_url": ["GET", "http://localhost:10083/positions"]
|
||||
# , "trades_url": ["GET", "http://localhost:10083/trades"]
|
||||
# }
|
||||
# }
|
||||
# }
|
||||
|
||||
# , "COINBASE_SIM": {
|
||||
# "exchange_id": "COINBASE"
|
||||
# , "name": "Coinbase Advanced Trade (Simulation)"
|
||||
# , "type": "SPOT"
|
||||
|
||||
|
||||
# , "mktdata" : {
|
||||
# "class": "cvttpy_trading.exchanges.mkt_simulator.md_client.MktSimMdClientFeed"
|
||||
# "ws_url": ["WS", "ws://localhost:8080/ws"]
|
||||
# }
|
||||
|
||||
# , "order_entry": {
|
||||
# "class": "cvttpy_trading.exchanges.mkt_simulator.oe_client.MarketSimulatorOEClient"
|
||||
|
||||
# , "REST": {
|
||||
# "new_order_url": ["POST", "http://localhost:8181/order"]
|
||||
# , "cancel_order_url": ["POST", "http://localhost:8181/cancel"]
|
||||
# , "cancel_all_url": ["POST", "http://localhost:8181/cancel_all"]
|
||||
# , "open_orders_url": ["GET", "http://localhost:8181/open_orders"]
|
||||
# , "order_status_url": ["GET", "http://localhost:8181/order_status"]
|
||||
# },
|
||||
# "ws_url": ["WSS", "ws://localhost:8180/ws"]
|
||||
# }
|
||||
# , "accounting": {
|
||||
# "class": "cvttpy_trading.exchanges.mkt_simulator.acct_client.MktSimAccounting"
|
||||
# , "REST": {
|
||||
# "positions_url": ["GET", "http://localhost:8182/positions"]
|
||||
# , "trades_url": ["GET", "http://localhost:8182/trades"]
|
||||
# }
|
||||
# }
|
||||
# }
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
@var CONFIG_SERVICE=cloud23.cvtt.vpn:6789
|
||||
{
|
||||
"assets": @inc=http://${CONFIG_SERVICE}/refdata/assets
|
||||
, "instruments": @inc=http://${CONFIG_SERVICE}/refdata/instruments
|
||||
, "exchanges": @inc=http://${CONFIG_SERVICE}/refdata/exchanges
|
||||
, "exchange_instruments": @inc=http://${CONFIG_SERVICE}/refdata/exchange_instruments
|
||||
, "dynamic_instrument_exchanges": ["ALPACA"]
|
||||
"assets": @inc=http://@env{CONFIG_SERVICE}/refdata/assets
|
||||
, "instruments": @inc=http://@env{CONFIG_SERVICE}/refdata/instruments
|
||||
, "exchanges": @inc=http://@env{CONFIG_SERVICE}/refdata/exchanges
|
||||
, "exchange_instruments": @inc=http://@env{CONFIG_SERVICE}/refdata/exchange_instruments
|
||||
, "instant_exch_inst_ids": ["ALPACA"]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
services:
|
||||
config_service:
|
||||
image: cloud21.cvtt.vpn:5500/config_service:latest
|
||||
container_name: cvtt_config_service
|
||||
user: 1001:1001
|
||||
restart: always
|
||||
#network_mode: host
|
||||
volumes:
|
||||
- /works/docker/config_service/data:/app/data
|
||||
- /works/logs:/logs
|
||||
ports:
|
||||
- 6789:6789
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
version: "3.8"
|
||||
#==================================================
|
||||
services:
|
||||
config_service:
|
||||
image: cloud21.cvtt.vpn:5500/config_service:latest
|
||||
container_name: cvtt_config_service
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /home/cvtt/prod/config_service/data:/app/data
|
||||
- /home/cvtt/prod/logs:/logs
|
||||
ports:
|
||||
- 6789:6789
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd $(dirname ${0})
|
||||
docker compose down
|
||||
docker compose up -d --pull=always
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd $(dirname ${0})
|
||||
docker compose up -d --pull=always
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd $(dirname ${0})
|
||||
docker compose down
|
||||
@@ -1,13 +0,0 @@
|
||||
version: "3.8"
|
||||
#==================================================
|
||||
services:
|
||||
relative_liquidity:
|
||||
image: cloud21.cvtt.vpn:5500/relative_liquidity:latest
|
||||
container_name: relative_liquidity_svc
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /home/cvtt/prod/data:/app/data
|
||||
- /home/cvtt/prod/logs:/logs
|
||||
ports:
|
||||
- 5678:5678
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd $(dirname ${0})
|
||||
docker compose down
|
||||
docker compose up -d --pull=always
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd $(dirname ${0})
|
||||
docker compose up -d --pull=always
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd $(dirname ${0})
|
||||
docker compose down
|
||||
@@ -1,10 +0,0 @@
|
||||
version: "3.8"
|
||||
#==================================================
|
||||
services:
|
||||
trading_calendar:
|
||||
image: apptasticsoftware/trading-calendar
|
||||
container_name: trading-calendar
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- 8000:80
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd $(dirname ${0})
|
||||
docker compose down
|
||||
docker compose up -d --pull=always
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd $(dirname ${0})
|
||||
docker compose up -d --pull=always
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd $(dirname ${0})
|
||||
docker compose down
|
||||
Reference in New Issue
Block a user