{"adoption": {"forks": 1547, "observed_at": "2026-08-28T04:10:10.284930+00:00", "stars": 7965}, "canonical_url": "https://ross.abutalabs.com/products/rockyzsu-stock", "card": {"archived": false, "artifact_type": "learning-resource", "description": "30天掌握量化交易 (持续更新)", "domain": ["fintech", "data-science", "tutorials"], "enriched": true, "function": ["trading", "data-science", "web-scraping", "developer-tools"], "health_score": 67, "homepage": "http://30daydo.com", "language": "Python", "license": "BSD-3-Clause", "license_family": "permissive", "maturity": "active", "member_repos": ["Rockyzsu/stock"], "name": "Rockyzsu/stock", "platform": ["python", "cross-platform"], "pushed_at": "2026-04-17T11:46:56+00:00", "repo": "Rockyzsu/stock", "stars": 7965, "tags": ["quantitative-trading", "stock-market", "china-a-shares", "qmt", "ptrade", "convertible-bonds", "tutorial-series", "chinese-language", "automation"], "topics": ["python", "stock", "quant"], "urls": [], "use_cases": ["learn quantitative trading with python from scratch", "automate stock trading via QMT or Ptrade", "scrape chinese stock market data", "build convertible bond trading strategies", "expose QMT functions through a REST API", "backtest trading strategies in python"], "what_it_is": "A continuously updated Chinese-language tutorial series and code collection for learning quantitative stock trading in 30 days, built around Python. It accompanies the 30daydo.com blog and covers broker platforms like Ptrade and QMT, data scraping, and trading strategy examples for Chinese markets.", "when_to_avoid": ["you need a production-grade backtesting or trading framework", "you don't read Chinese, as nearly all content is in Chinese", "you trade non-Chinese markets with different data sources and regulations"], "when_to_choose": ["you want a hands-on, example-driven introduction to quant trading in Chinese A-share markets", "you use Ptrade or QMT broker terminals and need integration code", "you prefer learning via blog posts paired with runnable Python code"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/rockyzsu-stock", "repo": "Rockyzsu/stock", "role": "main", "score": 67}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:10.284930+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:32:36.908385+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a4407a2999d3b7151d329c2e4bbff732220b025f77670eff47d056bf1d6a5cb", "fetched_at": "2026-08-29T08:29:44.995206+00:00", "kind": "homepage", "missing": false, "url": "http://30daydo.com"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:10.284930+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:32:36.908385+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a4407a2999d3b7151d329c2e4bbff732220b025f77670eff47d056bf1d6a5cb", "fetched_at": "2026-08-29T08:29:44.995206+00:00", "kind": "homepage", "missing": false, "url": "http://30daydo.com"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:32:36.908385+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a4407a2999d3b7151d329c2e4bbff732220b025f77670eff47d056bf1d6a5cb", "fetched_at": "2026-08-29T08:29:44.995206+00:00", "kind": "homepage", "missing": false, "url": "http://30daydo.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:10:10.284930+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:10.284930+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:10.284930+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:32:36.908385+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a4407a2999d3b7151d329c2e4bbff732220b025f77670eff47d056bf1d6a5cb", "fetched_at": "2026-08-29T08:29:44.995206+00:00", "kind": "homepage", "missing": false, "url": "http://30daydo.com"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:10.284930+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:10.284930+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:32:36.908385+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a4407a2999d3b7151d329c2e4bbff732220b025f77670eff47d056bf1d6a5cb", "fetched_at": "2026-08-29T08:29:44.995206+00:00", "kind": "homepage", "missing": false, "url": "http://30daydo.com"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:10.284930+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:10.284930+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:10.284930+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:32:36.908385+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a4407a2999d3b7151d329c2e4bbff732220b025f77670eff47d056bf1d6a5cb", "fetched_at": "2026-08-29T08:29:44.995206+00:00", "kind": "homepage", "missing": false, "url": "http://30daydo.com"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:10.284930+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:10.284930+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:32:36.908385+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a4407a2999d3b7151d329c2e4bbff732220b025f77670eff47d056bf1d6a5cb", "fetched_at": "2026-08-29T08:29:44.995206+00:00", "kind": "homepage", "missing": false, "url": "http://30daydo.com"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:32:36.908385+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a4407a2999d3b7151d329c2e4bbff732220b025f77670eff47d056bf1d6a5cb", "fetched_at": "2026-08-29T08:29:44.995206+00:00", "kind": "homepage", "missing": false, "url": "http://30daydo.com"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:32:36.908385+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a4407a2999d3b7151d329c2e4bbff732220b025f77670eff47d056bf1d6a5cb", "fetched_at": "2026-08-29T08:29:44.995206+00:00", "kind": "homepage", "missing": false, "url": "http://30daydo.com"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:32:36.908385+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a4407a2999d3b7151d329c2e4bbff732220b025f77670eff47d056bf1d6a5cb", "fetched_at": "2026-08-29T08:29:44.995206+00:00", "kind": "homepage", "missing": false, "url": "http://30daydo.com"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 77, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_readme"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3803, "days_push": 138, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 67, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}