{
  "generated_at_utc": "2026-09-18T06:03:44.863239+00:00",
  "provider": "sample (synthetic)",
  "seed": 42,
  "command": "python scripts/publish_sample.py",
  "source_revision": "63f65a514bcd4717c3dd6c941fff513b3c993df6",
  "python": "3.12.13",
  "dependencies": {
    "Jinja2": "3.1.6",
    "Markdown": "3.10.3",
    "MarkupSafe": "3.0.3",
    "PyYAML": "6.0.3",
    "Pygments": "2.21.0",
    "alphaforge": "0.1.0",
    "annotated-doc": "0.0.5",
    "annotated-types": "0.8.0",
    "anyio": "4.15.1",
    "ast_serialize": "0.11.1",
    "babel": "2.18.0",
    "backrefs": "5.9",
    "black": "26.5.1",
    "certifi": "2026.7.22",
    "cffi": "2.1.1",
    "cfgv": "3.5.0",
    "charset-normalizer": "3.5.1",
    "clarabel": "0.11.1",
    "click": "8.5.0",
    "cloudpickle": "3.1.2",
    "colorama": "0.4.6",
    "contourpy": "1.3.3",
    "coverage": "7.16.0",
    "cvxpy": "1.9.2",
    "cycler": "0.12.1",
    "distlib": "0.4.3",
    "duckdb": "1.5.5",
    "fastapi": "0.141.1",
    "filelock": "3.32.6",
    "fonttools": "4.64.0",
    "formulaic": "1.2.2",
    "ghp-import": "2.1.0",
    "h11": "0.16.0",
    "highspy": "1.15.1",
    "httpcore": "1.0.9",
    "httptools": "0.8.0",
    "httpx": "0.28.1",
    "identify": "2.6.19",
    "idna": "3.19",
    "iniconfig": "2.3.0",
    "interface_meta": "2.0.1",
    "joblib": "1.6.0",
    "kiwisolver": "1.5.1",
    "librt": "0.15.0",
    "lightgbm": "4.7.0",
    "loguru": "0.7.3",
    "matplotlib": "3.11.1",
    "mergedeep": "1.3.4",
    "mkdocs": "1.6.1",
    "mkdocs-get-deps": "0.2.2",
    "mkdocs-material": "9.6.21",
    "mkdocs-material-extensions": "1.3.1",
    "mypy": "2.3.1",
    "mypy_extensions": "1.1.0",
    "narwhals": "2.26.0",
    "nodeenv": "1.10.0",
    "numpy": "2.5.3",
    "osqp": "1.1.3",
    "packaging": "26.3",
    "paginate": "0.5.7",
    "pandas": "3.0.5",
    "pathspec": "1.1.1",
    "patsy": "1.0.3",
    "pillow": "12.3.0",
    "platformdirs": "4.11.8",
    "plotly": "7.0.0",
    "pluggy": "1.6.0",
    "pre_commit": "4.6.2",
    "pyarrow": "25.0.1",
    "pycparser": "3.0",
    "pydantic": "2.13.5",
    "pydantic-settings": "2.15.0",
    "pydantic_core": "2.46.5",
    "pymdown-extensions": "10.21.3",
    "pyparsing": "3.3.2",
    "pytest": "9.1.1",
    "pytest-cov": "7.1.0",
    "python-dateutil": "2.9.0.post0",
    "python-discovery": "1.6.0",
    "python-dotenv": "1.2.3",
    "pytokens": "0.4.1",
    "pyyaml_env_tag": "1.1",
    "qdldl": "0.1.9.post1",
    "requests": "2.34.2",
    "ruff": "0.16.5",
    "scikit-learn": "1.9.0",
    "scipy": "1.18.1",
    "scs": "3.3.1",
    "setuptools": "84.0.0",
    "six": "1.17.0",
    "sparsediffpy": "0.3.0",
    "starlette": "1.6.0",
    "statsmodels": "0.15.0",
    "threadpoolctl": "3.6.0",
    "typing-inspection": "0.4.4",
    "typing_extensions": "4.16.0",
    "urllib3": "2.7.0",
    "uvicorn": "0.52.4",
    "uvloop": "0.22.1",
    "virtualenv": "21.7.9",
    "watchdog": "6.0.0",
    "watchfiles": "1.2.0",
    "websockets": "17.1",
    "wrapt": "2.4.0"
  },
  "source_sha256": {
    "configs/default.yaml": "766450b7cb2dd3fb4bd0d4f3254c5c5c2cf0946e95a5a26ee416b08db420f1d9",
    "scripts/check_docs.py": "cbc54321f1b9cbba579dd27d063b4abe5d78b196eb14c36a49626f2fd604fb0c",
    "scripts/diagnose_nav.py": "aa664eb374ee58be5d3b64716c9268a4a6af4b3443336c10dcb48887b8444a7d",
    "scripts/export_case_study.py": "705064c353a598fbd3e0aa168ac2d7fe09061b244362250fdadadf2524bd7bc0",
    "scripts/fetch_real_data.py": "90a8cc04116dc693a2254f3beb0381104c41a6f9dc39351fc159c292ab02ff19",
    "scripts/make_assets.py": "2040f354cf731f40a32f7a05a659345ac2182757a81ae0ea2493a6f516f8af16",
    "scripts/publish_sample.py": "bc4e63b9ef04e42295208965ae5a2cc921ac6d6ac93ee3a2e6fae39ab07a9f0a",
    "scripts/run_real_backtest.py": "c5222a618e15c8d25d39365f36100d2c4dc342d3a632e5e80f7d1026fda40f5b",
    "scripts/run_real_research.py": "6e37dddc73a5c1dbf2a5ab355b744f473d8cfc919f7d3a13320dabbd0f711095",
    "scripts/run_research.py": "7d0aa96a3cbf7aa93ce5ec5c1e1e51c9100ca3b990fa4c65a3a6eb260e090a06",
    "src/alphaforge/__init__.py": "90f9b16e963192ae09ae8503de678754ad8859cdc005eb302dc71930760cc797",
    "src/alphaforge/agents/__init__.py": "af8e0a01cfd7948486b7e00f618cefde16b2b64cf4426356af0bfacac58a3b59",
    "src/alphaforge/agents/copilot.py": "f39eaf5529306dfb8f3b3c5853627b4715beb5052d66b648a9bd9d49155ed064",
    "src/alphaforge/agents/tools.py": "c68a189da17b6d781af2a64ca37571eba3d9c97d17a255e204d7b119614cfff0",
    "src/alphaforge/attribution/__init__.py": "7cf7c7547290575810012374c4c01f6ae096811e93638b8f60ed1aaf89c3a61a",
    "src/alphaforge/attribution/brinson.py": "e683c4460fdec8197dc1ebfe8de73f3c083ad3f25bfdbca23b4cf56b4421a00c",
    "src/alphaforge/attribution/factor.py": "bad2544dc5ced1e24f59a870bb15a33e57a47f40ed40cd56481ecf242d768327",
    "src/alphaforge/backtest/__init__.py": "b54462c263b9932f1a63c50eaeb6fb0b3a02da5b2e8b24d067a60f51e207a62e",
    "src/alphaforge/backtest/engine.py": "7b9ad9f712079242ddc6842a5978cae945b53c12ff7809fee99e162218324d43",
    "src/alphaforge/backtest/metrics.py": "12530bcdb8e48aa7894fd69189de287a23ad31d4929720ce19030139ff02b426",
    "src/alphaforge/cli.py": "11b138c401ea0f8ea1210151bb988905d12c9a9914c12f6221831f99f70113e5",
    "src/alphaforge/data/__init__.py": "219e79f2328025da8e75d24b3c3e0b357794e974c79a1266b310413e4db9a254",
    "src/alphaforge/data/calendar.py": "e4a9f35831d9f8e60076e34b3342483aafacf3395376eeadfacf23d7107d4322",
    "src/alphaforge/data/pipeline.py": "dfa127aab6083d22ccdb20b12a56777356858bd7cddedf244c16f5769d524486",
    "src/alphaforge/data/providers/__init__.py": "0ee0a928c188d45ec791a20aa9cdaad08cae6e283b37b71683493fb44ff2ed84",
    "src/alphaforge/data/providers/base.py": "50e5c86ae523697b8150ee8ccaa76a1c322765da02177f3c6e86c4b7655e852d",
    "src/alphaforge/data/providers/local.py": "bcb3d870a9ff6e64b335d6ef2d05fecc527154bbf2cacb6844a96609bf333c73",
    "src/alphaforge/data/providers/sample.py": "b9b5de6e52111ecbf5186e10c1e8b77b08f75ff5ff2fd83c0121ca9533bcce3d",
    "src/alphaforge/data/providers/vendors.py": "a3e63cfff26bc106e133b90935e432e5d06cd65994cb4447ff617dc7a4b92a7f",
    "src/alphaforge/data/quality.py": "030c00d347aeeb060e1517d03c6a9a9ae79ff852dae8f4fe1f13db53dcae3b89",
    "src/alphaforge/data/storage.py": "0eb259f1cabdf6b671d5d91d0d36046c3ee308d54285f4da08c20875b83dee86",
    "src/alphaforge/data/universe.py": "e75e0699c25a327c38e5b77a044e06c1541cda90f39cbb39e325453239686323",
    "src/alphaforge/execution/__init__.py": "793dde62e0d1fc2a7cf9dca982fd4de520f6423e58afef4af9551b3cf5d206ea",
    "src/alphaforge/execution/broker.py": "1ccf738b78650126a722af364e2c4daec084df2ccb8892d06d454b9fd636df6c",
    "src/alphaforge/execution/costs.py": "98123140641c1bd371ad7b48d292f5a4987229c7c3ee4cea3256bfff3dd0d12a",
    "src/alphaforge/factors/__init__.py": "dfbd7b7b5e1bd737a48404c1b26704dcaf0e2bc01f0d5e2615d383f2cf74feef",
    "src/alphaforge/factors/base.py": "b30ff93b137f1d579710e0b85688e4c02f9164883ab574e78f551686c46be0e2",
    "src/alphaforge/factors/evaluation.py": "d82d20c703c65cb61e56011ec8bbbe569c6bfa6558743b07235cb6b04b70d343",
    "src/alphaforge/factors/library.py": "af66fc74249e2a3075bbd6abc80937a4574f003778616596fa501630bf672980",
    "src/alphaforge/factors/liquidity.py": "9de145c0fef15dc0b4ab4b6418ff02e9ad972665c8132400f331ef00d2248b6d",
    "src/alphaforge/factors/momentum.py": "dca8db878eb1c982c619abbdd68807715c8209ae144a397e1e2ac9d3996bbeec",
    "src/alphaforge/factors/preprocessing.py": "e3bda993b66f9602bfdb417dc3fb4a9b35b88bb0ea3d524800b1a7aada821a72",
    "src/alphaforge/factors/quality.py": "e74d13e4d8e9f6e33d5a46412eccbbd890e463e87865bab1e318c0cede6c75c5",
    "src/alphaforge/factors/risk.py": "342e5562012a69c00112cd19b9d03bae967d38e6bbaac99a5dc9028988f49952",
    "src/alphaforge/factors/value.py": "fd2569f548152cd356651fff723f362fcea84ea49e08fb34dafcb8d480359951",
    "src/alphaforge/features/__init__.py": "bc3770c8a25387f151c624910e558c531d83b0bfc317de09635bbb6ca6b6b7eb",
    "src/alphaforge/features/fundamentals.py": "0d43c9a94502789cd3457ed019ee57c9ced6c2e0c39cff05a4a57a5857d7f902",
    "src/alphaforge/features/panel.py": "076d1f440f588bd9241ee5ee4d7e75f88c2eebcad3636af775b15a8424e0155e",
    "src/alphaforge/models/__init__.py": "f742c1b6f6f97de89c5d5d52a98fa96afd40cba9262ed2cdd0db4035217b62a3",
    "src/alphaforge/models/dataset.py": "dbe6d9d0c420542103fccfeca6d7e56aaed22d8de097c974f410a5943f43029a",
    "src/alphaforge/models/estimators.py": "892b179b97fd08db738677acc981b7f5396617e66871c786f6610f2037f5a3bb",
    "src/alphaforge/models/evaluation.py": "a3154efde4a7de8de5385f619b1b28ccfde8901d4b9645d35d0f8fe391f4f0fe",
    "src/alphaforge/models/pipeline.py": "b077093eb6268d583cd2e56d435097db0a14554d19424f835cec8fea23155640",
    "src/alphaforge/models/split.py": "60af1d5263ae47c61425753194dad61a39d97beabef81a4c78e2b3373d826dce",
    "src/alphaforge/pipeline.py": "37ac300f64f24749eda6cf4244991291e5d6c38a3b6a961e2199abd0652972cd",
    "src/alphaforge/portfolio/__init__.py": "d4cbef2a233a56af06149e7201e60915feeac10dd6308035d3dee7218f44c438",
    "src/alphaforge/portfolio/constructor.py": "5617e73a12269f2bcf026d94bd66b9b8c0b72fdcdfdaddb13739afc564783d87",
    "src/alphaforge/portfolio/expected_returns.py": "8fba136bb6f38d6382cd1d12f25d8a0cdb414633eb3905bd504c9edb5ecaff25",
    "src/alphaforge/portfolio/optimizer.py": "9570faaf4293f5c70314adef237532fc54f7f3df29e644476f7648f49c25403c",
    "src/alphaforge/reporting/__init__.py": "8ba145726e9fc60006efa399c10da1b8b1b7ee4bc1ef7e22c9b3847d3d43d1dc",
    "src/alphaforge/reporting/charts.py": "76967f229534fa05a140c15d70c43c82605d958a9a3891c729be4975a57a5504",
    "src/alphaforge/reporting/report.py": "c5ee3bf5b89be53e133b2b68413d03ad5bd5c205a0c5231fa41d3ad03f4f4e4a",
    "src/alphaforge/risk/__init__.py": "a5a70afd4822aedb5e82aa91fc31cf2e735a7a8fa57b58f2cdf5b1c131961843",
    "src/alphaforge/risk/covariance.py": "74b7dd55d55814a3641fb5a39d78ab656f1498c2266758f72d3218b7c39ee85a",
    "src/alphaforge/risk/factor_model.py": "5d2610728d8713fd795f21e1d0b1f59f8ed721d0c356ac21eab31aebb77a3dfe",
    "src/alphaforge/risk/regime.py": "f9c4002be9fb4f0f512b03d8ba982635aad8d6823a6b3f2a5dbd90693280910c",
    "src/alphaforge/risk/stress.py": "3fe8e23a581a247068d6814ce2fa020e42d4d3ac414dddf4ace05227aa9585fe",
    "src/alphaforge/utils/__init__.py": "5aa6fe5efe7b6aaa64c0b6732608754f1b1abf4e44199f65412e51c1ac892e62",
    "src/alphaforge/utils/config.py": "160237e4a5426e627c9b8680a6d944957c9cd8e29b609a9a5bbe432ae007fb53",
    "src/alphaforge/utils/logging.py": "e2b180e85f4b1a69e68d3cbdfd00f1177556f5498c374e5510d9cd42f2ae3677",
    "src/alphaforge/utils/math_utils.py": "58c60902bd48ffdcc3d399441ce6b4b96e67ed7fbf2765188a7069937fd18a88"
  },
  "artifact_sha256": {
    "docs/sample/research_report.html": "5b48b97cfffeee89a04aa1e11c82b36dee0a5691ff6a45ec1c69e403483c7113",
    "docs/sample/daily_results.csv": "17a4434fcc55c442babafffdb26f01da7d7c4e5b3e5c811bca609b3c62b29b27",
    "docs/sample/config.json": "ab2e0ea0c799022cfab1832adbdfc82e1fe97f6f7724b32c583cdfa8edf6f2ce",
    "docs/sample/metrics.json": "7566ebc64ab4f7812db8d81c7d88752cbb4e02560f65462dd9f32529b85debb5",
    "assets/equity_curve.png": "c3ab827dddee4045e5fcbc649ab383f6a21a7050a1d94274e282ba76bb93b593",
    "assets/factor_ic.png": "a17742c29b0daa97af491eae0dd0d5eedca79293169f9d7549e494eb0ac5e22a",
    "assets/regime_returns.png": "e0c3dd995cae7a016947a32d1d1d9d3d0276ad87333ee00ac5a94795eef0497b"
  },
  "data_dates": [
    "2015-01-01",
    "2024-12-31"
  ],
  "backtest_dates": [
    "2019-01-01",
    "2024-12-31"
  ],
  "symbols": 160,
  "limitations": [
    "Synthetic data; not market evidence",
    "One seed and configuration",
    "HTML timestamp changes between runs"
  ]
}
