{"id":44626225,"url":"https://github.com/globophobe/asyncio-quant-tick","last_synced_at":"2026-02-14T15:13:15.400Z","repository":{"id":45084910,"uuid":"357352955","full_name":"globophobe/asyncio-quant-tick","owner":"globophobe","description":"🔌 Aggregate candlesticks from high frequency tick data from WebSockets","archived":false,"fork":false,"pushed_at":"2024-03-17T08:31:18.000Z","size":592,"stargazers_count":24,"open_issues_count":0,"forks_count":12,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-06-09T10:37:09.381Z","etag":null,"topics":["binance","bitfinex","bitflyer","bitmex","bybit","candlesticks","coinbase","cryptocurrency","quant","tick-data","trading","trading-strategies","upbit"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/globophobe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2021-04-12T22:12:15.000Z","updated_at":"2024-06-05T19:08:55.000Z","dependencies_parsed_at":"2024-03-17T09:22:29.835Z","dependency_job_id":"6f117098-0412-40d4-95f2-3a6cb6e189d2","html_url":"https://github.com/globophobe/asyncio-quant-tick","commit_stats":{"total_commits":26,"total_committers":1,"mean_commits":26.0,"dds":0.0,"last_synced_commit":"5537b6dfa230dcfff1f9f588708a4406057b3c29"},"previous_names":["globophobe/cryptofeed-experiments","globophobe/cryptofeed-werks"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/globophobe/asyncio-quant-tick","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/globophobe%2Fasyncio-quant-tick","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/globophobe%2Fasyncio-quant-tick/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/globophobe%2Fasyncio-quant-tick/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/globophobe%2Fasyncio-quant-tick/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/globophobe","download_url":"https://codeload.github.com/globophobe/asyncio-quant-tick/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/globophobe%2Fasyncio-quant-tick/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29447774,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T14:10:32.461Z","status":"ssl_error","status_checked_at":"2026-02-14T14:09:49.945Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["binance","bitfinex","bitflyer","bitmex","bybit","candlesticks","coinbase","cryptocurrency","quant","tick-data","trading","trading-strategies","upbit"],"created_at":"2026-02-14T15:13:14.655Z","updated_at":"2026-02-14T15:13:15.390Z","avatar_url":"https://github.com/globophobe.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# What?\n\nAsyncio Quant Tick aggregates candlesticks from high frequency tick data from WebSockets.\n\n# How?\n\nSequences of trades that have equal symbol, timestamp, and tick rule are aggregated. Aggregating trades in this way can increase information, as they are either orders of size or stop loss cascades.\n\nAs well, the number of messages can be reduced by 30-50%\n\nBy filtering aggregated messages, for example only emitting a mesage when an aggregated trade is greater than or equal to a `significant_trade_filter`, the number of messages can be reduced more.\n\nExample\n-------\nThe following are two sequential aggregated trades by timestamp, nanoseconds, and tick rule.\n\nAs it was aggregated from 4 raw trades, the second trade has ticks 4.\n\n```python\n[\n    {\n        \"timestamp\": 1620000915.31424,\n        \"price\": \"57064.01\",\n        \"volume\": \"566.6479018604\",\n        \"notional\": \"0.00993004\",\n        \"tickRule\": -1,\n        \"ticks\": 1\n    },\n    {\n        \"timestamp\": 1620000915.885381,\n        \"price\": \"57071.2\",\n        \"volume\": \"9376.6869202914\",\n        \"notional\": \"0.16429813\",\n        \"tickRule\": 1,\n        \"ticks\": 4\n    }\n]\n```\n\nAn example filtered message, emitted because the second aggregated trade exceeds `significant_trade_filter \u003e= 1000`\n\nInformation related to the first trade is aggregated with the second.\n\n```python\n[\n    {\n        \"timestamp\": 1620000915.885381,\n        \"price\": \"57071.2\",\n        \"volume\": \"9376.6869202914\",\n        \"notional\": \"0.16429813\",\n        \"tickRule\": 1,\n        \"ticks\": 4,\n        \"high\": '57071.2',\n        \"low\": '57064.01',\n        \"totalBuyVolume\": \"9376.6869202914\",\n        \"totalVolume\": \"9943.3348221518\",\n        \"totalBuyNotional\": \"0.16429813\",\n        \"totalNotional\": \"0.17422817\",\n        \"totalBuyTicks\": 4,\n        \"totalTicks\": 5\n    }\n]\n```\n\nFor 1m, 5m, 15m candles, there is an optional parameter `window_seconds`.  \n\nFor settings, see the [examples](https://github.com/globophobe/asyncio-quant-tick/blob/main/examples/)\n\nSupported exchanges\n-------------------\n\n:white_check_mark: Binance\n\n:white_check_mark: Bitfinex\n\n:white_check_mark: Bitflyer\n\n:white_check_mark: BitMEX\n\n:white_check_mark: Bybit\n\n:white_check_mark: Coinbase Pro\n\n:white_check_mark: Upbit\n\nContributing\n------------\n\nInstall dependencies with `poetry install`. The docker example is built with [invoke tasks](https://github.com/globophobe/asyncio-quant-tick/blob/master/tasks.py). For example, `invoke build`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglobophobe%2Fasyncio-quant-tick","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fglobophobe%2Fasyncio-quant-tick","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglobophobe%2Fasyncio-quant-tick/lists"}