{"adoption": {"forks": 593, "observed_at": "2026-08-28T04:07:29.221977+00:00", "stars": 2910}, "canonical_url": "https://ross.abutalabs.com/products/openctp", "card": {"archived": false, "artifact_type": "library", "description": "openctp提供CTP股票期权、中泰证券XTP、华鑫证券奇点TORA、东方证券OST、东方财富证券EMT、盈透证券TWS、易盛TAP、量投QDP等各通道的CTPAPI兼容接口，CTP程序可以无缝对接各股票柜台。openctp也提供了一套基于TTS交易系统的模拟环境，同样提供了CTPAPI兼容接口，不仅支持国内期货与期权全品种，也支持A股股票、基金、债券以及股票期权模拟交易，可以替代Simnow，为CTP量化交易开发者提供7x24可用的模拟环境。", "domain": ["fintech", "apis", "developer-tools"], "enriched": true, "function": ["sdk", "trading", "api-framework", "developer-tools"], "health_score": 77, "homepage": "http://www.openctp.cn", "language": "C", "license": "BSD-3-Clause", "license_family": "permissive", "maturity": "active", "member_repos": ["openctp/openctp"], "name": "openctp/openctp", "platform": ["windows", "cpp", "python", "go", "rust", "jvm", "dotnet"], "pushed_at": "2026-07-29T18:23:14+00:00", "repo": "openctp/openctp", "stars": 2910, "tags": ["ctp", "ctpapi", "futures-trading", "simnow", "tts", "quant-trading", "brokerage-apis", "simulated-trading", "chinese-markets", "command-line", "linux"], "topics": ["ctp", "futures", "quant", "simnow", "trader", "xtp", "stock", "options", "tts", "ctpapi", "tora"], "urls": [], "use_cases": ["connect a CTP-based trading program to XTP, TORA, EMT or other broker counters without code changes", "get a 7x24 available simulated trading environment to replace SimNow", "paper trade Chinese futures, options, A-shares, funds and bonds via CTPAPI", "use CTPAPI bindings from Python, Java, Go, Rust or C# for quant development", "query market reference data for futures and options via a RESTful data center", "test trading strategies against a simulation environment before live deployment"], "what_it_is": "openctp is a CTPAPI-compatible interface layer and trading platform ecosystem for Chinese futures and securities markets. It wraps broker counter APIs (XTP, TORA, EMT, OST, TAP, QDP, TWS, etc.) behind the standard CTPAPI so CTP programs can switch counters by replacing two DLLs, and provides a 7x24 TTS-based simulated trading environment as a SimNow replacement.", "when_to_avoid": ["you trade non-Chinese markets or need FIX/REST APIs unrelated to CTP", "you need a full production brokerage system rather than client-side API adapters and simulation", "you require guaranteed official vendor support for broker counter interfaces"], "when_to_choose": ["you develop CTP quant trading tools for Chinese futures or stock markets and need counter portability", "you need a reliable 24/7 mock trading backend for developing or validating CTPAPI programs", "you want CTPAPI bindings in a language other than C++"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/openctp", "repo": "openctp/openctp", "role": "main", "score": 75}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:29.221977+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:34:20.844770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37f6bee26b73b381db498b8fc6084a40b6d5aaa34201a35f34f05c86facfea1f", "fetched_at": "2026-08-28T04:07:29.221977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openctp/openctp"}, {"content_hash": "5befde856e4324dc4d6267f7867aea6e57db47cc9c8907dfbe8be62de1e78942", "fetched_at": "2026-08-29T09:49:33.216515+00:00", "kind": "homepage", "missing": false, "url": "http://www.openctp.cn"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:29.221977+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:34:20.844770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37f6bee26b73b381db498b8fc6084a40b6d5aaa34201a35f34f05c86facfea1f", "fetched_at": "2026-08-28T04:07:29.221977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openctp/openctp"}, {"content_hash": "5befde856e4324dc4d6267f7867aea6e57db47cc9c8907dfbe8be62de1e78942", "fetched_at": "2026-08-29T09:49:33.216515+00:00", "kind": "homepage", "missing": false, "url": "http://www.openctp.cn"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:34:20.844770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37f6bee26b73b381db498b8fc6084a40b6d5aaa34201a35f34f05c86facfea1f", "fetched_at": "2026-08-28T04:07:29.221977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openctp/openctp"}, {"content_hash": "5befde856e4324dc4d6267f7867aea6e57db47cc9c8907dfbe8be62de1e78942", "fetched_at": "2026-08-29T09:49:33.216515+00:00", "kind": "homepage", "missing": false, "url": "http://www.openctp.cn"}], "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:07:29.221977+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:29.221977+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:29.221977+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:34:20.844770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37f6bee26b73b381db498b8fc6084a40b6d5aaa34201a35f34f05c86facfea1f", "fetched_at": "2026-08-28T04:07:29.221977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openctp/openctp"}, {"content_hash": "5befde856e4324dc4d6267f7867aea6e57db47cc9c8907dfbe8be62de1e78942", "fetched_at": "2026-08-29T09:49:33.216515+00:00", "kind": "homepage", "missing": false, "url": "http://www.openctp.cn"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:29.221977+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:29.221977+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:34:20.844770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37f6bee26b73b381db498b8fc6084a40b6d5aaa34201a35f34f05c86facfea1f", "fetched_at": "2026-08-28T04:07:29.221977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openctp/openctp"}, {"content_hash": "5befde856e4324dc4d6267f7867aea6e57db47cc9c8907dfbe8be62de1e78942", "fetched_at": "2026-08-29T09:49:33.216515+00:00", "kind": "homepage", "missing": false, "url": "http://www.openctp.cn"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:29.221977+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:29.221977+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:29.221977+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:34:20.844770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37f6bee26b73b381db498b8fc6084a40b6d5aaa34201a35f34f05c86facfea1f", "fetched_at": "2026-08-28T04:07:29.221977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openctp/openctp"}, {"content_hash": "5befde856e4324dc4d6267f7867aea6e57db47cc9c8907dfbe8be62de1e78942", "fetched_at": "2026-08-29T09:49:33.216515+00:00", "kind": "homepage", "missing": false, "url": "http://www.openctp.cn"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:29.221977+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:29.221977+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:34:20.844770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37f6bee26b73b381db498b8fc6084a40b6d5aaa34201a35f34f05c86facfea1f", "fetched_at": "2026-08-28T04:07:29.221977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openctp/openctp"}, {"content_hash": "5befde856e4324dc4d6267f7867aea6e57db47cc9c8907dfbe8be62de1e78942", "fetched_at": "2026-08-29T09:49:33.216515+00:00", "kind": "homepage", "missing": false, "url": "http://www.openctp.cn"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:34:20.844770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37f6bee26b73b381db498b8fc6084a40b6d5aaa34201a35f34f05c86facfea1f", "fetched_at": "2026-08-28T04:07:29.221977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openctp/openctp"}, {"content_hash": "5befde856e4324dc4d6267f7867aea6e57db47cc9c8907dfbe8be62de1e78942", "fetched_at": "2026-08-29T09:49:33.216515+00:00", "kind": "homepage", "missing": false, "url": "http://www.openctp.cn"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:34:20.844770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37f6bee26b73b381db498b8fc6084a40b6d5aaa34201a35f34f05c86facfea1f", "fetched_at": "2026-08-28T04:07:29.221977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openctp/openctp"}, {"content_hash": "5befde856e4324dc4d6267f7867aea6e57db47cc9c8907dfbe8be62de1e78942", "fetched_at": "2026-08-29T09:49:33.216515+00:00", "kind": "homepage", "missing": false, "url": "http://www.openctp.cn"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:34:20.844770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37f6bee26b73b381db498b8fc6084a40b6d5aaa34201a35f34f05c86facfea1f", "fetched_at": "2026-08-28T04:07:29.221977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openctp/openctp"}, {"content_hash": "5befde856e4324dc4d6267f7867aea6e57db47cc9c8907dfbe8be62de1e78942", "fetched_at": "2026-08-29T09:49:33.216515+00:00", "kind": "homepage", "missing": false, "url": "http://www.openctp.cn"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 95, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1853, "days_push": 35, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 75, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}