Compare commits

...

126 Commits

Author SHA1 Message Date
Cryptoval Trading Technologies 33d6ea6da3 20251019 2025-10-19 14:00:01 +00:00
Cryptoval Trading Technologies 1cefe0ec5d 20251019 2025-10-19 13:57:01 +00:00
Cryptoval Trading Technologies bce75504e9 20251019 2025-10-19 13:18:01 +00:00
Cryptoval Trading Technologies ecebd05389 for daily_md_crypto container 0.0.3 2025-10-19 13:15:52 +00:00
Cryptoval Trading Technologies 42491d050c accounting config for coinbase 2025-10-17 19:46:28 +00:00
Cryptoval Trading Technologies 2ebac80d7b 20250926 2025-09-26 16:50:01 +00:00
Cryptoval Trading Technologies 2abce705ee 20250926 2025-09-26 16:49:01 +00:00
Cryptoval Trading Technologies 606f0a685d 20250925 2025-09-25 02:32:01 +00:00
Cryptoval Trading Technologies b2594d75be 20250925 2025-09-25 02:31:01 +00:00
Cryptoval Trading Technologies 7ff811196e 20250921 2025-09-21 00:20:01 +00:00
Cryptoval Trading Technologies 4b0309631e 20250921 2025-09-21 00:19:01 +00:00
Cryptoval Trading Technologies 9b580edf9e 20250921 2025-09-21 00:18:01 +00:00
Cryptoval Trading Technologies 27b46bb5fb 20250921 2025-09-21 00:17:01 +00:00
Cryptoval Trading Technologies e07264da16 20250921 2025-09-21 00:16:01 +00:00
Cryptoval Trading Technologies c9bbcfdf8b 20250921 2025-09-21 00:15:01 +00:00
Cryptoval Trading Technologies 4000cb2cec 20250921 2025-09-21 00:14:01 +00:00
Cryptoval Trading Technologies 13dc133043 20250921 2025-09-21 00:13:01 +00:00
Cryptoval Trading Technologies 84bd268ac4 20250921 2025-09-21 00:12:01 +00:00
Cryptoval Trading Technologies 357faf0442 20250921 2025-09-21 00:11:01 +00:00
Cryptoval Trading Technologies 6d073efb04 20250918 2025-09-18 22:20:01 +00:00
Cryptoval Trading Technologies b90e1f55b2 20250918 2025-09-18 22:10:01 +00:00
Cryptoval Trading Technologies dd5cb32d0b 20250918 2025-09-18 22:09:01 +00:00
Cryptoval Trading Technologies ae8d85b216 20250915 2025-09-15 20:11:01 +00:00
Cryptoval Trading Technologies 92466faa3e 20250915 2025-09-15 20:10:01 +00:00
Cryptoval Trading Technologies 64aaf6d3c4 20250911 2025-09-11 00:22:01 +00:00
Cryptoval Trading Technologies 36c12092bb 20250911 2025-09-11 00:21:01 +00:00
Cryptoval Trading Technologies 6f0c8acefc 20250910 2025-09-10 23:17:02 +00:00
Cryptoval Trading Technologies a0464ad59e 20250909 2025-09-09 23:42:01 +00:00
Cryptoval Trading Technologies d5b4886202 20250909 2025-09-09 23:41:01 +00:00
Cryptoval Trading Technologies 6371a713bc 20250902 2025-09-02 18:37:01 +00:00
Cryptoval Trading Technologies 1a6c940e6d 20250902 2025-09-02 18:36:01 +00:00
Cryptoval Trading Technologies 35e037d2bf 20250902 2025-09-02 18:15:01 +00:00
Cryptoval Trading Technologies 4ad394e28b 20250902 2025-09-02 18:14:01 +00:00
Cryptoval Trading Technologies 71381027fd 20250902 2025-09-02 18:06:01 +00:00
Cryptoval Trading Technologies 58d298cc58 20250831 2025-08-31 00:20:01 +00:00
Cryptoval Trading Technologies ab62540c99 20250828 2025-08-28 21:07:01 +00:00
Cryptoval Trading Technologies 1454db27fb 20250828 2025-08-28 01:17:01 +00:00
Cryptoval Trading Technologies aced092d0a 20250828 2025-08-28 00:58:01 +00:00
Cryptoval Trading Technologies 3d8c3114ab 20250827 2025-08-27 23:26:01 +00:00
Cryptoval Trading Technologies e59c4431de 20250827 2025-08-27 22:56:01 +00:00
Cryptoval Trading Technologies edfdc4aee8 20250827 2025-08-27 22:29:01 +00:00
Cryptoval Trading Technologies b8d3fd905a 20250827 2025-08-27 22:26:01 +00:00
Cryptoval Trading Technologies fa098a79a0 20250827 2025-08-27 21:51:01 +00:00
Cryptoval Trading Technologies fa94cba379 20250827 2025-08-27 21:44:01 +00:00
Cryptoval Trading Technologies 561251fec7 20250827 2025-08-27 21:28:01 +00:00
Cryptoval Trading Technologies 1cef86db6b 20250827 2025-08-27 21:27:01 +00:00
Cryptoval Trading Technologies f52bc56171 20250827 2025-08-27 20:47:01 +00:00
Cryptoval Trading Technologies 9ae93e6132 20250827 2025-08-27 20:46:01 +00:00
Cryptoval Trading Technologies 98e08b86b7 20250827 2025-08-27 20:28:01 +00:00
Cryptoval Trading Technologies f167ee1f71 20250827 2025-08-27 20:27:01 +00:00
Cryptoval Trading Technologies c8c2f08c20 20250827 2025-08-27 20:26:01 +00:00
Cryptoval Trading Technologies 92cfbc36a6 20250826 2025-08-26 22:49:01 +00:00
Cryptoval Trading Technologies 3e774723c1 20250826 2025-08-26 22:48:01 +00:00
Cryptoval Trading Technologies 420db0fe4e 20250826 2025-08-26 22:47:01 +00:00
Cryptoval Trading Technologies 5c028d6236 20250826 2025-08-26 22:46:01 +00:00
Cryptoval Trading Technologies fb390fa5e7 20250826 2025-08-26 22:26:01 +00:00
Cryptoval Trading Technologies e08805c75f 20250825 2025-08-25 22:29:02 +00:00
Cryptoval Trading Technologies fed37d0729 20250825 2025-08-25 22:26:01 +00:00
Cryptoval Trading Technologies f5839e2d76 20250823 2025-08-23 01:15:01 +00:00
Cryptoval Trading Technologies 789e05c539 20250823 2025-08-23 01:14:01 +00:00
Cryptoval Trading Technologies a28a263aea 20250823 2025-08-23 00:55:01 +00:00
Cryptoval Trading Technologies 6b962a489e 20250823 2025-08-23 00:54:01 +00:00
Cryptoval Trading Technologies 9d531a87e6 20250823 2025-08-23 00:53:01 +00:00
Cryptoval Trading Technologies 7ead186330 20250823 2025-08-23 00:52:01 +00:00
Cryptoval Trading Technologies 88fccf318e 20250823 2025-08-23 00:51:01 +00:00
Cryptoval Trading Technologies 0e41203177 20250823 2025-08-23 00:50:01 +00:00
Cryptoval Trading Technologies 27dd217f9a 20250823 2025-08-23 00:49:01 +00:00
Cryptoval Trading Technologies 69f9ea6e6e 20250823 2025-08-23 00:43:01 +00:00
Cryptoval Trading Technologies b3b6ee4b47 20250822 2025-08-22 22:01:01 +00:00
Cryptoval Trading Technologies 5aaa4ff2a3 20250822 2025-08-22 21:59:01 +00:00
Cryptoval Trading Technologies fb56028485 20250822 2025-08-22 21:58:01 +00:00
Cryptoval Trading Technologies 3dcdcddba9 20250822 2025-08-22 21:53:01 +00:00
Cryptoval Trading Technologies 42a47c68a6 20250822 2025-08-22 21:52:01 +00:00
Cryptoval Trading Technologies 20270da409 20250819 2025-08-19 20:29:01 +00:00
Cryptoval Trading Technologies af375e9587 20250819 2025-08-19 20:28:01 +00:00
Cryptoval Trading Technologies f8fad120d7 20250819 2025-08-19 20:27:01 +00:00
Cryptoval Trading Technologies 467fa58d32 20250819 2025-08-19 17:11:01 +00:00
Cryptoval Trading Technologies 313f535887 20250819 2025-08-19 17:10:01 +00:00
Cryptoval Trading Technologies 3d18791797 20250819 2025-08-19 02:47:01 +00:00
Cryptoval Trading Technologies 1bacfb6c42 20250819 2025-08-19 02:43:01 +00:00
Cryptoval Trading Technologies 89dd815ea1 20250819 2025-08-19 02:41:01 +00:00
Cryptoval Trading Technologies e1c581afcb 20250819 2025-08-19 02:40:01 +00:00
Cryptoval Trading Technologies d96ae9c408 20250819 2025-08-19 02:39:01 +00:00
Cryptoval Trading Technologies 92a561beec 20250814 2025-08-14 19:40:01 +00:00
Cryptoval Trading Technologies 76cb915702 20250812 2025-08-12 22:23:07 +00:00
Cryptoval Trading Technologies c4961217d7 20250812 2025-08-12 21:47:13 +00:00
Cryptoval Trading Technologies cab71ef46e 20250812 2025-08-12 21:45:01 +00:00
Cryptoval Trading Technologies bf8540fe4f 20250812 2025-08-12 21:38:46 +00:00
Cryptoval Trading Technologies ce43cc308e 20250812 2025-08-12 21:37:01 +00:00
Cryptoval Trading Technologies 793448f4b9 20250812 2025-08-12 21:36:01 +00:00
Cryptoval Trading Technologies 9d92bb7635 20250812 2025-08-12 21:34:01 +00:00
Cryptoval Trading Technologies d2e036f471 20250809 2025-08-09 21:29:02 +00:00
Cryptoval Trading Technologies 023ce27171 20250809 2025-08-09 01:03:01 +00:00
Cryptoval Trading Technologies 45e23b0c18 20250809 2025-08-09 01:02:01 +00:00
Cryptoval Trading Technologies 1f469ed148 20250809 2025-08-09 01:01:01 +00:00
Cryptoval Trading Technologies 3a260dc8e7 20250807 2025-08-07 20:49:01 +00:00
Cryptoval Trading Technologies ebb9eec8e6 20250807 2025-08-07 20:48:01 +00:00
Cryptoval Trading Technologies 48efb65399 20250728 2025-07-28 00:53:01 +00:00
Cryptoval Trading Technologies 15ef942ab0 getting out of repos to docker 2025-07-24 18:33:45 +00:00
Cryptoval Trading Technologies 34306b6eae progres 2025-07-24 18:21:00 +00:00
Cryptoval Trading Technologies 69ee78424a progress 2025-07-24 18:18:26 +00:00
Cryptoval Trading Technologies ee9d93b5ad separate folder for simulation, standardized REST and WS settings 2025-05-13 15:55:49 +00:00
Cryptoval Trading Technologies bc8c470a1a progress 2025-05-06 16:38:40 +00:00
Cryptoval Trading Technologies 65ea6f14d9 progress 2025-05-01 16:46:07 +00:00
Cryptoval Trading Technologies 0e8ee9434b progress 2025-04-12 01:26:42 +00:00
Cryptoval Trading Technologies ce477ef871 progress 2025-04-12 00:42:24 +00:00
Cryptoval Trading Technologies 6420df5158 progress 2025-03-27 21:29:25 +00:00
Cryptoval Trading Technologies 4d12329f0b progress 2025-03-17 03:22:08 +00:00
Cryptoval Trading Technologies 5796504377 progress 2025-03-13 18:46:35 +00:00
Cryptoval Trading Technologies e7f3e4c5cb progress 2025-03-02 00:41:56 +00:00
Cryptoval Trading Technologies 9feb87df5d progress 2025-02-03 20:21:01 +00:00
Cryptoval Trading Technologies bed7b838ec progress 2025-02-03 19:57:18 +00:00
Cryptoval Trading Technologies 088770e923 . 2025-02-03 05:05:16 +00:00
Cryptoval Trading Technologies b4fc81338d fix 2025-01-29 18:50:27 +00:00
Cryptoval Trading Technologies 06c01115dd progress 2025-01-24 17:28:48 +00:00
Cryptoval Trading Technologies 5e7cf812aa using env for CONFIG_SERVICE 2025-01-24 04:23:56 +00:00
Cryptoval Trading Technologies 50dee15642 progress 2025-01-22 23:09:25 +00:00
Cryptoval Trading Technologies 7cb2e5ed6b progress 2025-01-14 03:25:20 +00:00
Cryptoval Trading Technologies 8ce21f0715 progress 2024-12-30 17:29:26 +00:00
Cryptoval Trading Technologies c1c72b7f80 progress 2024-12-14 01:08:13 +00:00
Cryptoval Trading Technologies 8b109e933c progress 2024-12-03 18:58:02 +00:00
Cryptoval Trading Technologies cf62777b62 . 2024-11-28 18:59:57 +00:00
Cryptoval Trading Technologies 82bc99e00d . 2024-11-26 23:15:11 +00:00
Cryptoval Trading Technologies 8f77238d82 progress 2024-11-01 18:59:46 +00:00
Cryptoval Trading Technologies 64536e2955 hosts added 2024-10-30 19:22:32 +00:00
Cryptoval Trading Technologies d468bdfd79 moving redis to comm 2024-10-26 00:18:37 +00:00
66 changed files with 2601 additions and 920 deletions
+94 -95
View File
@@ -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",
},
},
+85
View File
@@ -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
},
}
+51
View File
@@ -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": []
}
}
+41 -30
View File
@@ -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"
}
}
+251
View File
@@ -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": {
+3 -3
View File
@@ -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"
}
}
+2 -3
View File
@@ -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": {
+5
View File
@@ -0,0 +1,5 @@
{
# ----------------------------------
"refdata": @inc=http://@env{CONFIG_SERVICE}/refdata/refdata
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
}
+1 -2
View File
@@ -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": {
+2 -4
View File
@@ -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": {
+2 -3
View File
@@ -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": {
+4 -5
View File
@@ -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)
+7 -7
View File
@@ -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
View File
@@ -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
# }
# }
}
}
+6
View File
@@ -0,0 +1,6 @@
{
"TimescaleMktDataLoader" : {
"loader_class": "cvttpy.trading.mkt_data.time_series.loaders.tsdb_loader.TsMdLoader",
"credentials_key": "TSDB_MD_CVTTDATA_RO"
}
}
-32
View File
@@ -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
}
}
+8
View File
@@ -0,0 +1,8 @@
{
"PERMISSIVE_RISK_STRATEGY": {
"class": "cvttpy.trading.risk.permissive.PermissiveRiskStrategy"
, "params": {
"dummy": "dummy"
}
}
}
+20 -21
View File
@@ -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
View File
@@ -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"
}
}
}
}
+16 -10
View File
@@ -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": {
+169
View File
@@ -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
}
}
}
+135
View File
@@ -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"
}
}
}
}
-7
View File
@@ -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
}
+6 -6
View File
@@ -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"
# }
}
+7 -7
View File
@@ -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
}
}
+18 -5
View File
@@ -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,
+144
View File
@@ -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"]
}
}
}
}
}
+349
View File
@@ -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 -3
View File
@@ -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 -3
View File
@@ -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 -3
View File
@@ -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
}
+12 -3
View File
@@ -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
}
+10 -3
View File
@@ -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
}
+13 -5
View File
@@ -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"
# }
}
+17 -8
View File
@@ -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 -3
View File
@@ -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
}
+8 -8
View File
@@ -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"
}
+20
View File
@@ -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"
}
}
}
}
@@ -0,0 +1,7 @@
{
"md_recorder": {
"db": {
"class": "cvttpy_tools.db.timescale.tsdb_client.TimescaleDbClient"
}
}
}
@@ -1,3 +1,8 @@
# ========================
# FOR REFERENCE ONLY
# MD Recorder Container (on ops-server) is using local configuration files
# ========================
#
{
"check_interval_sec": 10.0
, "status_report_interval_sec": 3600.0
@@ -1,17 +1,11 @@
@var CONFIG_SERVICE=cloud23.cvtt.vpn:6789
# ========================
# FOR REFERENCE ONLY
# MD Recorder Containers (on cloud28 and cloud29) are using local configuration files
# ========================
#
{
"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": {
-7
View File
@@ -1,7 +0,0 @@
{
"folders": [
{
"path": ".."
}
]
}
+24 -4
View File
@@ -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
View File
@@ -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"]
# }
# }
# }
+5 -6
View File
@@ -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"]
}
+13
View File
@@ -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
-13
View File
@@ -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
-5
View File
@@ -1,5 +0,0 @@
#!/bin/bash
cd $(dirname ${0})
docker compose down
docker compose up -d --pull=always
-4
View File
@@ -1,4 +0,0 @@
#!/bin/bash
cd $(dirname ${0})
docker compose up -d --pull=always
-4
View File
@@ -1,4 +0,0 @@
#!/bin/bash
cd $(dirname ${0})
docker compose down
-13
View File
@@ -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
-5
View File
@@ -1,5 +0,0 @@
#!/bin/bash
cd $(dirname ${0})
docker compose down
docker compose up -d --pull=always
-4
View File
@@ -1,4 +0,0 @@
#!/bin/bash
cd $(dirname ${0})
docker compose up -d --pull=always
-4
View File
@@ -1,4 +0,0 @@
#!/bin/bash
cd $(dirname ${0})
docker compose down
-10
View File
@@ -1,10 +0,0 @@
version: "3.8"
#==================================================
services:
trading_calendar:
image: apptasticsoftware/trading-calendar
container_name: trading-calendar
restart: unless-stopped
ports:
- 8000:80
-5
View File
@@ -1,5 +0,0 @@
#!/bin/bash
cd $(dirname ${0})
docker compose down
docker compose up -d --pull=always
-4
View File
@@ -1,4 +0,0 @@
#!/bin/bash
cd $(dirname ${0})
docker compose up -d --pull=always
-4
View File
@@ -1,4 +0,0 @@
#!/bin/bash
cd $(dirname ${0})
docker compose down