{"adoption": {"forks": 135, "observed_at": "2026-08-28T04:03:30.644445+00:00", "stars": 1081}, "canonical_url": "https://ross.abutalabs.com/products/eigenledger", "card": {"archived": false, "artifact_type": "library", "description": "An Open Source Portfolio Backtesting Engine for Everyone | 面向所有人的开源投资组合回测引擎", "domain": ["fintech", "data-science", "analytics"], "enriched": true, "function": ["data-science", "analytics", "math", "data-visualization"], "health_score": 54, "homepage": "https://eigenledger.gitbook.io/documentation", "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["santoshlite/EigenLedger"], "name": "santoshlite/EigenLedger", "platform": ["python", "cross-platform"], "pushed_at": "2025-09-14T01:21:40+00:00", "repo": "santoshlite/EigenLedger", "stars": 1081, "tags": ["backtesting", "portfolio-analysis", "quantitative-finance", "portfolio-optimization", "risk-analysis", "stock-market", "investment"], "topics": ["quantitative-finance", "quantitative-analysis", "stock", "stock-market", "backtesting", "finance", "portfolio-analysis", "investment-portfolio", "portfolio-optimization", "portfolio-management", "python", "investment", "investment-analysis", "quant", "futures", "fintech", "stock-data"], "urls": [], "use_cases": ["backtest an investment portfolio strategy in python", "analyze portfolio performance and risk metrics", "optimize asset allocation weights", "compare stock portfolio returns against a benchmark", "run quantitative analysis on stocks and futures", "generate portfolio risk reports in a jupyter notebook"], "what_it_is": "EigenLedger (formerly Empyrial) is an open-source Python library for quantitative investment portfolio backtesting, analysis, and optimization. It wraps financial analysis libraries like Quantstats and PyPortfolioOpt to provide performance and risk insights for retail investors and financial institutions.", "when_to_avoid": ["you need event-driven backtesting with granular order execution like backtrader or zipline", "you require real-time trading or broker integration", "you need ultra-low-latency or institutional-grade tick data processing", "you want a GUI-based portfolio manager rather than a code library"], "when_to_choose": ["you want a high-level python wrapper over Quantstats and PyPortfolioOpt", "you need quick portfolio backtesting and risk analysis in a notebook", "you are a retail investor or analyst without heavy quant infrastructure", "you want an open-source alternative to paid portfolio analytics tools"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/eigenledger", "repo": "santoshlite/EigenLedger", "role": "main", "score": 52}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:30.644445+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:51:23.853827+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "16fe2562a922963f33fb1ec83c5055707c81f1dfb5cbdfe4173d9b286162b736", "fetched_at": "2026-08-28T04:03:30.644445+00:00", "kind": "readme", "missing": false, "url": "https://github.com/santoshlite/EigenLedger"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:30.644445+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:51:23.853827+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "16fe2562a922963f33fb1ec83c5055707c81f1dfb5cbdfe4173d9b286162b736", "fetched_at": "2026-08-28T04:03:30.644445+00:00", "kind": "readme", "missing": false, "url": "https://github.com/santoshlite/EigenLedger"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:51:23.853827+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "16fe2562a922963f33fb1ec83c5055707c81f1dfb5cbdfe4173d9b286162b736", "fetched_at": "2026-08-28T04:03:30.644445+00:00", "kind": "readme", "missing": false, "url": "https://github.com/santoshlite/EigenLedger"}], "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:03:30.644445+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:30.644445+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:30.644445+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:51:23.853827+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "16fe2562a922963f33fb1ec83c5055707c81f1dfb5cbdfe4173d9b286162b736", "fetched_at": "2026-08-28T04:03:30.644445+00:00", "kind": "readme", "missing": false, "url": "https://github.com/santoshlite/EigenLedger"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:30.644445+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:30.644445+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:51:23.853827+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "16fe2562a922963f33fb1ec83c5055707c81f1dfb5cbdfe4173d9b286162b736", "fetched_at": "2026-08-28T04:03:30.644445+00:00", "kind": "readme", "missing": false, "url": "https://github.com/santoshlite/EigenLedger"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:30.644445+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:30.644445+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:30.644445+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:51:23.853827+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "16fe2562a922963f33fb1ec83c5055707c81f1dfb5cbdfe4173d9b286162b736", "fetched_at": "2026-08-28T04:03:30.644445+00:00", "kind": "readme", "missing": false, "url": "https://github.com/santoshlite/EigenLedger"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:30.644445+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:30.644445+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:51:23.853827+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "16fe2562a922963f33fb1ec83c5055707c81f1dfb5cbdfe4173d9b286162b736", "fetched_at": "2026-08-28T04:03:30.644445+00:00", "kind": "readme", "missing": false, "url": "https://github.com/santoshlite/EigenLedger"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:51:23.853827+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "16fe2562a922963f33fb1ec83c5055707c81f1dfb5cbdfe4173d9b286162b736", "fetched_at": "2026-08-28T04:03:30.644445+00:00", "kind": "readme", "missing": false, "url": "https://github.com/santoshlite/EigenLedger"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:51:23.853827+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "16fe2562a922963f33fb1ec83c5055707c81f1dfb5cbdfe4173d9b286162b736", "fetched_at": "2026-08-28T04:03:30.644445+00:00", "kind": "readme", "missing": false, "url": "https://github.com/santoshlite/EigenLedger"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:51:23.853827+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "16fe2562a922963f33fb1ec83c5055707c81f1dfb5cbdfe4173d9b286162b736", "fetched_at": "2026-08-28T04:03:30.644445+00:00", "kind": "readme", "missing": false, "url": "https://github.com/santoshlite/EigenLedger"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 41, "longevity": 100, "rhythm": 40}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2004, "days_push": 354, "days_rel": 675, "gap_med": 0, "n_releases_24m": 2}, "score": 52, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}