{"adoption": {"forks": 673, "observed_at": "2026-08-28T04:06:11.312306+00:00", "stars": 2078}, "canonical_url": "https://ross.abutalabs.com/products/passivbot", "card": {"archived": false, "artifact_type": "application", "description": "Trading bot running on Bybit, Bitget, OKX, GateIO, Binance, Kucoin, WEEX and Hyperliquid", "domain": ["fintech"], "enriched": true, "function": ["trading", "benchmarking", "configuration-management"], "health_score": 100, "homepage": "https://www.passivbot.com", "language": "Python", "license": "Unlicense", "license_family": "permissive", "maturity": "active", "member_repos": ["enarjord/passivbot"], "name": "enarjord/passivbot", "platform": ["python", "rust", "cli", "cross-platform"], "pushed_at": "2026-08-26T13:30:48+00:00", "repo": "enarjord/passivbot", "stars": 2078, "tags": ["trading-bot", "perpetual-futures", "market-making", "grid-trading", "martingale", "backtesting", "evolutionary-optimizer", "bybit", "binance", "okx", "bitget", "hyperliquid", "gateio", "kucoin", "cryptocurrency", "automation", "docker"], "topics": ["bybit", "futures", "trading", "algorithmic-trading", "bitget", "okx", "gateio", "hyperliquid", "perpetual-futures", "binance"], "urls": [], "use_cases": ["run an automated grid trading bot on bybit perpetual futures", "automatically place limit buy and sell orders on binance futures", "backtest and optimize martingale trading strategy parameters", "trade crypto perpetual futures with trailing take-profit orders", "let a bot pick which markets to trade dynamically", "run a low-maintenance contrarian market maker bot on hyperliquid"], "what_it_is": "Passivbot is a cryptocurrency trading bot written in Python and Rust that automatically places and cancels limit orders on perpetual futures exchanges like Bybit, Binance, OKX, Bitget, GateIO, Kucoin, WEEX, and Hyperliquid. It uses a contrarian grid/Martingale strategy with optional trailing orders and includes an evolutionary optimizer that runs thousands of backtests to tune configurations.", "when_to_avoid": ["you need predictive or trend-following signal-based trading strategies", "you want spot trading or exchanges not on the supported list", "you cannot tolerate the high risk of Martingale-style doubling down on losing positions"], "when_to_choose": ["you want an open-source, self-hosted bot for perpetual futures on supported exchanges", "you prefer a contrarian grid/dca-style strategy rather than trend prediction", "you need backtesting plus an evolutionary optimizer to tune bot parameters"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/passivbot", "repo": "enarjord/passivbot", "role": "main", "score": 98}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.312306+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:56:06.377802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "731532c4baf706c86c52ac3ae5bb4e226d9a574f163ac7578dfc35f3a68562d2", "fetched_at": "2026-08-28T04:06:11.312306+00:00", "kind": "readme", "missing": false, "url": "https://github.com/enarjord/passivbot"}, {"content_hash": "70dcebe054ec5ec6116c8d60d2ad194229aeb5a5f0a1dcd6be7a38be044e4786", "fetched_at": "2026-08-29T10:36:15.175775+00:00", "kind": "homepage", "missing": false, "url": "https://www.passivbot.com"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.312306+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:56:06.377802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "731532c4baf706c86c52ac3ae5bb4e226d9a574f163ac7578dfc35f3a68562d2", "fetched_at": "2026-08-28T04:06:11.312306+00:00", "kind": "readme", "missing": false, "url": "https://github.com/enarjord/passivbot"}, {"content_hash": "70dcebe054ec5ec6116c8d60d2ad194229aeb5a5f0a1dcd6be7a38be044e4786", "fetched_at": "2026-08-29T10:36:15.175775+00:00", "kind": "homepage", "missing": false, "url": "https://www.passivbot.com"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:56:06.377802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "731532c4baf706c86c52ac3ae5bb4e226d9a574f163ac7578dfc35f3a68562d2", "fetched_at": "2026-08-28T04:06:11.312306+00:00", "kind": "readme", "missing": false, "url": "https://github.com/enarjord/passivbot"}, {"content_hash": "70dcebe054ec5ec6116c8d60d2ad194229aeb5a5f0a1dcd6be7a38be044e4786", "fetched_at": "2026-08-29T10:36:15.175775+00:00", "kind": "homepage", "missing": false, "url": "https://www.passivbot.com"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.312306+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.312306+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.312306+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:56:06.377802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "731532c4baf706c86c52ac3ae5bb4e226d9a574f163ac7578dfc35f3a68562d2", "fetched_at": "2026-08-28T04:06:11.312306+00:00", "kind": "readme", "missing": false, "url": "https://github.com/enarjord/passivbot"}, {"content_hash": "70dcebe054ec5ec6116c8d60d2ad194229aeb5a5f0a1dcd6be7a38be044e4786", "fetched_at": "2026-08-29T10:36:15.175775+00:00", "kind": "homepage", "missing": false, "url": "https://www.passivbot.com"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.312306+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.312306+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:56:06.377802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "731532c4baf706c86c52ac3ae5bb4e226d9a574f163ac7578dfc35f3a68562d2", "fetched_at": "2026-08-28T04:06:11.312306+00:00", "kind": "readme", "missing": false, "url": "https://github.com/enarjord/passivbot"}, {"content_hash": "70dcebe054ec5ec6116c8d60d2ad194229aeb5a5f0a1dcd6be7a38be044e4786", "fetched_at": "2026-08-29T10:36:15.175775+00:00", "kind": "homepage", "missing": false, "url": "https://www.passivbot.com"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.312306+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.312306+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.312306+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:56:06.377802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "731532c4baf706c86c52ac3ae5bb4e226d9a574f163ac7578dfc35f3a68562d2", "fetched_at": "2026-08-28T04:06:11.312306+00:00", "kind": "readme", "missing": false, "url": "https://github.com/enarjord/passivbot"}, {"content_hash": "70dcebe054ec5ec6116c8d60d2ad194229aeb5a5f0a1dcd6be7a38be044e4786", "fetched_at": "2026-08-29T10:36:15.175775+00:00", "kind": "homepage", "missing": false, "url": "https://www.passivbot.com"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.312306+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.312306+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:56:06.377802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "731532c4baf706c86c52ac3ae5bb4e226d9a574f163ac7578dfc35f3a68562d2", "fetched_at": "2026-08-28T04:06:11.312306+00:00", "kind": "readme", "missing": false, "url": "https://github.com/enarjord/passivbot"}, {"content_hash": "70dcebe054ec5ec6116c8d60d2ad194229aeb5a5f0a1dcd6be7a38be044e4786", "fetched_at": "2026-08-29T10:36:15.175775+00:00", "kind": "homepage", "missing": false, "url": "https://www.passivbot.com"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:56:06.377802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "731532c4baf706c86c52ac3ae5bb4e226d9a574f163ac7578dfc35f3a68562d2", "fetched_at": "2026-08-28T04:06:11.312306+00:00", "kind": "readme", "missing": false, "url": "https://github.com/enarjord/passivbot"}, {"content_hash": "70dcebe054ec5ec6116c8d60d2ad194229aeb5a5f0a1dcd6be7a38be044e4786", "fetched_at": "2026-08-29T10:36:15.175775+00:00", "kind": "homepage", "missing": false, "url": "https://www.passivbot.com"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:56:06.377802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "731532c4baf706c86c52ac3ae5bb4e226d9a574f163ac7578dfc35f3a68562d2", "fetched_at": "2026-08-28T04:06:11.312306+00:00", "kind": "readme", "missing": false, "url": "https://github.com/enarjord/passivbot"}, {"content_hash": "70dcebe054ec5ec6116c8d60d2ad194229aeb5a5f0a1dcd6be7a38be044e4786", "fetched_at": "2026-08-29T10:36:15.175775+00:00", "kind": "homepage", "missing": false, "url": "https://www.passivbot.com"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:56:06.377802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "731532c4baf706c86c52ac3ae5bb4e226d9a574f163ac7578dfc35f3a68562d2", "fetched_at": "2026-08-28T04:06:11.312306+00:00", "kind": "readme", "missing": false, "url": "https://github.com/enarjord/passivbot"}, {"content_hash": "70dcebe054ec5ec6116c8d60d2ad194229aeb5a5f0a1dcd6be7a38be044e4786", "fetched_at": "2026-08-29T10:36:15.175775+00:00", "kind": "homepage", "missing": false, "url": "https://www.passivbot.com"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 97}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2091, "days_push": 7, "days_rel": 23, "gap_med": 5.0, "n_releases_24m": 55}, "score": 98, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}