{
  "project": "BDDSE Agent - DSE Portfolio Steward",
  "safety": "Research-only paper portfolio. No broker. No real trades. No investment advice.",
  "overview": {
    "schema": "bdmars.overview.v1",
    "generated_at": "2026-10-16T21:41:36.049337Z",
    "generated_at_dhaka": "2026-10-17 03:41",
    "readiness": {
      "status": "BLOCKED",
      "generated_at": "2026-10-16T21:40:19.401557+00:00",
      "passed": 5,
      "total": 8,
      "gates": [
        {
          "key": "release",
          "title": "Code checks",
          "owner": "system",
          "explain": "Full test suite, lint, type checks and dependency audit pass on the exact code that runs.",
          "status": "pass"
        },
        {
          "key": "sector_mapping",
          "title": "Sector data",
          "owner": "system",
          "explain": "Every listed DSE stock has a sector, so sector rules can be applied.",
          "status": "pass"
        },
        {
          "key": "operational_health",
          "title": "Daily operations",
          "owner": "time",
          "explain": "Over the last 30 days, scheduled jobs must run on time and never report a false success. Old failures roll off as clean days replace them.",
          "status": "fail",
          "progress": {
            "current": 81.6,
            "target": 95,
            "unit": "% on time"
          },
          "checks": [
            {
              "name": "ci artifact age",
              "status": "degraded",
              "note": "verification receipt timestamp"
            },
            {
              "name": "false success count",
              "status": "fail",
              "note": "ok receipts whose own result reports failure, plus PASS reports with non-PASS parts"
            },
            {
              "name": "phase capture completeness",
              "status": "degraded",
              "note": "174/206; due market jobs including missing runs"
            },
            {
              "name": "phase timing compliance",
              "status": "degraded",
              "note": "168/206; slots met by a successful run dispatched <=300s after due, runtime <=720s; later reruns do not count"
            },
            {
              "name": "scheduled job success rate",
              "status": "degraded",
              "note": "246/277; actual attempts in last 30 days"
            },
            {
              "name": "validated row ratio",
              "status": "degraded",
              "note": "17862/20210; persisted validation counts"
            }
          ]
        },
        {
          "key": "burn_in",
          "title": "Live track record",
          "owner": "time",
          "explain": "60 trading days on which every market-hours capture ran on time and passed validation.",
          "status": "blocked",
          "progress": {
            "current": 20,
            "target": 60,
            "unit": "days"
          }
        },
        {
          "key": "coverage_readmission",
          "title": "Historical data coverage",
          "owner": "system",
          "explain": "Share of the 128 largest companies' market value whose newest audited annual report is held and verified: from the company's own website, the right company and year, with the auditor's opinion. Re-checked from scratch, nothing inherited.",
          "status": "pass",
          "progress": {
            "current": 98.02,
            "target": 98,
            "unit": "%"
          }
        },
        {
          "key": "financial_fields",
          "title": "Company financials",
          "owner": "system",
          "explain": "At least 10 stocks need complete, admitted financial statements before value and quality can be scored.",
          "status": "pass",
          "progress": {
            "current": 19,
            "target": 10,
            "unit": "stocks"
          },
          "note": "19 of 313 eligible stocks have complete financials."
        },
        {
          "key": "independent_backup",
          "title": "Off-device backup",
          "owner": "you",
          "explain": "A verified copy of the database on a separate device or in the cloud: a daily copy goes to a private GitHub repository and is checked by downloading it back.",
          "status": "pass",
          "note": "verified cloud copy https://github.com/alviehsan/bdmars-vault-backup/releases/tag/vault-20261016T010031282937Z"
        },
        {
          "key": "model_validation",
          "title": "Independent model review",
          "owner": "you",
          "explain": "Someone other than the system must review the rating model before any real use.",
          "status": "blocked"
        }
      ],
      "burn_in_dates": [
        "2026-08-27",
        "2026-09-01",
        "2026-09-02",
        "2026-09-03",
        "2026-09-06",
        "2026-09-08",
        "2026-09-10",
        "2026-09-16",
        "2026-09-21",
        "2026-09-23",
        "2026-09-28",
        "2026-10-01",
        "2026-10-05",
        "2026-10-06",
        "2026-10-07",
        "2026-10-08",
        "2026-10-11",
        "2026-10-12",
        "2026-10-13",
        "2026-10-15"
      ],
      "note": "Passing every gate would allow a review, not trading. Brokerage stays disconnected."
    },
    "operations": {
      "today": "2026-10-17",
      "is_trading_day": false,
      "calendar_reason": "weekend (Fri+Sat per DSE calendar)",
      "days": [
        {
          "date": "2026-10-15",
          "slots": [
            {
              "job": "calendar_check",
              "label": "Trading-day check",
              "due": "09:00",
              "status": "done",
              "started": "09:00",
              "detail": ""
            },
            {
              "job": "pre_open_brief",
              "label": "Pre-open brief",
              "due": "09:15",
              "status": "done",
              "started": "09:15",
              "detail": ""
            },
            {
              "job": "open_capture",
              "label": "Opening prices",
              "due": "10:05",
              "status": "done",
              "started": "10:05",
              "detail": "237 stocks captured"
            },
            {
              "job": "midday_capture",
              "label": "Midday prices",
              "due": "12:00",
              "status": "done",
              "started": "12:00",
              "detail": "382 stocks captured"
            },
            {
              "job": "close_capture",
              "label": "Closing prices",
              "due": "14:15",
              "status": "done",
              "started": "14:15",
              "detail": "385 stocks captured"
            },
            {
              "job": "index_refresh",
              "label": "Index update",
              "due": "14:20",
              "status": "done",
              "started": "14:20",
              "detail": "ok"
            },
            {
              "job": "rating_refresh",
              "label": "Stock ratings",
              "due": "14:25",
              "status": "done",
              "started": "14:25",
              "detail": "ok"
            },
            {
              "job": "close_report",
              "label": "Close report",
              "due": "14:30",
              "status": "done",
              "started": "14:30",
              "detail": ""
            },
            {
              "job": "live_paper_monitor",
              "label": "Position check",
              "due": "14:45",
              "status": "done",
              "started": "14:45",
              "detail": "ok"
            },
            {
              "job": "official_day_end",
              "label": "Official day-end prices",
              "due": "15:00",
              "status": "done",
              "started": "15:00",
              "detail": "ok"
            },
            {
              "job": "disclosures",
              "label": "DSE announcements",
              "due": "15:05",
              "status": "done",
              "started": "15:05",
              "detail": "ok"
            },
            {
              "job": "learning_track",
              "label": "Learning bets",
              "due": "15:10",
              "status": "done",
              "started": "15:10",
              "detail": "ok"
            }
          ],
          "on_time": 12,
          "due": 12
        },
        {
          "date": "2026-10-14",
          "slots": [
            {
              "job": "calendar_check",
              "label": "Trading-day check",
              "due": "09:00",
              "status": "late",
              "started": "17:52",
              "detail": ""
            },
            {
              "job": "pre_open_brief",
              "label": "Pre-open brief",
              "due": "09:15",
              "status": "late",
              "started": "17:50",
              "detail": ""
            },
            {
              "job": "open_capture",
              "label": "Opening prices",
              "due": "10:05",
              "status": "rejected",
              "started": "17:51",
              "detail": "rejected (outside_phase_window); minimum 185"
            },
            {
              "job": "midday_capture",
              "label": "Midday prices",
              "due": "12:00",
              "status": "rejected",
              "started": "17:51",
              "detail": "rejected (outside_phase_window); minimum 306"
            },
            {
              "job": "close_capture",
              "label": "Closing prices",
              "due": "14:15",
              "status": "rejected",
              "started": "17:51",
              "detail": "rejected (outside_phase_window); minimum 308"
            },
            {
              "job": "index_refresh",
              "label": "Index update",
              "due": "14:20",
              "status": "late",
              "started": "17:51",
              "detail": "ok"
            },
            {
              "job": "rating_refresh",
              "label": "Stock ratings",
              "due": "14:25",
              "status": "failed",
              "started": "17:51",
              "detail": "error"
            },
            {
              "job": "close_report",
              "label": "Close report",
              "due": "14:30",
              "status": "failed",
              "started": "17:51",
              "detail": "error"
            },
            {
              "job": "live_paper_monitor",
              "label": "Position check",
              "due": "14:45",
              "status": "failed",
              "started": "17:51",
              "detail": "error"
            },
            {
              "job": "official_day_end",
              "label": "Official day-end prices",
              "due": "15:00",
              "status": "late",
              "started": "17:52",
              "detail": "ok"
            },
            {
              "job": "disclosures",
              "label": "DSE announcements",
              "due": "15:05",
              "status": "late",
              "started": "17:53",
              "detail": "ok"
            },
            {
              "job": "learning_track",
              "label": "Learning bets",
              "due": "15:10",
              "status": "failed",
              "started": "17:52",
              "detail": "error"
            }
          ],
          "on_time": 0,
          "due": 12
        },
        {
          "date": "2026-10-13",
          "slots": [
            {
              "job": "calendar_check",
              "label": "Trading-day check",
              "due": "09:00",
              "status": "done",
              "started": "09:00",
              "detail": ""
            },
            {
              "job": "pre_open_brief",
              "label": "Pre-open brief",
              "due": "09:15",
              "status": "done",
              "started": "09:15",
              "detail": ""
            },
            {
              "job": "open_capture",
              "label": "Opening prices",
              "due": "10:05",
              "status": "done",
              "started": "10:05",
              "detail": "246 stocks captured"
            },
            {
              "job": "midday_capture",
              "label": "Midday prices",
              "due": "12:00",
              "status": "done",
              "started": "12:00",
              "detail": "384 stocks captured"
            },
            {
              "job": "close_capture",
              "label": "Closing prices",
              "due": "14:15",
              "status": "done",
              "started": "14:15",
              "detail": "387 stocks captured"
            },
            {
              "job": "index_refresh",
              "label": "Index update",
              "due": "14:20",
              "status": "done",
              "started": "14:20",
              "detail": "ok"
            },
            {
              "job": "rating_refresh",
              "label": "Stock ratings",
              "due": "14:25",
              "status": "done",
              "started": "14:25",
              "detail": "ok"
            },
            {
              "job": "close_report",
              "label": "Close report",
              "due": "14:30",
              "status": "done",
              "started": "14:30",
              "detail": ""
            },
            {
              "job": "live_paper_monitor",
              "label": "Position check",
              "due": "14:45",
              "status": "done",
              "started": "14:45",
              "detail": "ok"
            },
            {
              "job": "official_day_end",
              "label": "Official day-end prices",
              "due": "15:00",
              "status": "done",
              "started": "15:00",
              "detail": "ok"
            },
            {
              "job": "disclosures",
              "label": "DSE announcements",
              "due": "15:05",
              "status": "done",
              "started": "15:05",
              "detail": "ok"
            },
            {
              "job": "learning_track",
              "label": "Learning bets",
              "due": "15:10",
              "status": "done",
              "started": "15:10",
              "detail": "ok"
            }
          ],
          "on_time": 12,
          "due": 12
        },
        {
          "date": "2026-10-12",
          "slots": [
            {
              "job": "calendar_check",
              "label": "Trading-day check",
              "due": "09:00",
              "status": "done",
              "started": "09:00",
              "detail": ""
            },
            {
              "job": "pre_open_brief",
              "label": "Pre-open brief",
              "due": "09:15",
              "status": "done",
              "started": "09:15",
              "detail": ""
            },
            {
              "job": "open_capture",
              "label": "Opening prices",
              "due": "10:05",
              "status": "done",
              "started": "10:05",
              "detail": "212 stocks captured"
            },
            {
              "job": "midday_capture",
              "label": "Midday prices",
              "due": "12:00",
              "status": "done",
              "started": "12:00",
              "detail": "383 stocks captured"
            },
            {
              "job": "close_capture",
              "label": "Closing prices",
              "due": "14:15",
              "status": "done",
              "started": "14:15",
              "detail": "385 stocks captured"
            },
            {
              "job": "index_refresh",
              "label": "Index update",
              "due": "14:20",
              "status": "done",
              "started": "14:20",
              "detail": "ok"
            },
            {
              "job": "rating_refresh",
              "label": "Stock ratings",
              "due": "14:25",
              "status": "done",
              "started": "14:25",
              "detail": "ok"
            },
            {
              "job": "close_report",
              "label": "Close report",
              "due": "14:30",
              "status": "done",
              "started": "14:30",
              "detail": ""
            },
            {
              "job": "live_paper_monitor",
              "label": "Position check",
              "due": "14:45",
              "status": "done",
              "started": "14:45",
              "detail": "ok"
            },
            {
              "job": "official_day_end",
              "label": "Official day-end prices",
              "due": "15:00",
              "status": "done",
              "started": "15:00",
              "detail": "ok"
            },
            {
              "job": "disclosures",
              "label": "DSE announcements",
              "due": "15:05",
              "status": "done",
              "started": "15:05",
              "detail": "ok"
            },
            {
              "job": "learning_track",
              "label": "Learning bets",
              "due": "15:10",
              "status": "done",
              "started": "15:10",
              "detail": "ok"
            }
          ],
          "on_time": 12,
          "due": 12
        },
        {
          "date": "2026-10-11",
          "slots": [
            {
              "job": "calendar_check",
              "label": "Trading-day check",
              "due": "09:00",
              "status": "done",
              "started": "09:00",
              "detail": ""
            },
            {
              "job": "pre_open_brief",
              "label": "Pre-open brief",
              "due": "09:15",
              "status": "done",
              "started": "09:15",
              "detail": ""
            },
            {
              "job": "open_capture",
              "label": "Opening prices",
              "due": "10:05",
              "status": "done",
              "started": "10:05",
              "detail": "239 stocks captured"
            },
            {
              "job": "midday_capture",
              "label": "Midday prices",
              "due": "12:00",
              "status": "done",
              "started": "12:00",
              "detail": "383 stocks captured"
            },
            {
              "job": "close_capture",
              "label": "Closing prices",
              "due": "14:15",
              "status": "done",
              "started": "14:15",
              "detail": "385 stocks captured"
            },
            {
              "job": "index_refresh",
              "label": "Index update",
              "due": "14:20",
              "status": "done",
              "started": "14:20",
              "detail": "ok"
            },
            {
              "job": "rating_refresh",
              "label": "Stock ratings",
              "due": "14:25",
              "status": "done",
              "started": "14:25",
              "detail": "ok"
            },
            {
              "job": "close_report",
              "label": "Close report",
              "due": "14:30",
              "status": "done",
              "started": "14:30",
              "detail": ""
            },
            {
              "job": "live_paper_monitor",
              "label": "Position check",
              "due": "14:45",
              "status": "done",
              "started": "14:45",
              "detail": "ok"
            },
            {
              "job": "official_day_end",
              "label": "Official day-end prices",
              "due": "15:00",
              "status": "done",
              "started": "15:00",
              "detail": "ok"
            },
            {
              "job": "disclosures",
              "label": "DSE announcements",
              "due": "15:05",
              "status": "done",
              "started": "15:05",
              "detail": "ok"
            },
            {
              "job": "learning_track",
              "label": "Learning bets",
              "due": "15:10",
              "status": "done",
              "started": "15:10",
              "detail": "ok"
            }
          ],
          "on_time": 12,
          "due": 12
        },
        {
          "date": "2026-10-08",
          "slots": [
            {
              "job": "calendar_check",
              "label": "Trading-day check",
              "due": "09:00",
              "status": "done",
              "started": "09:00",
              "detail": ""
            },
            {
              "job": "pre_open_brief",
              "label": "Pre-open brief",
              "due": "09:15",
              "status": "done",
              "started": "09:15",
              "detail": ""
            },
            {
              "job": "open_capture",
              "label": "Opening prices",
              "due": "10:05",
              "status": "done",
              "started": "10:05",
              "detail": "234 stocks captured"
            },
            {
              "job": "midday_capture",
              "label": "Midday prices",
              "due": "12:00",
              "status": "done",
              "started": "12:00",
              "detail": "384 stocks captured"
            },
            {
              "job": "close_capture",
              "label": "Closing prices",
              "due": "14:15",
              "status": "done",
              "started": "14:15",
              "detail": "385 stocks captured"
            },
            {
              "job": "index_refresh",
              "label": "Index update",
              "due": "14:20",
              "status": "done",
              "started": "14:20",
              "detail": "ok"
            },
            {
              "job": "rating_refresh",
              "label": "Stock ratings",
              "due": "14:25",
              "status": "done",
              "started": "14:25",
              "detail": "ok"
            },
            {
              "job": "close_report",
              "label": "Close report",
              "due": "14:30",
              "status": "done",
              "started": "14:30",
              "detail": ""
            },
            {
              "job": "live_paper_monitor",
              "label": "Position check",
              "due": "14:45",
              "status": "done",
              "started": "14:45",
              "detail": "ok"
            },
            {
              "job": "official_day_end",
              "label": "Official day-end prices",
              "due": "15:00",
              "status": "done",
              "started": "15:00",
              "detail": "ok"
            },
            {
              "job": "disclosures",
              "label": "DSE announcements",
              "due": "15:05",
              "status": "done",
              "started": "15:05",
              "detail": "ok"
            },
            {
              "job": "learning_track",
              "label": "Learning bets",
              "due": "15:10",
              "status": "done",
              "started": "15:10",
              "detail": "ok"
            }
          ],
          "on_time": 12,
          "due": 12
        },
        {
          "date": "2026-10-07",
          "slots": [
            {
              "job": "calendar_check",
              "label": "Trading-day check",
              "due": "09:00",
              "status": "done",
              "started": "09:00",
              "detail": ""
            },
            {
              "job": "pre_open_brief",
              "label": "Pre-open brief",
              "due": "09:15",
              "status": "done",
              "started": "09:15",
              "detail": ""
            },
            {
              "job": "open_capture",
              "label": "Opening prices",
              "due": "10:05",
              "status": "done",
              "started": "10:05",
              "detail": "216 stocks captured"
            },
            {
              "job": "midday_capture",
              "label": "Midday prices",
              "due": "12:00",
              "status": "done",
              "started": "12:00",
              "detail": "386 stocks captured"
            },
            {
              "job": "close_capture",
              "label": "Closing prices",
              "due": "14:15",
              "status": "done",
              "started": "14:15",
              "detail": "391 stocks captured"
            },
            {
              "job": "index_refresh",
              "label": "Index update",
              "due": "14:20",
              "status": "done",
              "started": "14:20",
              "detail": "ok"
            },
            {
              "job": "rating_refresh",
              "label": "Stock ratings",
              "due": "14:25",
              "status": "done",
              "started": "14:25",
              "detail": "ok"
            },
            {
              "job": "close_report",
              "label": "Close report",
              "due": "14:30",
              "status": "done",
              "started": "14:30",
              "detail": ""
            },
            {
              "job": "live_paper_monitor",
              "label": "Position check",
              "due": "14:45",
              "status": "done",
              "started": "14:45",
              "detail": "ok"
            },
            {
              "job": "official_day_end",
              "label": "Official day-end prices",
              "due": "15:00",
              "status": "done",
              "started": "15:00",
              "detail": "ok"
            },
            {
              "job": "disclosures",
              "label": "DSE announcements",
              "due": "15:05",
              "status": "done",
              "started": "15:05",
              "detail": "ok"
            },
            {
              "job": "learning_track",
              "label": "Learning bets",
              "due": "15:10",
              "status": "done",
              "started": "15:10",
              "detail": "ok"
            }
          ],
          "on_time": 12,
          "due": 12
        },
        {
          "date": "2026-10-06",
          "slots": [
            {
              "job": "calendar_check",
              "label": "Trading-day check",
              "due": "09:00",
              "status": "done",
              "started": "09:00",
              "detail": ""
            },
            {
              "job": "pre_open_brief",
              "label": "Pre-open brief",
              "due": "09:15",
              "status": "done",
              "started": "09:15",
              "detail": ""
            },
            {
              "job": "open_capture",
              "label": "Opening prices",
              "due": "10:05",
              "status": "done",
              "started": "10:05",
              "detail": "229 stocks captured"
            },
            {
              "job": "midday_capture",
              "label": "Midday prices",
              "due": "12:00",
              "status": "done",
              "started": "12:00",
              "detail": "388 stocks captured"
            },
            {
              "job": "close_capture",
              "label": "Closing prices",
              "due": "14:15",
              "status": "done",
              "started": "14:15",
              "detail": "390 stocks captured"
            },
            {
              "job": "index_refresh",
              "label": "Index update",
              "due": "14:20",
              "status": "done",
              "started": "14:20",
              "detail": "ok"
            },
            {
              "job": "rating_refresh",
              "label": "Stock ratings",
              "due": "14:25",
              "status": "done",
              "started": "14:25",
              "detail": "ok"
            },
            {
              "job": "close_report",
              "label": "Close report",
              "due": "14:30",
              "status": "done",
              "started": "14:30",
              "detail": ""
            },
            {
              "job": "live_paper_monitor",
              "label": "Position check",
              "due": "14:45",
              "status": "done",
              "started": "14:45",
              "detail": "ok"
            },
            {
              "job": "official_day_end",
              "label": "Official day-end prices",
              "due": "15:00",
              "status": "done",
              "started": "15:00",
              "detail": "ok"
            },
            {
              "job": "disclosures",
              "label": "DSE announcements",
              "due": "15:05",
              "status": "done",
              "started": "15:05",
              "detail": "ok"
            },
            {
              "job": "learning_track",
              "label": "Learning bets",
              "due": "15:10",
              "status": "done",
              "started": "15:10",
              "detail": "ok"
            }
          ],
          "on_time": 12,
          "due": 12
        },
        {
          "date": "2026-10-05",
          "slots": [
            {
              "job": "calendar_check",
              "label": "Trading-day check",
              "due": "09:00",
              "status": "done",
              "started": "09:00",
              "detail": ""
            },
            {
              "job": "pre_open_brief",
              "label": "Pre-open brief",
              "due": "09:15",
              "status": "done",
              "started": "09:15",
              "detail": ""
            },
            {
              "job": "open_capture",
              "label": "Opening prices",
              "due": "10:05",
              "status": "done",
              "started": "10:05",
              "detail": "225 stocks captured"
            },
            {
              "job": "midday_capture",
              "label": "Midday prices",
              "due": "12:00",
              "status": "done",
              "started": "12:00",
              "detail": "383 stocks captured"
            },
            {
              "job": "close_capture",
              "label": "Closing prices",
              "due": "14:15",
              "status": "done",
              "started": "14:15",
              "detail": "386 stocks captured"
            },
            {
              "job": "index_refresh",
              "label": "Index update",
              "due": "14:20",
              "status": "done",
              "started": "14:20",
              "detail": "ok"
            },
            {
              "job": "rating_refresh",
              "label": "Stock ratings",
              "due": "14:25",
              "status": "done",
              "started": "14:25",
              "detail": "ok"
            },
            {
              "job": "close_report",
              "label": "Close report",
              "due": "14:30",
              "status": "done",
              "started": "14:30",
              "detail": ""
            },
            {
              "job": "live_paper_monitor",
              "label": "Position check",
              "due": "14:45",
              "status": "done",
              "started": "14:45",
              "detail": "ok"
            },
            {
              "job": "official_day_end",
              "label": "Official day-end prices",
              "due": "15:00",
              "status": "missed"
            },
            {
              "job": "disclosures",
              "label": "DSE announcements",
              "due": "15:05",
              "status": "failed",
              "started": "15:05",
              "detail": "error"
            },
            {
              "job": "learning_track",
              "label": "Learning bets",
              "due": "15:10",
              "status": "failed",
              "started": "15:11",
              "detail": "error"
            }
          ],
          "on_time": 9,
          "due": 12
        },
        {
          "date": "2026-10-04",
          "slots": [
            {
              "job": "calendar_check",
              "label": "Trading-day check",
              "due": "09:00",
              "status": "done",
              "started": "09:00",
              "detail": ""
            },
            {
              "job": "pre_open_brief",
              "label": "Pre-open brief",
              "due": "09:15",
              "status": "done",
              "started": "09:15",
              "detail": ""
            },
            {
              "job": "open_capture",
              "label": "Opening prices",
              "due": "10:05",
              "status": "done",
              "started": "10:05",
              "detail": "227 stocks captured"
            },
            {
              "job": "midday_capture",
              "label": "Midday prices",
              "due": "12:00",
              "status": "done",
              "started": "12:00",
              "detail": "382 stocks captured"
            },
            {
              "job": "close_capture",
              "label": "Closing prices",
              "due": "14:15",
              "status": "done",
              "started": "14:15",
              "detail": "385 stocks captured"
            },
            {
              "job": "index_refresh",
              "label": "Index update",
              "due": "14:20",
              "status": "missed"
            },
            {
              "job": "rating_refresh",
              "label": "Stock ratings",
              "due": "14:25",
              "status": "failed",
              "started": "14:25",
              "detail": "error"
            },
            {
              "job": "close_report",
              "label": "Close report",
              "due": "14:30",
              "status": "failed",
              "started": "14:31",
              "detail": "error"
            },
            {
              "job": "live_paper_monitor",
              "label": "Position check",
              "due": "14:45",
              "status": "done",
              "started": "14:45",
              "detail": "ok"
            },
            {
              "job": "official_day_end",
              "label": "Official day-end prices",
              "due": "15:00",
              "status": "done",
              "started": "15:00",
              "detail": "ok"
            },
            {
              "job": "disclosures",
              "label": "DSE announcements",
              "due": "15:05",
              "status": "done",
              "started": "15:05",
              "detail": "ok"
            },
            {
              "job": "learning_track",
              "label": "Learning bets",
              "due": "15:10",
              "status": "done",
              "started": "15:10",
              "detail": "ok"
            }
          ],
          "on_time": 9,
          "due": 12
        }
      ]
    },
    "learning": {
      "started": "2026-09-29",
      "open": [
        {
          "bet_id": 986,
          "symbol": "MERCINS",
          "horizon": "1M",
          "decided": "2026-09-29",
          "settles_on_or_after": "2026-10-29",
          "confidence": 86.4,
          "decision_close": 52.1,
          "model_version": "bd-mars@0.2.0",
          "state": "open",
          "fill_date": "2026-09-30",
          "fill_price": 52.1,
          "mark_date": "2026-10-15",
          "mark_price": 44.7,
          "net_return_pct": -15.14,
          "dsex_return_pct": -1.31,
          "relative_return_pct": -13.83
        },
        {
          "bet_id": 994,
          "symbol": "SONALIANSH",
          "horizon": "1W",
          "decided": "2026-10-11",
          "settles_on_or_after": "2026-10-18",
          "confidence": 86.5,
          "decision_close": 243.2,
          "model_version": "bd-mars@0.2.0",
          "state": "open",
          "fill_date": "2026-10-12",
          "fill_price": 244,
          "mark_date": "2026-10-15",
          "mark_price": 238.4,
          "net_return_pct": -3.36,
          "dsex_return_pct": 0.02,
          "relative_return_pct": -3.38
        },
        {
          "bet_id": 995,
          "symbol": "SONALILIFE",
          "horizon": "1W",
          "decided": "2026-10-11",
          "settles_on_or_after": "2026-10-18",
          "confidence": 86.5,
          "decision_close": 98.3,
          "model_version": "bd-mars@0.2.0",
          "state": "open",
          "fill_date": "2026-10-12",
          "fill_price": 98.2,
          "mark_date": "2026-10-15",
          "mark_price": 106.6,
          "net_return_pct": 7.37,
          "dsex_return_pct": 0.02,
          "relative_return_pct": 7.35
        },
        {
          "bet_id": 996,
          "symbol": "SPCERAMICS",
          "horizon": "1W",
          "decided": "2026-10-11",
          "settles_on_or_after": "2026-10-18",
          "confidence": 86.4,
          "decision_close": 23.3,
          "model_version": "bd-mars@0.2.0",
          "state": "open",
          "fill_date": "2026-10-12",
          "fill_price": 23.6,
          "mark_date": "2026-10-15",
          "mark_price": 22.4,
          "net_return_pct": -6.12,
          "dsex_return_pct": 0.02,
          "relative_return_pct": -6.14
        },
        {
          "bet_id": 997,
          "symbol": "SPCERAMICS",
          "horizon": "1M",
          "decided": "2026-10-12",
          "settles_on_or_after": "2026-11-11",
          "confidence": 86.3,
          "decision_close": 22.1,
          "model_version": "bd-mars@0.2.0",
          "state": "open",
          "fill_date": "2026-10-13",
          "fill_price": 22.7,
          "mark_date": "2026-10-15",
          "mark_price": 22.4,
          "net_return_pct": -2.4,
          "dsex_return_pct": 0.87,
          "relative_return_pct": -3.27
        },
        {
          "bet_id": 998,
          "symbol": "SONARGAON",
          "horizon": "1W",
          "decided": "2026-10-12",
          "settles_on_or_after": "2026-10-19",
          "confidence": 86.3,
          "decision_close": 111.2,
          "model_version": "bd-mars@0.2.0",
          "state": "open",
          "fill_date": "2026-10-13",
          "fill_price": 111.9,
          "mark_date": "2026-10-15",
          "mark_price": 119.9,
          "net_return_pct": 5.98,
          "dsex_return_pct": 0.87,
          "relative_return_pct": 5.1
        },
        {
          "bet_id": 999,
          "symbol": "BDLAMPS",
          "horizon": "1W",
          "decided": "2026-10-12",
          "settles_on_or_after": "2026-10-19",
          "confidence": 86.3,
          "decision_close": 248.4,
          "model_version": "bd-mars@0.2.0",
          "state": "open",
          "fill_date": "2026-10-13",
          "fill_price": 248.6,
          "mark_date": "2026-10-15",
          "mark_price": 245.5,
          "net_return_pct": -2.33,
          "dsex_return_pct": 0.87,
          "relative_return_pct": -3.2
        },
        {
          "bet_id": 1000,
          "symbol": "DGIC",
          "horizon": "1W",
          "decided": "2026-10-13",
          "settles_on_or_after": "2026-10-20",
          "confidence": 86.2,
          "decision_close": 41.2,
          "model_version": "bd-mars@0.2.0",
          "state": "open",
          "fill_date": "2026-10-14",
          "fill_price": 41.2,
          "mark_date": "2026-10-15",
          "mark_price": 41.3,
          "net_return_pct": -0.85,
          "dsex_return_pct": 0.8,
          "relative_return_pct": -1.65
        },
        {
          "bet_id": 1001,
          "symbol": "BRACBANK",
          "horizon": "1W",
          "decided": "2026-10-13",
          "settles_on_or_after": "2026-10-20",
          "confidence": 86.2,
          "decision_close": 66.1,
          "model_version": "bd-mars@0.2.0",
          "state": "open",
          "fill_date": "2026-10-14",
          "fill_price": 66.1,
          "mark_date": "2026-10-15",
          "mark_price": 66.2,
          "net_return_pct": -0.94,
          "dsex_return_pct": 0.8,
          "relative_return_pct": -1.74
        },
        {
          "bet_id": 1002,
          "symbol": "ISLAMIINS",
          "horizon": "1W",
          "decided": "2026-10-13",
          "settles_on_or_after": "2026-10-20",
          "confidence": 86.2,
          "decision_close": 66.7,
          "model_version": "bd-mars@0.2.0",
          "state": "open",
          "fill_date": "2026-10-14",
          "fill_price": 66.7,
          "mark_date": "2026-10-15",
          "mark_price": 71.1,
          "net_return_pct": 5.43,
          "dsex_return_pct": 0.8,
          "relative_return_pct": 4.63
        }
      ],
      "settled": [
        {
          "bet_id": 993,
          "symbol": "DGIC",
          "horizon": "1W",
          "decided": "2026-10-01",
          "settled": "2026-10-08",
          "net_return_pct": -3.05,
          "relative_return_pct": -2.04,
          "beat_dsex": false,
          "model_version": "bd-mars@0.2.0"
        },
        {
          "bet_id": 992,
          "symbol": "NITOLINS",
          "horizon": "1W",
          "decided": "2026-10-01",
          "settled": "2026-10-08",
          "net_return_pct": -7.44,
          "relative_return_pct": -6.42,
          "beat_dsex": false,
          "model_version": "bd-mars@0.2.0"
        },
        {
          "bet_id": 991,
          "symbol": "BRACBANK",
          "horizon": "1W",
          "decided": "2026-10-01",
          "settled": "2026-10-08",
          "net_return_pct": -0.19,
          "relative_return_pct": 0.82,
          "beat_dsex": true,
          "model_version": "bd-mars@0.2.0"
        },
        {
          "bet_id": 990,
          "symbol": "ENVOYTEX",
          "horizon": "1W",
          "decided": "2026-09-30",
          "settled": "2026-10-07",
          "net_return_pct": -1.91,
          "relative_return_pct": -0.35,
          "beat_dsex": false,
          "model_version": "bd-mars@0.2.0"
        },
        {
          "bet_id": 989,
          "symbol": "MATINSPINN",
          "horizon": "1W",
          "decided": "2026-09-30",
          "settled": "2026-10-07",
          "net_return_pct": 18.85,
          "relative_return_pct": 20.41,
          "beat_dsex": true,
          "model_version": "bd-mars@0.2.0"
        },
        {
          "bet_id": 988,
          "symbol": "ETL",
          "horizon": "1W",
          "decided": "2026-09-30",
          "settled": "2026-10-07",
          "net_return_pct": -0.48,
          "relative_return_pct": 1.08,
          "beat_dsex": true,
          "model_version": "bd-mars@0.2.0"
        },
        {
          "bet_id": 987,
          "symbol": "PTL",
          "horizon": "1W",
          "decided": "2026-09-29",
          "settled": "2026-10-06",
          "net_return_pct": 2.8,
          "relative_return_pct": 4.6,
          "beat_dsex": true,
          "model_version": "bd-mars@0.2.0"
        },
        {
          "bet_id": 985,
          "symbol": "MERCINS",
          "horizon": "1W",
          "decided": "2026-09-29",
          "settled": "2026-10-06",
          "net_return_pct": -12.48,
          "relative_return_pct": -10.68,
          "beat_dsex": false,
          "model_version": "bd-mars@0.2.0"
        }
      ],
      "metrics": {
        "track": "price_only_learning",
        "open": 10,
        "overall": {
          "settled": 8,
          "with_benchmark": 8,
          "beat_benchmark_rate": 0.5,
          "mean_net_return_pct": -0.4872,
          "mean_relative_return_pct": 0.9278
        },
        "by_model_version": {
          "bd-mars@0.2.0": {
            "settled": 8,
            "with_benchmark": 8,
            "beat_benchmark_rate": 0.5,
            "mean_net_return_pct": -0.4872,
            "mean_relative_return_pct": 0.9278
          }
        },
        "by_outcome_month": {
          "2026-10": {
            "settled": 8,
            "with_benchmark": 8,
            "beat_benchmark_rate": 0.5,
            "mean_net_return_pct": -0.4872,
            "mean_relative_return_pct": 0.9278
          }
        },
        "last_20": {
          "settled": 8,
          "with_benchmark": 8,
          "beat_benchmark_rate": 0.5,
          "mean_net_return_pct": -0.4872,
          "mean_relative_return_pct": 0.9278
        },
        "note": "Price-only paper learning track. Net of modelled costs; filled at next official open. Not a production signal and not evidence of investment performance."
      },
      "last_run": "2026-10-15",
      "open_marked_avg_relative_pct": -1.61,
      "rules": {
        "max_new_per_day": 3,
        "max_open": 15,
        "horizons": [
          "1W",
          "1M"
        ],
        "round_trip_cost_pct": 1.1,
        "entry": "next session's official open",
        "exit": "official close at the horizon",
        "benchmark": "DSEX"
      },
      "note": "Learning bets use price evidence only because company financials are not yet admitted. Paper only, net of modelled costs. Not investment advice."
    },
    "live_paper": {
      "asof": "2026-10-15",
      "positions": [],
      "alerts": [],
      "equity_bdt": 500000,
      "gross_used_pct": 0
    },
    "ratings": {
      "asof": "2026-10-15",
      "rated": 54,
      "model_version": "bd-mars@0.2.0",
      "production_1m": [],
      "price_only_1m": [],
      "production_a_range": 0,
      "price_only_a_range": 0,
      "top": [
        {
          "symbol": "ANWARGALV",
          "sector": "Engineering",
          "merit": 73.3,
          "production_1m": "Watch",
          "price_only_1m": "Watch",
          "price_only_confidence": 71.6
        },
        {
          "symbol": "GQBALLPEN",
          "sector": "Miscellaneous",
          "merit": 71.8,
          "production_1m": "Watch",
          "price_only_1m": "Watch",
          "price_only_confidence": 71.6
        },
        {
          "symbol": "BDLAMPS",
          "sector": "Engineering",
          "merit": 76.6,
          "production_1m": "Watch",
          "price_only_1m": "Watch",
          "price_only_confidence": 71.4
        },
        {
          "symbol": "SONARGAON",
          "sector": "Textile",
          "merit": 79.7,
          "production_1m": "Watch",
          "price_only_1m": "Watch",
          "price_only_confidence": 71.4
        },
        {
          "symbol": "SONALIANSH",
          "sector": "Jute",
          "merit": 77.2,
          "production_1m": "Watch",
          "price_only_1m": "Watch",
          "price_only_confidence": 71.4
        },
        {
          "symbol": "SONALILIFE",
          "sector": "Insurance",
          "merit": 84.1,
          "production_1m": "Watch",
          "price_only_1m": "Watch",
          "price_only_confidence": 71.3
        },
        {
          "symbol": "ISLAMIINS",
          "sector": "Insurance",
          "merit": 84,
          "production_1m": "Watch",
          "price_only_1m": "Watch",
          "price_only_confidence": 71.3
        },
        {
          "symbol": "DGIC",
          "sector": "Insurance",
          "merit": 87.2,
          "production_1m": "Watch",
          "price_only_1m": "Watch",
          "price_only_confidence": 71.2
        },
        {
          "symbol": "PARAMOUNT",
          "sector": "Insurance",
          "merit": 78.5,
          "production_1m": "Watch",
          "price_only_1m": "Watch",
          "price_only_confidence": 71.2
        },
        {
          "symbol": "BRACBANK",
          "sector": "Bank",
          "merit": 74.7,
          "production_1m": "Watch",
          "price_only_1m": "Watch",
          "price_only_confidence": 71.1
        }
      ],
      "note": "Production labels are capped below A while financials are missing; price-only labels show what price evidence alone says."
    },
    "data": {
      "official_sessions": [
        {
          "date": "2026-10-15",
          "stocks": 385
        },
        {
          "date": "2026-10-14",
          "stocks": 385
        },
        {
          "date": "2026-10-13",
          "stocks": 387
        },
        {
          "date": "2026-10-12",
          "stocks": 385
        },
        {
          "date": "2026-10-11",
          "stocks": 385
        },
        {
          "date": "2026-10-08",
          "stocks": 385
        },
        {
          "date": "2026-10-07",
          "stocks": 391
        },
        {
          "date": "2026-10-06",
          "stocks": 390
        },
        {
          "date": "2026-10-05",
          "stocks": 386
        },
        {
          "date": "2026-10-04",
          "stocks": 385
        }
      ],
      "dsex": [
        {
          "date": "2026-04-22",
          "value": 5298.58
        },
        {
          "date": "2026-04-23",
          "value": 5298.59
        },
        {
          "date": "2026-04-26",
          "value": 5316.18
        },
        {
          "date": "2026-04-27",
          "value": 5300.57
        },
        {
          "date": "2026-04-28",
          "value": 5308.89
        },
        {
          "date": "2026-04-29",
          "value": 5317.36
        },
        {
          "date": "2026-04-30",
          "value": 5286.87
        },
        {
          "date": "2026-05-03",
          "value": 5265.39
        },
        {
          "date": "2026-05-04",
          "value": 5277.81
        },
        {
          "date": "2026-05-05",
          "value": 5267.23
        },
        {
          "date": "2026-05-06",
          "value": 5248.37
        },
        {
          "date": "2026-05-07",
          "value": 5234.1
        },
        {
          "date": "2026-05-10",
          "value": 5220.95
        },
        {
          "date": "2026-05-11",
          "value": 5205.26
        },
        {
          "date": "2026-05-12",
          "value": 5229.96
        },
        {
          "date": "2026-05-13",
          "value": 5243.43
        },
        {
          "date": "2026-05-14",
          "value": 5245.22
        },
        {
          "date": "2026-05-17",
          "value": 5226.18
        },
        {
          "date": "2026-05-18",
          "value": 5203.11
        },
        {
          "date": "2026-05-19",
          "value": 5211.54
        },
        {
          "date": "2026-05-20",
          "value": 5222.38
        },
        {
          "date": "2026-05-21",
          "value": 5264.12
        },
        {
          "date": "2026-05-23",
          "value": 5328.36
        },
        {
          "date": "2026-05-24",
          "value": 5335.87
        },
        {
          "date": "2026-06-01",
          "value": 5372.63
        },
        {
          "date": "2026-06-02",
          "value": 5406.2
        },
        {
          "date": "2026-06-03",
          "value": 5441.66
        },
        {
          "date": "2026-06-04",
          "value": 5475
        },
        {
          "date": "2026-06-07",
          "value": 5516.16
        },
        {
          "date": "2026-06-08",
          "value": 5483
        },
        {
          "date": "2026-06-09",
          "value": 5519.49
        },
        {
          "date": "2026-06-10",
          "value": 5516.82
        },
        {
          "date": "2026-06-11",
          "value": 5520.4
        },
        {
          "date": "2026-06-14",
          "value": 5625.35
        },
        {
          "date": "2026-06-15",
          "value": 5640.76
        },
        {
          "date": "2026-06-16",
          "value": 5605.57
        },
        {
          "date": "2026-06-17",
          "value": 5621.63
        },
        {
          "date": "2026-06-18",
          "value": 5661.38
        },
        {
          "date": "2026-06-21",
          "value": 5639.89
        },
        {
          "date": "2026-06-22",
          "value": 5554.18
        },
        {
          "date": "2026-06-23",
          "value": 5605.25
        },
        {
          "date": "2026-06-24",
          "value": 5616.83
        },
        {
          "date": "2026-06-25",
          "value": 5652.82
        },
        {
          "date": "2026-06-28",
          "value": 5719.76
        },
        {
          "date": "2026-06-29",
          "value": 5722.54
        },
        {
          "date": "2026-06-30",
          "value": 5762.83
        },
        {
          "date": "2026-07-02",
          "value": 5743.86
        },
        {
          "date": "2026-07-05",
          "value": 5787.41
        },
        {
          "date": "2026-07-06",
          "value": 5799.51
        },
        {
          "date": "2026-07-07",
          "value": 5781.27
        },
        {
          "date": "2026-07-08",
          "value": 5770.27
        },
        {
          "date": "2026-07-09",
          "value": 5804.06
        },
        {
          "date": "2026-07-12",
          "value": 5849.22
        },
        {
          "date": "2026-07-13",
          "value": 5866.55
        },
        {
          "date": "2026-07-14",
          "value": 5911.24
        },
        {
          "date": "2026-07-15",
          "value": 5926.28
        },
        {
          "date": "2026-07-16",
          "value": 5900.36
        },
        {
          "date": "2026-07-19",
          "value": 5855.72
        },
        {
          "date": "2026-07-20",
          "value": 5857.62
        },
        {
          "date": "2026-07-21",
          "value": 5898.96
        },
        {
          "date": "2026-07-22",
          "value": 5871.06
        },
        {
          "date": "2026-07-23",
          "value": 5804.3
        },
        {
          "date": "2026-07-26",
          "value": 5784.37
        },
        {
          "date": "2026-07-27",
          "value": 5839.77
        },
        {
          "date": "2026-07-28",
          "value": 5900.27
        },
        {
          "date": "2026-07-29",
          "value": 5878.85
        },
        {
          "date": "2026-07-30",
          "value": 5895.58
        },
        {
          "date": "2026-08-02",
          "value": 5895.78
        },
        {
          "date": "2026-08-03",
          "value": 5885.69
        },
        {
          "date": "2026-08-04",
          "value": 5894.13
        },
        {
          "date": "2026-08-06",
          "value": 5860.96
        },
        {
          "date": "2026-08-09",
          "value": 5822.32
        },
        {
          "date": "2026-08-10",
          "value": 5844.87
        },
        {
          "date": "2026-08-11",
          "value": 5903.53
        },
        {
          "date": "2026-08-12",
          "value": 5897.27
        },
        {
          "date": "2026-08-13",
          "value": 5883.91
        },
        {
          "date": "2026-08-16",
          "value": 5859.98
        },
        {
          "date": "2026-08-17",
          "value": 5814.27
        },
        {
          "date": "2026-08-18",
          "value": 5773.63
        },
        {
          "date": "2026-08-19",
          "value": 5769.71
        },
        {
          "date": "2026-08-20",
          "value": 5786.08
        },
        {
          "date": "2026-08-23",
          "value": 5722.21
        },
        {
          "date": "2026-08-24",
          "value": 5643.57
        },
        {
          "date": "2026-08-25",
          "value": 5640.09
        },
        {
          "date": "2026-08-27",
          "value": 5655.68
        },
        {
          "date": "2026-08-30",
          "value": 5614.29
        },
        {
          "date": "2026-08-31",
          "value": 5598.08
        },
        {
          "date": "2026-09-01",
          "value": 5637.3
        },
        {
          "date": "2026-09-02",
          "value": 5660.41
        },
        {
          "date": "2026-09-03",
          "value": 5662.09
        },
        {
          "date": "2026-09-06",
          "value": 5558.45
        },
        {
          "date": "2026-09-07",
          "value": 5567.42
        },
        {
          "date": "2026-09-08",
          "value": 5539.32
        },
        {
          "date": "2026-09-09",
          "value": 5537.88
        },
        {
          "date": "2026-09-10",
          "value": 5515.17
        },
        {
          "date": "2026-09-13",
          "value": 5418.55
        },
        {
          "date": "2026-09-14",
          "value": 5379
        },
        {
          "date": "2026-09-15",
          "value": 5472.46
        },
        {
          "date": "2026-09-16",
          "value": 5494.07
        },
        {
          "date": "2026-09-17",
          "value": 5532.15
        },
        {
          "date": "2026-09-20",
          "value": 5592.21
        },
        {
          "date": "2026-09-21",
          "value": 5550.5
        },
        {
          "date": "2026-09-22",
          "value": 5540.32
        },
        {
          "date": "2026-09-23",
          "value": 5596.22
        },
        {
          "date": "2026-09-24",
          "value": 5578.33
        },
        {
          "date": "2026-09-27",
          "value": 5532.75
        },
        {
          "date": "2026-09-28",
          "value": 5525.86
        },
        {
          "date": "2026-09-29",
          "value": 5524.37
        },
        {
          "date": "2026-09-30",
          "value": 5550.44
        },
        {
          "date": "2026-10-01",
          "value": 5531.65
        },
        {
          "date": "2026-10-04",
          "value": 5482.36
        },
        {
          "date": "2026-10-05",
          "value": 5445.28
        },
        {
          "date": "2026-10-06",
          "value": 5424.91
        },
        {
          "date": "2026-10-07",
          "value": 5463.89
        },
        {
          "date": "2026-10-08",
          "value": 5475.58
        },
        {
          "date": "2026-10-11",
          "value": 5451.04
        },
        {
          "date": "2026-10-12",
          "value": 5404.87
        },
        {
          "date": "2026-10-13",
          "value": 5408.9
        },
        {
          "date": "2026-10-14",
          "value": 5429.37
        },
        {
          "date": "2026-10-15",
          "value": 5452.06
        }
      ],
      "eligible_stocks": 313,
      "unknown_sectors": 0,
      "financially_ready": 19,
      "excluded_non_equity": 106
    },
    "history_replay": {
      "runs": 20,
      "hit_rate_pct": 25,
      "avg_relative_return_pct": -2.6311,
      "window": "last_20",
      "note": "Historical replays on 2012-2026 data with the future hidden. Useful for testing rules, not a live track record."
    },
    "milestones": [
      {
        "date": "2026-06-24",
        "title": "First live paper position",
        "detail": "MALEKSPIN opened under the experimental turnover-only policy (BDT 5,000 paper notional)."
      },
      {
        "date": "2026-09-28",
        "title": "Audit fixes and data repair",
        "detail": "False-success receipts fixed, stale ratings removed, 62,648 daily prices repaired from DSE's official day-end archive, sectors completed, rating model bd-mars@0.2.0."
      },
      {
        "date": "2026-09-29",
        "title": "Learning track started",
        "detail": "Up to 3 price-only paper bets a day, filled at the next official open and scored against DSEX."
      },
      {
        "date": "2026-09-30",
        "title": "Learning track refined",
        "detail": "Mutual funds and bonds excluded; each day's bets spread across different stocks."
      },
      {
        "date": "2026-10-01",
        "title": "Index history repaired; opening-capture minimum recalibrated; new dashboard",
        "detail": "230 missing DSEX/DS30 days added and 86 one-day-shifted values corrected from DSE's official market-summary archive. Normal early-session opens (about 230-310 stocks) no longer fail a fixed 250-stock minimum. Dashboard rebuilt around progress. Rejected captures now leave quality-log evidence (the log had been silent since 16 Jul), and 1,719 stale DSE/CSE warnings about since-replaced prices were closed."
      },
      {
        "date": "2026-10-01",
        "title": "Off-site backup, DSE announcements, first audited financials",
        "detail": "Daily vault backup to a private GitHub repository, verified by downloading it back. DSE announcements and declared dividends/bonus shares now captured after every session and applied to paper returns. Audited figures for the first 4 companies admitted from their own annual reports, each year checked against DSE's published EPS."
      },
      {
        "date": "2026-10-04",
        "title": "Audited-financials gate passed: 13 companies (10 required)",
        "detail": "Scanned reports are now read with local page-finding plus Gemini transcription, and every figure from a scan must be confirmed by a second, independent reader. Older reports come from the Internet Archive's copies of each company's own site. Companies whose share count changed are held back. Thirteen companies admitted, every year checked against DSE's published EPS, profit and NAV."
      },
      {
        "date": "2026-10-05",
        "title": "18 companies with verified audited financials; index gap self-repairs",
        "detail": "Reports now read with Gemini 3.8 Flash High. Added OLYMPIC, GP, MARICO, SILCOPHL and BEACONPHAR, including reports found only through each company's own JavaScript pages. The scanner handles rotated pages, text drawn as outlines and garbled scanner OCR. The missing 4 Oct DSEX/DS30 close was filled from DSE's official archive, and future misses fill themselves at close. 14 past failed captures now have quality-log entries."
      },
      {
        "date": "2026-10-08",
        "title": "Document coverage re-checked from scratch: 65.9% verified (98% needed)",
        "detail": "Every one of the 128 largest companies was re-checked: its newest audited annual report must come from the company's own website (or a file its own page links), name the right company and year, and carry the auditor's opinion. 82 companies pass. This replaces the earlier 89% figure, which rested on documents with no recorded source (one was a different company's report). Sponsor holdings now come from DSE's year-end shareholding figure: ACMELAB admitted (19 companies with verified financials) and GP's sponsor holding corrected from 55.8% to 90%."
      },
      {
        "date": "2026-10-11",
        "title": "Document coverage 81.3% (98% needed)",
        "detail": "Official sources found for Robi, City Bank, Walton, Beximco Pharma and Meghna Petroleum all passed the same checks (Walton's and Beximco Pharma's files sit on other hosts their own investor pages link). 87 of 128 companies now verified. Padma Oil's candidate was correctly rejected (published before its year ended). Pubali Bank's site blocks automated access behind a bot check."
      },
      {
        "date": "2026-10-12",
        "title": "Document coverage 83.2% (98% needed)",
        "detail": "Pubali Bank's 2025 annual report, downloaded by hand from the bank's own site (its bot check blocks automated downloads), passed the same year, opinion and company-name checks and is recorded with that provenance. 88 of 128 companies verified."
      },
      {
        "date": "2026-10-12",
        "title": "Document coverage 97.9% (98% needed)",
        "detail": "122 of 128 companies verified. Added from the companies' own sites: Rupali, Shahjalal, IFIC (its audited 2025 statements, a scan read by the pipeline's OCR), Padma Oil, KPCL, Apex, Sharp and Lovello, after the checker learned to read a hyphenated line break, a period for a comma and \"except\" without \"for\" in auditors' opinions. Still missing: BBS Cables and ADN Telecom (expired certificates), Reliance (no 2025 report online), Beximco and LankaBangla (2025 not published) and Keya (no website)."
      },
      {
        "date": "2026-10-14",
        "title": "Document coverage 98.0% - coverage gate passed",
        "detail": "123 of 128 companies verified (98.02% of market value; 98% needed). ADN Telecom renewed its expired certificate and its 2025 annual report passed the same year, opinion and company-name checks. Still missing: Beximco and LankaBangla (2025 not published), Reliance (no 2025 report online), Keya (no website) and BBS Cables (expired certificate)."
      },
      {
        "date": "2026-10-15",
        "title": "Model 0.3.0: pullback and calm stocks, fundamentals for 59 companies",
        "detail": "Backtests on 335 dates showed the old model chased hot stocks, which ranked returns worse than chance. 0.3.0 favours calm stocks after a pullback; it ranked returns better in 2013-2023 and in the unseen 2024-2025, though its picks still trail DSEX after costs. Codex was added beside Gemini to read audited reports; losses are no longer rejected; 38 companies' newest audited year was admitted (59 in total), so value and quality now score them. Evidence: reports/model_v030_evidence.md."
      }
    ],
    "attention": [
      {
        "level": "decision",
        "title": "Independent model review",
        "detail": "Have someone independent review the rating model (rules, weights and the learning-track results) before any real use. The system cannot sign this off itself."
      }
    ]
  },
  "data_caveats": [
    "Research-grade Mendeley universe; partial survivorship universe preserved.",
    "Bangladesh Bank remains blocked and is not used by automation.",
    "Blind experiments use vaults cut off at asof_date; future rows are used only for outcome measurement."
  ],
  "blind_experiment": {
    "runs": 20,
    "settled": 20,
    "no_positions": 0,
    "hits": 5,
    "misses": 15,
    "hit_rate_pct": 25,
    "avg_actual_return_pct": -2.0818,
    "avg_relative_return_pct": -2.6311,
    "worst_miss_pct": 0,
    "best_hit_pct": 0,
    "learning_score_sum": 0,
    "scorecard_path": "reports/scorecard.md",
    "window": "last_20",
    "window_source": "performance_windows"
  },
  "live_experiment": {
    "runs": 0,
    "settled": 0,
    "pending": 0,
    "no_positions": 0,
    "hits": 0,
    "misses": 0,
    "partials": 0,
    "hit_rate_pct": 0,
    "avg_actual_return_pct": 0,
    "avg_relative_return_pct": 0,
    "worst_miss_pct": 0,
    "best_hit_pct": 0,
    "window": "none",
    "window_source": "empty"
  },
  "reinforcement": {
    "blind_runs_total": 1665,
    "live_runs_total": 0,
    "blind_settled": 60,
    "live_settled": 0,
    "blind_hit_rate_pct": 43.33,
    "live_hit_rate_pct": 0,
    "cumulative_learning_score": -484,
    "last_run_at": "2026-10-16T20:09:54Z",
    "last_mode": "blind",
    "last_status": "ran_opened",
    "last_asof_date": "2015-05-14",
    "weak_performance_detected": true,
    "deeper_research_mode": true,
    "cooldown_until": "2026-10-16T21:09:54Z",
    "batch_index": 50,
    "cycles_completed_in_batch": 18,
    "by_horizon": {
      "1M": {
        "n": 60,
        "hits": 26,
        "hit_rate_pct": 43.33,
        "avg_relative_return_pct": 0.5582
      }
    },
    "till_date": {
      "blind": {
        "n": 60,
        "avg_till_date_return_pct": -4.2743,
        "best": 408.0637,
        "worst": -88.5736
      },
      "market_open": {
        "n": 0,
        "avg_till_date_return_pct": null,
        "best": null,
        "worst": null
      },
      "market_close": {
        "n": 0,
        "avg_till_date_return_pct": null,
        "best": null,
        "worst": null
      }
    }
  },
  "weight_proposal": {
    "version": "none",
    "approved": false,
    "activated": false,
    "evidence_bets": 60,
    "best_pillar": "risk_control",
    "worst_pillar": "news_event",
    "proposed_core_shift": "+5 risk_control / -5 sector_regime"
  },
  "time_series": {
    "cycles": [
      {
        "i": 1,
        "asof_date": "2014-01-16",
        "symbol": "SQURPHARMA",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 12.7262,
        "benchmark_return_pct": 4.3041,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 2,
        "asof_date": "2014-03-02",
        "symbol": "PUBALIBANK",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 6.489,
        "benchmark_return_pct": -3.6268,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 3,
        "asof_date": "2014-03-10",
        "symbol": "LHB",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 24.6421,
        "benchmark_return_pct": -1.5269,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 4,
        "asof_date": "2014-06-17",
        "symbol": "SQUARETEXT",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -2.439,
        "benchmark_return_pct": 1.228,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 5,
        "asof_date": "2014-07-06",
        "symbol": "BEXIMCO",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 4.8818,
        "benchmark_return_pct": 1.3833,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 6,
        "asof_date": "2014-07-08",
        "symbol": "BEXIMCO",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 4.2248,
        "benchmark_return_pct": 2.5061,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 7,
        "asof_date": "2014-12-24",
        "symbol": "JAMUNAOIL",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -1.2671,
        "benchmark_return_pct": -2.2143,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 8,
        "asof_date": "2014-12-28",
        "symbol": "QUASEMIND",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -17.0132,
        "benchmark_return_pct": -0.9216,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 9,
        "asof_date": "2015-01-26",
        "symbol": "GP",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 0.6213,
        "benchmark_return_pct": 0.7198,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 10,
        "asof_date": "2015-02-18",
        "symbol": "ILFSL",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -21.8271,
        "benchmark_return_pct": -5.6028,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 11,
        "asof_date": "2015-05-14",
        "symbol": "BRACBANK",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 4.208,
        "benchmark_return_pct": 3.2094,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 12,
        "asof_date": "2015-05-25",
        "symbol": "SQUARETEXT",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -0.8317,
        "benchmark_return_pct": -3.4188,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 13,
        "asof_date": "2015-06-17",
        "symbol": "SQUARETEXT",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -3.034,
        "benchmark_return_pct": 4.5037,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 14,
        "asof_date": "2015-07-05",
        "symbol": "HEIDELBCEM",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 1.4365,
        "benchmark_return_pct": 7.4034,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 15,
        "asof_date": "2015-07-21",
        "symbol": "HEIDELBCEM",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -13.6063,
        "benchmark_return_pct": 2.3004,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 16,
        "asof_date": "2015-11-11",
        "symbol": "IPDC",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 6.3402,
        "benchmark_return_pct": 3.916,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 17,
        "asof_date": "2015-12-07",
        "symbol": "CROWNCEMNT",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -11.5261,
        "benchmark_return_pct": 1.5573,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 18,
        "asof_date": "2015-12-28",
        "symbol": "LINDEBD",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -3.171,
        "benchmark_return_pct": -0.1381,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 19,
        "asof_date": "2016-02-02",
        "symbol": "DBH",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -20.717,
        "benchmark_return_pct": -2.5759,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 20,
        "asof_date": "2016-03-24",
        "symbol": "POWERGRID",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 10.8408,
        "benchmark_return_pct": -0.7379,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 21,
        "asof_date": "2016-04-18",
        "symbol": "AMBEEPHA",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -15.3313,
        "benchmark_return_pct": -0.6173,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 22,
        "asof_date": "2016-04-27",
        "symbol": "MPETROLEUM",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -15.528,
        "benchmark_return_pct": 4.4311,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 23,
        "asof_date": "2016-05-15",
        "symbol": "LINDEBD",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -5.8056,
        "benchmark_return_pct": 3.125,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 24,
        "asof_date": "2016-06-14",
        "symbol": "BRACBANK",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -3.8359,
        "benchmark_return_pct": 2.9219,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 25,
        "asof_date": "2016-08-01",
        "symbol": "BRACBANK",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -4.0816,
        "benchmark_return_pct": -0.1573,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 26,
        "asof_date": "2016-08-09",
        "symbol": "BRACBANK",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -4.6421,
        "benchmark_return_pct": 0.7312,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 27,
        "asof_date": "2016-09-26",
        "symbol": "MBL1STMF",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -4.6647,
        "benchmark_return_pct": -0.5504,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 28,
        "asof_date": "2016-09-27",
        "symbol": "BSC",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -11.8124,
        "benchmark_return_pct": -0.8863,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 29,
        "asof_date": "2016-10-02",
        "symbol": "PRIMETEX",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -10.6078,
        "benchmark_return_pct": -2.0054,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 30,
        "asof_date": "2017-02-22",
        "symbol": "BARKAPOWER",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -14.078,
        "benchmark_return_pct": 1.2814,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 31,
        "asof_date": "2017-05-15",
        "symbol": "BDCOM",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 19.967,
        "benchmark_return_pct": 0.5833,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 32,
        "asof_date": "2017-06-18",
        "symbol": "PTL",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -15.8842,
        "benchmark_return_pct": 6.548,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 33,
        "asof_date": "2017-07-03",
        "symbol": "BSC",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -8.8986,
        "benchmark_return_pct": 2.8776,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 34,
        "asof_date": "2017-09-11",
        "symbol": "KEYACOSMET",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -7.7026,
        "benchmark_return_pct": -0.6932,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 35,
        "asof_date": "2017-10-19",
        "symbol": "EBL1STMF",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -0.3158,
        "benchmark_return_pct": 4.4274,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 36,
        "asof_date": "2017-10-25",
        "symbol": "RANFOUNDRY",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -24.1016,
        "benchmark_return_pct": 5.5878,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 37,
        "asof_date": "2017-11-06",
        "symbol": "BRACBANK",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -1.8781,
        "benchmark_return_pct": 2.6503,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 38,
        "asof_date": "2018-01-01",
        "symbol": "BBSCABLES",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 1.0227,
        "benchmark_return_pct": -3.4317,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 39,
        "asof_date": "2018-02-07",
        "symbol": "USMANIAGL",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 18.941,
        "benchmark_return_pct": -2.7455,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 40,
        "asof_date": "2018-05-06",
        "symbol": "RUPALILIFE",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -5.3252,
        "benchmark_return_pct": -6.1022,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 41,
        "asof_date": "2018-05-09",
        "symbol": "UPGDCL",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 8.3186,
        "benchmark_return_pct": -5.4029,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 42,
        "asof_date": "2018-05-28",
        "symbol": "LEGACYFOOT",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -12.912,
        "benchmark_return_pct": 0.2145,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 43,
        "asof_date": "2018-06-20",
        "symbol": "UPGDCL",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 14.1409,
        "benchmark_return_pct": -0.8485,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 44,
        "asof_date": "2018-07-30",
        "symbol": "UPGDCL",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 1.8803,
        "benchmark_return_pct": 6.6101,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 45,
        "asof_date": "2019-01-27",
        "symbol": "PREMIERBAN",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -5.2631,
        "benchmark_return_pct": -3.381,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 46,
        "asof_date": "2019-02-18",
        "symbol": "SHEPHERD",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -9.8249,
        "benchmark_return_pct": -2.1655,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 47,
        "asof_date": "2019-02-27",
        "symbol": "BERGERPBL",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 0.7181,
        "benchmark_return_pct": -3.8503,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 48,
        "asof_date": "2019-04-02",
        "symbol": "JAMUNABANK",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 21.46,
        "benchmark_return_pct": -4.2631,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 49,
        "asof_date": "2019-05-06",
        "symbol": "ECABLES",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 20.283,
        "benchmark_return_pct": 1.1397,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 50,
        "asof_date": "2019-07-31",
        "symbol": "ESQUIRENIT",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -9.3946,
        "benchmark_return_pct": -1.3253,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 51,
        "asof_date": "2019-12-01",
        "symbol": "BEACONPHAR",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 41.2401,
        "benchmark_return_pct": -6.4201,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 52,
        "asof_date": "2019-12-30",
        "symbol": "BXPHARMA",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 3.2749,
        "benchmark_return_pct": 0.6481,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 53,
        "asof_date": "2020-01-09",
        "symbol": "BEACONPHAR",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 0.5823,
        "benchmark_return_pct": 4.5591,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 54,
        "asof_date": "2020-06-03",
        "symbol": "RENATA",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -2.002,
        "benchmark_return_pct": 0.4571,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 55,
        "asof_date": "2020-08-03",
        "symbol": "LINDEBD",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -11.8574,
        "benchmark_return_pct": 14.5072,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 56,
        "asof_date": "2020-10-14",
        "symbol": "BGIC",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -5.409,
        "benchmark_return_pct": 0.5928,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 57,
        "asof_date": "2020-11-16",
        "symbol": "GRAMEENS2",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -21.7557,
        "benchmark_return_pct": 4.8572,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 58,
        "asof_date": "2020-11-18",
        "symbol": "ALARABANK",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -1.6171,
        "benchmark_return_pct": 3.8358,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 59,
        "asof_date": "2021-03-02",
        "symbol": "BEACONPHAR",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 4.0539,
        "benchmark_return_pct": -4.316,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 60,
        "asof_date": "2021-03-24",
        "symbol": "PREMIERBAN",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -17.6148,
        "benchmark_return_pct": 3.1536,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 61,
        "asof_date": "2021-05-12",
        "symbol": "PRIMEBANK",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 1.9732,
        "benchmark_return_pct": 4.9658,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 62,
        "asof_date": "2021-08-05",
        "symbol": "RAKCERAMIC",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -2.1493,
        "benchmark_return_pct": 6.9245,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 63,
        "asof_date": "2021-08-18",
        "symbol": "SPCL",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 14.3333,
        "benchmark_return_pct": 6.2016,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 64,
        "asof_date": "2021-09-06",
        "symbol": "DOREENPWR",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -3.1469,
        "benchmark_return_pct": 3.8945,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 65,
        "asof_date": "2021-10-21",
        "symbol": "WATACHEM",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -2.5036,
        "benchmark_return_pct": 0.1334,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 66,
        "asof_date": "2021-10-27",
        "symbol": "SILCOPHL",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -8.2839,
        "benchmark_return_pct": -3.3941,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 67,
        "asof_date": "2022-03-09",
        "symbol": "BDCOM",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 6.2025,
        "benchmark_return_pct": 0.4891,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 68,
        "asof_date": "2022-05-17",
        "symbol": "JAMUNABANK",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 6.924,
        "benchmark_return_pct": 0.3472,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 69,
        "asof_date": "2022-05-25",
        "symbol": "GSPFINANCE",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -2.6082,
        "benchmark_return_pct": 1.8333,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 70,
        "asof_date": "2022-11-28",
        "symbol": "SEAPEARL",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 2.6789,
        "benchmark_return_pct": -0.0343,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 71,
        "asof_date": "2023-01-02",
        "symbol": "BGIC",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 7.9013,
        "benchmark_return_pct": 1.6074,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 72,
        "asof_date": "2023-02-27",
        "symbol": "BENGALWTL",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -27.7718,
        "benchmark_return_pct": -0.0396,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 73,
        "asof_date": "2023-03-05",
        "symbol": "BENGALWTL",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -36.8975,
        "benchmark_return_pct": -0.6483,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 74,
        "asof_date": "2023-04-10",
        "symbol": "APEXFOOT",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -15.743,
        "benchmark_return_pct": 1.2506,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 75,
        "asof_date": "2023-05-09",
        "symbol": "AGNISYSL",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 2.9004,
        "benchmark_return_pct": 1.2631,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 76,
        "asof_date": "2023-05-16",
        "symbol": "UNIONINS",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -0.7524,
        "benchmark_return_pct": 0.0448,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 77,
        "asof_date": "2023-08-17",
        "symbol": "DELTALIFE",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -3.5632,
        "benchmark_return_pct": 0.9027,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 78,
        "asof_date": "2023-09-19",
        "symbol": "KARNAPHULI",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -10.0616,
        "benchmark_return_pct": -0.3496,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 79,
        "asof_date": "2023-11-30",
        "symbol": "AFTABAUTO",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -15.72,
        "benchmark_return_pct": 0.3189,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 80,
        "asof_date": "2024-01-17",
        "symbol": "ZAHEENSPIN",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -9.0931,
        "benchmark_return_pct": -0.9923,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 81,
        "asof_date": "2024-01-23",
        "symbol": "ATCSLGF",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -8.5827,
        "benchmark_return_pct": -0.0367,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 82,
        "asof_date": "2024-04-17",
        "symbol": "LOVELLO",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 36.0829,
        "benchmark_return_pct": -5.7686,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 83,
        "asof_date": "2024-05-28",
        "symbol": "RELIANCE1",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -10.8675,
        "benchmark_return_pct": 1.4497,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 84,
        "asof_date": "2024-08-08",
        "symbol": "CITYBANK",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -6.5342,
        "benchmark_return_pct": -4.1437,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 85,
        "asof_date": "2024-08-22",
        "symbol": "UNILEVERCL",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -8.1825,
        "benchmark_return_pct": 0.6151,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 86,
        "asof_date": "2024-09-03",
        "symbol": "MAMUNAGRO",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 12.8676,
        "benchmark_return_pct": -5.5982,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 87,
        "asof_date": "2024-10-20",
        "symbol": "ISLAMIBANK",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -5.2458,
        "benchmark_return_pct": 1.5876,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 88,
        "asof_date": "2024-11-04",
        "symbol": "LANKABAFIN",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -2.7456,
        "benchmark_return_pct": -0.2689,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 89,
        "asof_date": "2024-12-02",
        "symbol": "FINEFOODS",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 2.4406,
        "benchmark_return_pct": 0.3118,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 90,
        "asof_date": "2024-12-10",
        "symbol": "FINEFOODS",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 14.9318,
        "benchmark_return_pct": 0.5342,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 91,
        "asof_date": "2024-12-24",
        "symbol": "SUNLIFEINS",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -1.7588,
        "benchmark_return_pct": -0.054,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 92,
        "asof_date": "2025-02-11",
        "symbol": "BEACHHATCH",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 8.818,
        "benchmark_return_pct": 0.6464,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 93,
        "asof_date": "2025-03-23",
        "symbol": "EASTRNLUB",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 22.5496,
        "benchmark_return_pct": -3.0248,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 94,
        "asof_date": "2025-05-19",
        "symbol": "SEMLLECMF",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -4.3739,
        "benchmark_return_pct": 0.0103,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 95,
        "asof_date": "2025-07-02",
        "symbol": "BRACBANK",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 21.2423,
        "benchmark_return_pct": 13.7876,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 96,
        "asof_date": "2025-08-18",
        "symbol": "EASTRNLUB",
        "hit_miss": "miss",
        "actual_return_pct": null,
        "relative_return_pct": -6.0318,
        "benchmark_return_pct": 1.3364,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      },
      {
        "i": 97,
        "asof_date": "2025-10-09",
        "symbol": "BERGERPBL",
        "hit_miss": "hit",
        "actual_return_pct": null,
        "relative_return_pct": 6.6187,
        "benchmark_return_pct": -7.2637,
        "confidence": 60,
        "learning_score": null,
        "till_date_return_pct": null,
        "till_date_exit_date": null,
        "till_date_days": null
      }
    ],
    "equity_curve": [
      {
        "i": 1,
        "asof_date": "2014-01-16",
        "cum_relative_pct": 12.7262
      },
      {
        "i": 2,
        "asof_date": "2014-03-02",
        "cum_relative_pct": 19.2152
      },
      {
        "i": 3,
        "asof_date": "2014-03-10",
        "cum_relative_pct": 43.8573
      },
      {
        "i": 4,
        "asof_date": "2014-06-17",
        "cum_relative_pct": 41.4183
      },
      {
        "i": 5,
        "asof_date": "2014-07-06",
        "cum_relative_pct": 46.3001
      },
      {
        "i": 6,
        "asof_date": "2014-07-08",
        "cum_relative_pct": 50.5249
      },
      {
        "i": 7,
        "asof_date": "2014-12-24",
        "cum_relative_pct": 49.2578
      },
      {
        "i": 8,
        "asof_date": "2014-12-28",
        "cum_relative_pct": 32.2446
      },
      {
        "i": 9,
        "asof_date": "2015-01-26",
        "cum_relative_pct": 32.8659
      },
      {
        "i": 10,
        "asof_date": "2015-02-18",
        "cum_relative_pct": 11.0388
      },
      {
        "i": 11,
        "asof_date": "2015-05-14",
        "cum_relative_pct": 15.2468
      },
      {
        "i": 12,
        "asof_date": "2015-05-25",
        "cum_relative_pct": 14.4151
      },
      {
        "i": 13,
        "asof_date": "2015-06-17",
        "cum_relative_pct": 11.3811
      },
      {
        "i": 14,
        "asof_date": "2015-07-05",
        "cum_relative_pct": 12.8176
      },
      {
        "i": 15,
        "asof_date": "2015-07-21",
        "cum_relative_pct": -0.7887
      },
      {
        "i": 16,
        "asof_date": "2015-11-11",
        "cum_relative_pct": 5.5515
      },
      {
        "i": 17,
        "asof_date": "2015-12-07",
        "cum_relative_pct": -5.9746
      },
      {
        "i": 18,
        "asof_date": "2015-12-28",
        "cum_relative_pct": -9.1456
      },
      {
        "i": 19,
        "asof_date": "2016-02-02",
        "cum_relative_pct": -29.8626
      },
      {
        "i": 20,
        "asof_date": "2016-03-24",
        "cum_relative_pct": -19.0218
      },
      {
        "i": 21,
        "asof_date": "2016-04-18",
        "cum_relative_pct": -34.3531
      },
      {
        "i": 22,
        "asof_date": "2016-04-27",
        "cum_relative_pct": -49.8811
      },
      {
        "i": 23,
        "asof_date": "2016-05-15",
        "cum_relative_pct": -55.6867
      },
      {
        "i": 24,
        "asof_date": "2016-06-14",
        "cum_relative_pct": -59.5226
      },
      {
        "i": 25,
        "asof_date": "2016-08-01",
        "cum_relative_pct": -63.6042
      },
      {
        "i": 26,
        "asof_date": "2016-08-09",
        "cum_relative_pct": -68.2463
      },
      {
        "i": 27,
        "asof_date": "2016-09-26",
        "cum_relative_pct": -72.911
      },
      {
        "i": 28,
        "asof_date": "2016-09-27",
        "cum_relative_pct": -84.7234
      },
      {
        "i": 29,
        "asof_date": "2016-10-02",
        "cum_relative_pct": -95.3312
      },
      {
        "i": 30,
        "asof_date": "2017-02-22",
        "cum_relative_pct": -109.4092
      },
      {
        "i": 31,
        "asof_date": "2017-05-15",
        "cum_relative_pct": -89.4422
      },
      {
        "i": 32,
        "asof_date": "2017-06-18",
        "cum_relative_pct": -105.3264
      },
      {
        "i": 33,
        "asof_date": "2017-07-03",
        "cum_relative_pct": -114.225
      },
      {
        "i": 34,
        "asof_date": "2017-09-11",
        "cum_relative_pct": -121.9276
      },
      {
        "i": 35,
        "asof_date": "2017-10-19",
        "cum_relative_pct": -122.2434
      },
      {
        "i": 36,
        "asof_date": "2017-10-25",
        "cum_relative_pct": -146.345
      },
      {
        "i": 37,
        "asof_date": "2017-11-06",
        "cum_relative_pct": -148.2231
      },
      {
        "i": 38,
        "asof_date": "2018-01-01",
        "cum_relative_pct": -147.2004
      },
      {
        "i": 39,
        "asof_date": "2018-02-07",
        "cum_relative_pct": -128.2594
      },
      {
        "i": 40,
        "asof_date": "2018-05-06",
        "cum_relative_pct": -133.5846
      },
      {
        "i": 41,
        "asof_date": "2018-05-09",
        "cum_relative_pct": -125.266
      },
      {
        "i": 42,
        "asof_date": "2018-05-28",
        "cum_relative_pct": -138.178
      },
      {
        "i": 43,
        "asof_date": "2018-06-20",
        "cum_relative_pct": -124.0371
      },
      {
        "i": 44,
        "asof_date": "2018-07-30",
        "cum_relative_pct": -122.1568
      },
      {
        "i": 45,
        "asof_date": "2019-01-27",
        "cum_relative_pct": -127.4199
      },
      {
        "i": 46,
        "asof_date": "2019-02-18",
        "cum_relative_pct": -137.2448
      },
      {
        "i": 47,
        "asof_date": "2019-02-27",
        "cum_relative_pct": -136.5267
      },
      {
        "i": 48,
        "asof_date": "2019-04-02",
        "cum_relative_pct": -115.0667
      },
      {
        "i": 49,
        "asof_date": "2019-05-06",
        "cum_relative_pct": -94.7837
      },
      {
        "i": 50,
        "asof_date": "2019-07-31",
        "cum_relative_pct": -104.1783
      },
      {
        "i": 51,
        "asof_date": "2019-12-01",
        "cum_relative_pct": -62.9382
      },
      {
        "i": 52,
        "asof_date": "2019-12-30",
        "cum_relative_pct": -59.6633
      },
      {
        "i": 53,
        "asof_date": "2020-01-09",
        "cum_relative_pct": -59.081
      },
      {
        "i": 54,
        "asof_date": "2020-06-03",
        "cum_relative_pct": -61.083
      },
      {
        "i": 55,
        "asof_date": "2020-08-03",
        "cum_relative_pct": -72.9404
      },
      {
        "i": 56,
        "asof_date": "2020-10-14",
        "cum_relative_pct": -78.3494
      },
      {
        "i": 57,
        "asof_date": "2020-11-16",
        "cum_relative_pct": -100.1051
      },
      {
        "i": 58,
        "asof_date": "2020-11-18",
        "cum_relative_pct": -101.7222
      },
      {
        "i": 59,
        "asof_date": "2021-03-02",
        "cum_relative_pct": -97.6683
      },
      {
        "i": 60,
        "asof_date": "2021-03-24",
        "cum_relative_pct": -115.2831
      },
      {
        "i": 61,
        "asof_date": "2021-05-12",
        "cum_relative_pct": -113.3099
      },
      {
        "i": 62,
        "asof_date": "2021-08-05",
        "cum_relative_pct": -115.4592
      },
      {
        "i": 63,
        "asof_date": "2021-08-18",
        "cum_relative_pct": -101.1259
      },
      {
        "i": 64,
        "asof_date": "2021-09-06",
        "cum_relative_pct": -104.2728
      },
      {
        "i": 65,
        "asof_date": "2021-10-21",
        "cum_relative_pct": -106.7764
      },
      {
        "i": 66,
        "asof_date": "2021-10-27",
        "cum_relative_pct": -115.0603
      },
      {
        "i": 67,
        "asof_date": "2022-03-09",
        "cum_relative_pct": -108.8578
      },
      {
        "i": 68,
        "asof_date": "2022-05-17",
        "cum_relative_pct": -101.9338
      },
      {
        "i": 69,
        "asof_date": "2022-05-25",
        "cum_relative_pct": -104.542
      },
      {
        "i": 70,
        "asof_date": "2022-11-28",
        "cum_relative_pct": -101.8631
      },
      {
        "i": 71,
        "asof_date": "2023-01-02",
        "cum_relative_pct": -93.9618
      },
      {
        "i": 72,
        "asof_date": "2023-02-27",
        "cum_relative_pct": -121.7336
      },
      {
        "i": 73,
        "asof_date": "2023-03-05",
        "cum_relative_pct": -158.6311
      },
      {
        "i": 74,
        "asof_date": "2023-04-10",
        "cum_relative_pct": -174.3741
      },
      {
        "i": 75,
        "asof_date": "2023-05-09",
        "cum_relative_pct": -171.4737
      },
      {
        "i": 76,
        "asof_date": "2023-05-16",
        "cum_relative_pct": -172.2261
      },
      {
        "i": 77,
        "asof_date": "2023-08-17",
        "cum_relative_pct": -175.7893
      },
      {
        "i": 78,
        "asof_date": "2023-09-19",
        "cum_relative_pct": -185.8509
      },
      {
        "i": 79,
        "asof_date": "2023-11-30",
        "cum_relative_pct": -201.5709
      },
      {
        "i": 80,
        "asof_date": "2024-01-17",
        "cum_relative_pct": -210.664
      },
      {
        "i": 81,
        "asof_date": "2024-01-23",
        "cum_relative_pct": -219.2467
      },
      {
        "i": 82,
        "asof_date": "2024-04-17",
        "cum_relative_pct": -183.1638
      },
      {
        "i": 83,
        "asof_date": "2024-05-28",
        "cum_relative_pct": -194.0313
      },
      {
        "i": 84,
        "asof_date": "2024-08-08",
        "cum_relative_pct": -200.5655
      },
      {
        "i": 85,
        "asof_date": "2024-08-22",
        "cum_relative_pct": -208.748
      },
      {
        "i": 86,
        "asof_date": "2024-09-03",
        "cum_relative_pct": -195.8804
      },
      {
        "i": 87,
        "asof_date": "2024-10-20",
        "cum_relative_pct": -201.1262
      },
      {
        "i": 88,
        "asof_date": "2024-11-04",
        "cum_relative_pct": -203.8718
      },
      {
        "i": 89,
        "asof_date": "2024-12-02",
        "cum_relative_pct": -201.4312
      },
      {
        "i": 90,
        "asof_date": "2024-12-10",
        "cum_relative_pct": -186.4994
      },
      {
        "i": 91,
        "asof_date": "2024-12-24",
        "cum_relative_pct": -188.2582
      },
      {
        "i": 92,
        "asof_date": "2025-02-11",
        "cum_relative_pct": -179.4402
      },
      {
        "i": 93,
        "asof_date": "2025-03-23",
        "cum_relative_pct": -156.8906
      },
      {
        "i": 94,
        "asof_date": "2025-05-19",
        "cum_relative_pct": -161.2645
      },
      {
        "i": 95,
        "asof_date": "2025-07-02",
        "cum_relative_pct": -140.0222
      },
      {
        "i": 96,
        "asof_date": "2025-08-18",
        "cum_relative_pct": -146.054
      },
      {
        "i": 97,
        "asof_date": "2025-10-09",
        "cum_relative_pct": -139.4353
      }
    ],
    "benchmark_curve": [
      {
        "i": 1,
        "asof_date": "2014-01-16",
        "cum_benchmark_pct": 4.3041
      },
      {
        "i": 2,
        "asof_date": "2014-03-02",
        "cum_benchmark_pct": 0.6773
      },
      {
        "i": 3,
        "asof_date": "2014-03-10",
        "cum_benchmark_pct": -0.8496
      },
      {
        "i": 4,
        "asof_date": "2014-06-17",
        "cum_benchmark_pct": 0.3784
      },
      {
        "i": 5,
        "asof_date": "2014-07-06",
        "cum_benchmark_pct": 1.7617
      },
      {
        "i": 6,
        "asof_date": "2014-07-08",
        "cum_benchmark_pct": 4.2678
      },
      {
        "i": 7,
        "asof_date": "2014-12-24",
        "cum_benchmark_pct": 2.0535
      },
      {
        "i": 8,
        "asof_date": "2014-12-28",
        "cum_benchmark_pct": 1.1319
      },
      {
        "i": 9,
        "asof_date": "2015-01-26",
        "cum_benchmark_pct": 1.8517
      },
      {
        "i": 10,
        "asof_date": "2015-02-18",
        "cum_benchmark_pct": -3.7511
      },
      {
        "i": 11,
        "asof_date": "2015-05-14",
        "cum_benchmark_pct": -0.5417
      },
      {
        "i": 12,
        "asof_date": "2015-05-25",
        "cum_benchmark_pct": -3.9605
      },
      {
        "i": 13,
        "asof_date": "2015-06-17",
        "cum_benchmark_pct": 0.5432
      },
      {
        "i": 14,
        "asof_date": "2015-07-05",
        "cum_benchmark_pct": 7.9466
      },
      {
        "i": 15,
        "asof_date": "2015-07-21",
        "cum_benchmark_pct": 10.247
      },
      {
        "i": 16,
        "asof_date": "2015-11-11",
        "cum_benchmark_pct": 14.163
      },
      {
        "i": 17,
        "asof_date": "2015-12-07",
        "cum_benchmark_pct": 15.7203
      },
      {
        "i": 18,
        "asof_date": "2015-12-28",
        "cum_benchmark_pct": 15.5822
      },
      {
        "i": 19,
        "asof_date": "2016-02-02",
        "cum_benchmark_pct": 13.0063
      },
      {
        "i": 20,
        "asof_date": "2016-03-24",
        "cum_benchmark_pct": 12.2684
      },
      {
        "i": 21,
        "asof_date": "2016-04-18",
        "cum_benchmark_pct": 11.6511
      },
      {
        "i": 22,
        "asof_date": "2016-04-27",
        "cum_benchmark_pct": 16.0822
      },
      {
        "i": 23,
        "asof_date": "2016-05-15",
        "cum_benchmark_pct": 19.2072
      },
      {
        "i": 24,
        "asof_date": "2016-06-14",
        "cum_benchmark_pct": 22.1291
      },
      {
        "i": 25,
        "asof_date": "2016-08-01",
        "cum_benchmark_pct": 21.9718
      },
      {
        "i": 26,
        "asof_date": "2016-08-09",
        "cum_benchmark_pct": 22.703
      },
      {
        "i": 27,
        "asof_date": "2016-09-26",
        "cum_benchmark_pct": 22.1526
      },
      {
        "i": 28,
        "asof_date": "2016-09-27",
        "cum_benchmark_pct": 21.2663
      },
      {
        "i": 29,
        "asof_date": "2016-10-02",
        "cum_benchmark_pct": 19.2609
      },
      {
        "i": 30,
        "asof_date": "2017-02-22",
        "cum_benchmark_pct": 20.5423
      },
      {
        "i": 31,
        "asof_date": "2017-05-15",
        "cum_benchmark_pct": 21.1256
      },
      {
        "i": 32,
        "asof_date": "2017-06-18",
        "cum_benchmark_pct": 27.6736
      },
      {
        "i": 33,
        "asof_date": "2017-07-03",
        "cum_benchmark_pct": 30.5512
      },
      {
        "i": 34,
        "asof_date": "2017-09-11",
        "cum_benchmark_pct": 29.858
      },
      {
        "i": 35,
        "asof_date": "2017-10-19",
        "cum_benchmark_pct": 34.2854
      },
      {
        "i": 36,
        "asof_date": "2017-10-25",
        "cum_benchmark_pct": 39.8732
      },
      {
        "i": 37,
        "asof_date": "2017-11-06",
        "cum_benchmark_pct": 42.5235
      },
      {
        "i": 38,
        "asof_date": "2018-01-01",
        "cum_benchmark_pct": 39.0918
      },
      {
        "i": 39,
        "asof_date": "2018-02-07",
        "cum_benchmark_pct": 36.3463
      },
      {
        "i": 40,
        "asof_date": "2018-05-06",
        "cum_benchmark_pct": 30.2441
      },
      {
        "i": 41,
        "asof_date": "2018-05-09",
        "cum_benchmark_pct": 24.8412
      },
      {
        "i": 42,
        "asof_date": "2018-05-28",
        "cum_benchmark_pct": 25.0557
      },
      {
        "i": 43,
        "asof_date": "2018-06-20",
        "cum_benchmark_pct": 24.2072
      },
      {
        "i": 44,
        "asof_date": "2018-07-30",
        "cum_benchmark_pct": 30.8173
      },
      {
        "i": 45,
        "asof_date": "2019-01-27",
        "cum_benchmark_pct": 27.4363
      },
      {
        "i": 46,
        "asof_date": "2019-02-18",
        "cum_benchmark_pct": 25.2708
      },
      {
        "i": 47,
        "asof_date": "2019-02-27",
        "cum_benchmark_pct": 21.4205
      },
      {
        "i": 48,
        "asof_date": "2019-04-02",
        "cum_benchmark_pct": 17.1574
      },
      {
        "i": 49,
        "asof_date": "2019-05-06",
        "cum_benchmark_pct": 18.2971
      },
      {
        "i": 50,
        "asof_date": "2019-07-31",
        "cum_benchmark_pct": 16.9718
      },
      {
        "i": 51,
        "asof_date": "2019-12-01",
        "cum_benchmark_pct": 10.5517
      },
      {
        "i": 52,
        "asof_date": "2019-12-30",
        "cum_benchmark_pct": 11.1998
      },
      {
        "i": 53,
        "asof_date": "2020-01-09",
        "cum_benchmark_pct": 15.7589
      },
      {
        "i": 54,
        "asof_date": "2020-06-03",
        "cum_benchmark_pct": 16.216
      },
      {
        "i": 55,
        "asof_date": "2020-08-03",
        "cum_benchmark_pct": 30.7232
      },
      {
        "i": 56,
        "asof_date": "2020-10-14",
        "cum_benchmark_pct": 31.316
      },
      {
        "i": 57,
        "asof_date": "2020-11-16",
        "cum_benchmark_pct": 36.1732
      },
      {
        "i": 58,
        "asof_date": "2020-11-18",
        "cum_benchmark_pct": 40.009
      },
      {
        "i": 59,
        "asof_date": "2021-03-02",
        "cum_benchmark_pct": 35.693
      },
      {
        "i": 60,
        "asof_date": "2021-03-24",
        "cum_benchmark_pct": 38.8466
      },
      {
        "i": 61,
        "asof_date": "2021-05-12",
        "cum_benchmark_pct": 43.8124
      },
      {
        "i": 62,
        "asof_date": "2021-08-05",
        "cum_benchmark_pct": 50.7369
      },
      {
        "i": 63,
        "asof_date": "2021-08-18",
        "cum_benchmark_pct": 56.9385
      },
      {
        "i": 64,
        "asof_date": "2021-09-06",
        "cum_benchmark_pct": 60.833
      },
      {
        "i": 65,
        "asof_date": "2021-10-21",
        "cum_benchmark_pct": 60.9664
      },
      {
        "i": 66,
        "asof_date": "2021-10-27",
        "cum_benchmark_pct": 57.5723
      },
      {
        "i": 67,
        "asof_date": "2022-03-09",
        "cum_benchmark_pct": 58.0614
      },
      {
        "i": 68,
        "asof_date": "2022-05-17",
        "cum_benchmark_pct": 58.4086
      },
      {
        "i": 69,
        "asof_date": "2022-05-25",
        "cum_benchmark_pct": 60.2419
      },
      {
        "i": 70,
        "asof_date": "2022-11-28",
        "cum_benchmark_pct": 60.2076
      },
      {
        "i": 71,
        "asof_date": "2023-01-02",
        "cum_benchmark_pct": 61.815
      },
      {
        "i": 72,
        "asof_date": "2023-02-27",
        "cum_benchmark_pct": 61.7754
      },
      {
        "i": 73,
        "asof_date": "2023-03-05",
        "cum_benchmark_pct": 61.1271
      },
      {
        "i": 74,
        "asof_date": "2023-04-10",
        "cum_benchmark_pct": 62.3777
      },
      {
        "i": 75,
        "asof_date": "2023-05-09",
        "cum_benchmark_pct": 63.6408
      },
      {
        "i": 76,
        "asof_date": "2023-05-16",
        "cum_benchmark_pct": 63.6856
      },
      {
        "i": 77,
        "asof_date": "2023-08-17",
        "cum_benchmark_pct": 64.5883
      },
      {
        "i": 78,
        "asof_date": "2023-09-19",
        "cum_benchmark_pct": 64.2387
      },
      {
        "i": 79,
        "asof_date": "2023-11-30",
        "cum_benchmark_pct": 64.5576
      },
      {
        "i": 80,
        "asof_date": "2024-01-17",
        "cum_benchmark_pct": 63.5653
      },
      {
        "i": 81,
        "asof_date": "2024-01-23",
        "cum_benchmark_pct": 63.5286
      },
      {
        "i": 82,
        "asof_date": "2024-04-17",
        "cum_benchmark_pct": 57.76
      },
      {
        "i": 83,
        "asof_date": "2024-05-28",
        "cum_benchmark_pct": 59.2097
      },
      {
        "i": 84,
        "asof_date": "2024-08-08",
        "cum_benchmark_pct": 55.066
      },
      {
        "i": 85,
        "asof_date": "2024-08-22",
        "cum_benchmark_pct": 55.6811
      },
      {
        "i": 86,
        "asof_date": "2024-09-03",
        "cum_benchmark_pct": 50.0829
      },
      {
        "i": 87,
        "asof_date": "2024-10-20",
        "cum_benchmark_pct": 51.6705
      },
      {
        "i": 88,
        "asof_date": "2024-11-04",
        "cum_benchmark_pct": 51.4016
      },
      {
        "i": 89,
        "asof_date": "2024-12-02",
        "cum_benchmark_pct": 51.7134
      },
      {
        "i": 90,
        "asof_date": "2024-12-10",
        "cum_benchmark_pct": 52.2476
      },
      {
        "i": 91,
        "asof_date": "2024-12-24",
        "cum_benchmark_pct": 52.1936
      },
      {
        "i": 92,
        "asof_date": "2025-02-11",
        "cum_benchmark_pct": 52.84
      },
      {
        "i": 93,
        "asof_date": "2025-03-23",
        "cum_benchmark_pct": 49.8152
      },
      {
        "i": 94,
        "asof_date": "2025-05-19",
        "cum_benchmark_pct": 49.8255
      },
      {
        "i": 95,
        "asof_date": "2025-07-02",
        "cum_benchmark_pct": 63.6131
      },
      {
        "i": 96,
        "asof_date": "2025-08-18",
        "cum_benchmark_pct": 64.9495
      },
      {
        "i": 97,
        "asof_date": "2025-10-09",
        "cum_benchmark_pct": 57.6858
      }
    ],
    "n_total": 97,
    "n_settled": 97,
    "n_no_position": 0,
    "final_cum_relative_pct": -139.4353,
    "final_cum_benchmark_pct": 57.6858
  },
  "pillar_attribution": {
    "means": {
      "liquidity": 90.3454,
      "momentum": 94.9926,
      "risk_control": 95.2684,
      "sector_regime": 71.0826
    },
    "correlations": {
      "liquidity": 0.2475,
      "momentum": -0.0235,
      "risk_control": 0.0174,
      "sector_regime": -0.0728
    },
    "best_pillar": "liquidity",
    "worst_pillar": "sector_regime",
    "n": 97
  },
  "failure_categories": [],
  "regime_watch": {
    "current_mode": "deeper_research",
    "weak_performance_detected": true,
    "weak_performance_reasons": [
      "last_5_hit_rate<0.4 (20.0%)",
      "last_10_avg_rel<0",
      "category_candidate-quality_x9",
      "category_sector-regime_x5"
    ],
    "cooldown_until": "2026-10-16T21:09:54Z",
    "batch_index": 50,
    "cycles_completed_in_batch": 18,
    "cycles_attempted_in_batch": 20,
    "regime_caution_flags": [],
    "next_discipline_notes": [],
    "current_thresholds": {}
  },
  "portfolio": {
    "account": {
      "account_id": 1,
      "account_name": "Default Paper Portfolio",
      "annual_contribution": 500000,
      "base_currency": "BDT",
      "risk_profile": "balanced"
    },
    "plan_id": 7,
    "asof_date": "2026-06-21",
    "total_value": 500000,
    "cash_balance": 500000,
    "positions_value": 0,
    "cash_reserve_pct": 100,
    "recommended_cash_reserve_pct": 50,
    "deployable_cash": 250000,
    "allocations": [
      {
        "action": "hold_cash",
        "reason": "No DSE symbols passed stale-data, liquidity, confidence, and risk gates.",
        "sleeve": "cash",
        "symbol": "CASH",
        "target_amount": 500000,
        "target_weight_pct": 100
      }
    ],
    "holdings": [],
    "watchlist": [
      {
        "avg_value": 12251424.900463795,
        "category": "A",
        "confidence": 84.76,
        "history_days": 3146,
        "investable": false,
        "label": "Watch",
        "latest_date": "2026-06-18",
        "merit": 60.7,
        "pillars": {
          "liquidity": 0,
          "momentum": 100,
          "news_event": 50,
          "quality": 50,
          "risk_control": 91.29,
          "sector_regime": 90.05,
          "value": 50
        },
        "rating": {
          "gates_active": "LIQUIDITY_HOLD",
          "horizon_1m": "Watch",
          "horizon_1y": "Watch",
          "horizon_multi": "Watch",
          "key_risks": [
            "Zero-trade fraction over the last 60 sessions is 98.3%.",
            "Verified negative-impact event count in the last 30 days is 0.",
            "No recent vault DATA HOLD error found."
          ],
          "top_reasons": [
            "Momentum pillar scored 100.0 from vault history.",
            "Risk Control pillar scored 91.3 from vault history.",
            "History sample contains 3146 trading days; sector breadth is 0.0% up."
          ]
        },
        "reject_reasons": [
          "long-horizon label Watch is not investable",
          "liquidity 0.0 < 50"
        ],
        "score": 64.3905,
        "sector": "Insurance",
        "symbol": "ASIAINS"
      },
      {
        "avg_value": 31570417.612951156,
        "category": "A",
        "confidence": 84.86,
        "history_days": 2279,
        "investable": false,
        "label": "Watch",
        "latest_date": "2026-06-18",
        "merit": 59.55,
        "pillars": {
          "liquidity": 0,
          "momentum": 89.68,
          "news_event": 50,
          "quality": 50,
          "risk_control": 100,
          "sector_regime": 82.35,
          "value": 50
        },
        "rating": {
          "gates_active": "LIQUIDITY_HOLD",
          "horizon_1m": "Watch",
          "horizon_1y": "Watch",
          "horizon_multi": "Watch",
          "key_risks": [
            "Zero-trade fraction over the last 60 sessions is 98.3%.",
            "Verified negative-impact event count in the last 30 days is 0.",
            "No recent vault DATA HOLD error found."
          ],
          "top_reasons": [
            "Risk Control pillar scored 100.0 from vault history.",
            "Momentum pillar scored 89.7 from vault history.",
            "History sample contains 2279 trading days; sector breadth is 0.0% up."
          ]
        },
        "reject_reasons": [
          "long-horizon label Watch is not investable",
          "liquidity 0.0 < 50"
        ],
        "score": 64.2825,
        "sector": "Pharmaceuticals & Chemicals",
        "symbol": "ACMELAB"
      },
      {
        "avg_value": 10007850.005097724,
        "category": "A",
        "confidence": 84.85,
        "history_days": 3121,
        "investable": false,
        "label": "Watch",
        "latest_date": "2026-06-18",
        "merit": 60.02,
        "pillars": {
          "liquidity": 0,
          "momentum": 100,
          "news_event": 50,
          "quality": 50,
          "risk_control": 88.35,
          "sector_regime": 85.35,
          "value": 50
        },
        "rating": {
          "gates_active": "LIQUIDITY_HOLD",
          "horizon_1m": "Watch",
          "horizon_1y": "Watch",
          "horizon_multi": "Watch",
          "key_risks": [
            "Zero-trade fraction over the last 60 sessions is 98.3%.",
            "Verified negative-impact event count in the last 30 days is 0.",
            "No recent vault DATA HOLD error found."
          ],
          "top_reasons": [
            "Momentum pillar scored 100.0 from vault history.",
            "Risk Control pillar scored 88.3 from vault history.",
            "History sample contains 3121 trading days; sector breadth is 0.0% up."
          ]
        },
        "reject_reasons": [
          "long-horizon label Watch is not investable",
          "liquidity 0.0 < 50"
        ],
        "score": 63.7295,
        "sector": "Insurance",
        "symbol": "ASIAPACINS"
      },
      {
        "avg_value": 9335245.79624172,
        "category": "A",
        "confidence": 84.99,
        "history_days": 3132,
        "investable": false,
        "label": "Watch",
        "latest_date": "2026-06-18",
        "merit": 58.1,
        "pillars": {
          "liquidity": 0,
          "momentum": 84.06,
          "news_event": 50,
          "quality": 50,
          "risk_control": 99.52,
          "sector_regime": 77.25,
          "value": 50
        },
        "rating": {
          "gates_active": "LIQUIDITY_HOLD",
          "horizon_1m": "Watch",
          "horizon_1y": "Watch",
          "horizon_multi": "Watch",
          "key_risks": [
            "Zero-trade fraction over the last 60 sessions is 98.3%.",
            "Verified negative-impact event count in the last 30 days is 0.",
            "No recent vault DATA HOLD error found."
          ],
          "top_reasons": [
            "Risk Control pillar scored 99.5 from vault history.",
            "Momentum pillar scored 84.1 from vault history.",
            "History sample contains 3132 trading days; sector breadth is 0.0% up."
          ]
        },
        "reject_reasons": [
          "long-horizon label Watch is not investable",
          "liquidity 0.0 < 50"
        ],
        "score": 63.167,
        "sector": "Tannery Industries",
        "symbol": "APEXFOOT"
      },
      {
        "avg_value": 16207362.174793703,
        "category": "A",
        "confidence": 84.99,
        "history_days": 2965,
        "investable": false,
        "label": "Watch",
        "latest_date": "2026-06-18",
        "merit": 57.37,
        "pillars": {
          "liquidity": 0,
          "momentum": 78.73,
          "news_event": 50,
          "quality": 50,
          "risk_control": 100,
          "sector_regime": 82.5,
          "value": 50
        },
        "rating": {
          "gates_active": "LIQUIDITY_HOLD",
          "horizon_1m": "Watch",
          "horizon_1y": "Watch",
          "horizon_multi": "Watch",
          "key_risks": [
            "Zero-trade fraction over the last 60 sessions is 98.3%.",
            "Verified negative-impact event count in the last 30 days is 0.",
            "No recent vault DATA HOLD error found."
          ],
          "top_reasons": [
            "Risk Control pillar scored 100.0 from vault history.",
            "Sector Regime pillar scored 82.5 from vault history.",
            "History sample contains 2965 trading days; sector breadth is 0.0% up."
          ]
        },
        "reject_reasons": [
          "long-horizon label Watch is not investable",
          "liquidity 0.0 < 50"
        ],
        "score": 62.4505,
        "sector": "Textile",
        "symbol": "ARGONDENIM"
      },
      {
        "avg_value": 11407289.615099235,
        "category": "A",
        "confidence": 84.91,
        "history_days": 3134,
        "investable": false,
        "label": "Watch",
        "latest_date": "2026-06-18",
        "merit": 57.94,
        "pillars": {
          "liquidity": 0,
          "momentum": 84.1,
          "news_event": 50,
          "quality": 50,
          "risk_control": 93.12,
          "sector_regime": 92.98,
          "value": 50
        },
        "rating": {
          "gates_active": "LIQUIDITY_HOLD",
          "horizon_1m": "Watch",
          "horizon_1y": "Watch",
          "horizon_multi": "Watch",
          "key_risks": [
            "Zero-trade fraction over the last 60 sessions is 98.3%.",
            "Verified negative-impact event count in the last 30 days is 0.",
            "No recent vault DATA HOLD error found."
          ],
          "top_reasons": [
            "Risk Control pillar scored 93.1 from vault history.",
            "Sector Regime pillar scored 93.0 from vault history.",
            "History sample contains 3134 trading days; sector breadth is 0.0% up."
          ]
        },
        "reject_reasons": [
          "long-horizon label Watch is not investable",
          "liquidity 0.0 < 50"
        ],
        "score": 62.139,
        "sector": "Food & Allied",
        "symbol": "APEXFOODS"
      },
      {
        "avg_value": 6934639.109333227,
        "category": "A",
        "confidence": 85.1,
        "history_days": 3148,
        "investable": false,
        "label": "Watch",
        "latest_date": "2026-06-18",
        "merit": 56.41,
        "pillars": {
          "liquidity": 0,
          "momentum": 76.27,
          "news_event": 50,
          "quality": 50,
          "risk_control": 100,
          "sector_regime": 73.02,
          "value": 50
        },
        "rating": {
          "gates_active": "LIQUIDITY_HOLD",
          "horizon_1m": "Watch",
          "horizon_1y": "Watch",
          "horizon_multi": "Watch",
          "key_risks": [
            "Zero-trade fraction over the last 60 sessions is 98.3%.",
            "Verified negative-impact event count in the last 30 days is 0.",
            "No recent vault DATA HOLD error found."
          ],
          "top_reasons": [
            "Risk Control pillar scored 100.0 from vault history.",
            "Momentum pillar scored 76.3 from vault history.",
            "History sample contains 3148 trading days; sector breadth is 0.0% up."
          ]
        },
        "reject_reasons": [
          "long-horizon label Watch is not investable",
          "liquidity 0.0 < 50"
        ],
        "score": 61.8905,
        "sector": "Food & Allied",
        "symbol": "AMCL(PRAN)"
      },
      {
        "avg_value": 4780771.108482244,
        "category": "A",
        "confidence": 85.21,
        "history_days": 3154,
        "investable": false,
        "label": "Watch",
        "latest_date": "2026-06-18",
        "merit": 54.89,
        "pillars": {
          "liquidity": 0,
          "momentum": 71.16,
          "news_event": 50,
          "quality": 50,
          "risk_control": 100,
          "sector_regime": 63.25,
          "value": 50
        },
        "rating": {
          "gates_active": "LIQUIDITY_HOLD",
          "horizon_1m": "Watch",
          "horizon_1y": "Watch",
          "horizon_multi": "Watch",
          "key_risks": [
            "Zero-trade fraction over the last 60 sessions is 98.3%.",
            "Verified negative-impact event count in the last 30 days is 0.",
            "No recent vault DATA HOLD error found."
          ],
          "top_reasons": [
            "Risk Control pillar scored 100.0 from vault history.",
            "Momentum pillar scored 71.2 from vault history.",
            "History sample contains 3154 trading days; sector breadth is 0.0% up."
          ]
        },
        "reject_reasons": [
          "long-horizon label Watch is not investable",
          "liquidity 0.0 < 50"
        ],
        "score": 60.8695,
        "sector": "Pharmaceuticals & Chemicals",
        "symbol": "AMBEEPHA"
      },
      {
        "avg_value": 2707031.9132471727,
        "category": "A",
        "confidence": 85.15,
        "history_days": 619,
        "investable": false,
        "label": "Watch",
        "latest_date": "2026-01-22",
        "merit": 59.48,
        "pillars": {
          "liquidity": 0,
          "momentum": 100,
          "news_event": 50,
          "quality": 65,
          "risk_control": 68.57,
          "sector_regime": 73.96,
          "value": 50
        },
        "rating": {
          "gates_active": "LIQUIDITY_HOLD",
          "horizon_1m": "Watch",
          "horizon_1y": "Watch",
          "horizon_multi": "Watch",
          "key_risks": [
            "Zero-trade fraction over the last 60 sessions is 100.0%.",
            "Verified negative-impact event count in the last 30 days is 0.",
            "No recent vault DATA HOLD error found."
          ],
          "top_reasons": [
            "Momentum pillar scored 100.0 from vault history.",
            "Sector Regime pillar scored 74.0 from vault history.",
            "History sample contains 619 trading days; sector breadth is 50.0% up."
          ]
        },
        "reject_reasons": [
          "latest OHLCV is 150 days stale",
          "long-horizon label Watch is not investable",
          "liquidity 0.0 < 50"
        ],
        "score": 60.6335,
        "sector": "",
        "symbol": "AMPL"
      },
      {
        "avg_value": 2591464.89375,
        "category": "A",
        "confidence": 78.16,
        "history_days": 80,
        "investable": false,
        "label": "Watch",
        "latest_date": "2025-11-26",
        "merit": 56.71,
        "pillars": {
          "liquidity": 0,
          "momentum": 82.4,
          "news_event": 50,
          "quality": 50,
          "risk_control": 95.94,
          "sector_regime": 66.74,
          "value": 50
        },
        "rating": {
          "gates_active": "LIQUIDITY_HOLD",
          "horizon_1m": "Watch",
          "horizon_1y": "Watch",
          "horizon_multi": "Watch",
          "key_risks": [
            "Zero-trade fraction over the last 60 sessions is 100.0%.",
            "Verified negative-impact event count in the last 30 days is 0.",
            "No recent vault DATA HOLD error found."
          ],
          "top_reasons": [
            "Risk Control pillar scored 95.9 from vault history.",
            "Momentum pillar scored 82.4 from vault history.",
            "History sample contains 80 trading days; sector breadth is 0.0% up."
          ]
        },
        "reject_reasons": [
          "latest OHLCV is 207 days stale",
          "long-horizon label Watch is not investable",
          "liquidity 0.0 < 50"
        ],
        "score": 60.6115,
        "sector": "Corporate Bond",
        "symbol": "ABBLPBOND"
      }
    ],
    "data_gaps": [
      "Corporate action/dividend table is empty; income and adjusted-return logic is incomplete.",
      "Verified news history is sparse; event-driven decisions remain weak.",
      "Sector mapping is weak: 225/666 instruments have UNKNOWN sector.",
      "Fundamental valuation fields are not yet populated; value and quality are still proxy-based."
    ],
    "persona_status": "warn",
    "candidate_count": 46,
    "investable_count": 0,
    "persona_reviews": [
      {
        "aspect": "memory continuity",
        "findings": [
          "Memory fields are present and auditable."
        ],
        "persona_id": "memory_auditor",
        "persona_name": "Memory Auditor",
        "status": "pass"
      },
      {
        "aspect": "DSE market realism",
        "findings": [
          "Fundamental data is incomplete; long-term conviction cannot rely on valuation/earnings yet.",
          "Sector mapping is thin: sector-aware regime and watchlist filters cannot discriminate well until known-sector coverage rises above 80%.",
          "Corporate-action history is sparse: adjusted-return and income logic cannot reliably resolve dividends, splits, or bonus issues until a vetted CSV is imported."
        ],
        "persona_id": "market_researcher",
        "persona_name": "Market Researcher",
        "status": "warn"
      },
      {
        "aspect": "portfolio risk",
        "findings": [
          "Sizing and cash reserve pass paper-mode risk checks."
        ],
        "persona_id": "risk_officer",
        "persona_name": "Risk Officer",
        "status": "pass"
      },
      {
        "aspect": "data quality",
        "findings": [
          "Corporate action/dividend table is empty; income and adjusted-return logic is incomplete.",
          "Verified news history is sparse; event-driven decisions remain weak.",
          "Sector mapping is weak: 225/666 instruments have UNKNOWN sector.",
          "Fundamental valuation fields are not yet populated; value and quality are still proxy-based.",
          "732 data-quality issue(s) are present for this as-of context."
        ],
        "persona_id": "data_quality_auditor",
        "persona_name": "Data Quality Auditor",
        "status": "warn"
      }
    ]
  },
  "live_preview": {
    "pending": [],
    "closed_recent": [],
    "unrealized_total_pct": 0,
    "unrealized_relative_pct": 0,
    "staleness": "no_pending_live_bets"
  },
  "market_research": {
    "coverage": {
      "instruments": 666,
      "unknown_sectors": 10,
      "known_sector_pct": 98.4985,
      "latest_ohlcv_date": "2026-10-15",
      "latest_dsex_date": "2026-10-15",
      "corporate_actions": 267,
      "circuit_rules": 640,
      "verified_news": 19099,
      "ratings": 1267,
      "candidate_count": 46,
      "investable_count": 0,
      "portfolio_asof_date": "2026-06-21",
      "persona_status": "warn",
      "data_priorities": [
        {
          "coverage_count": 1,
          "key": "fresh_dsex",
          "label": "live",
          "name": "Fresh DSEX benchmark",
          "next_command": "python -m bdmars.cli.ingest --index",
          "notes": "Auto-fetched from dsebd.org homepage.",
          "status": "ok"
        },
        {
          "coverage_count": 656,
          "coverage_pct": 98.5,
          "key": "sector_mapping",
          "label": "vetted_imported",
          "name": "Sector mapping",
          "next_command": "python -m bdmars.cli.ingest --sector-mapping-csv <PATH> (live DSE industry detail pages are broken; build a vetted CSV with symbol,sector,industry,source_url)",
          "notes": "CSV importer ready. Live parser disabled (DSE returns the same single company for every industryno).",
          "status": "ok"
        },
        {
          "coverage_count": 267,
          "key": "corporate_actions",
          "label": "vetted_imported",
          "name": "Corporate actions",
          "next_command": "from bdmars.historical.dse_corporate_actions import fetch_and_extract; rows = fetch_and_extract(); review rows, save to CSV, then python -m bdmars.cli.ingest --corporate-actions-csv <PATH>",
          "notes": "PDF parser produces draft. Operator must review and import.",
          "status": "ok"
        },
        {
          "coverage_count": 640,
          "key": "circuit_rules",
          "label": "vetted_imported",
          "name": "Circuit-breaker rules",
          "next_command": "from bdmars.historical.dse_circuit_rules import fetch_and_extract; rows = fetch_and_extract(); review rows, save to CSV, then python -m bdmars.cli.ingest --circuit-rules-csv <PATH>",
          "notes": "DSE cbul.php parser produces draft (~640 rows from today's table). Operator must review and import.",
          "status": "ok"
        },
        {
          "coverage_audited": 0,
          "coverage_count": 20,
          "key": "fundamentals",
          "label": "infrastructure_ready",
          "name": "Audited fundamentals",
          "next_command": "python -m bdmars.cli.ingest --fundamentals-csv <PATH>",
          "notes": "DSE has no structured audited-fundamentals feed. CSV import is the only path.",
          "status": "warn"
        }
      ]
    },
    "source_freshness": [
      {
        "latest": "2026-10-15",
        "source": "ohlcv_daily",
        "status": "ok"
      },
      {
        "latest": "2026-10-15",
        "source": "DSEX",
        "status": "ok"
      },
      {
        "latest": "267",
        "source": "corporate_actions",
        "status": "ok"
      },
      {
        "latest": "640",
        "source": "circuit_rules",
        "status": "ok"
      },
      {
        "latest": "98.50% known",
        "source": "sector_mapping",
        "status": "ok"
      },
      {
        "latest": "20 rows (0 audited)",
        "source": "fundamentals",
        "status": "warn"
      }
    ],
    "quality_issues": [
      {
        "count": 9,
        "issue_type": "capture_rejected_row_floor",
        "severity": "error"
      },
      {
        "count": 5,
        "issue_type": "capture_rejected_capture_error",
        "severity": "error"
      },
      {
        "count": 3,
        "issue_type": "capture_rejected_outside_phase_window",
        "severity": "error"
      },
      {
        "count": 1719,
        "issue_type": "dse_cse_mismatch",
        "severity": "warn"
      }
    ],
    "data_gaps": [
      "Fundamentals: 20 rows, 0 audited. Add audited rows before relying on long-horizon value/quality.",
      "12 data-quality error(s) were logged in the last 30 days.",
      "13 date(s) had multiple snapshot phases sharing a single `fetched_at` timestamp (same-fetch phase corruption): 2026-06-18, 2026-06-29, 2026-06-30, 2026-07-01, 2026-07-02, 2026-07-05, 2026-07-06, 2026-07-07, 2026-07-08, 2026-07-09, 2026-07-14, 2026-07-15, 2026-07-16. Cross-phase reasoning (gainers vs losers, intraday attribution, breadth) on these dates is not trustworthy until the phases are re-captured."
    ],
    "checks": [
      {
        "action": "Run close_capture or python -m bdmars.cli.ingest --window <START> <END>.",
        "key": "ohlcv_freshness",
        "message": "OHLCV latest date 2026-10-15 is within freshness tolerance.",
        "severity": "warn",
        "status": "ok"
      },
      {
        "action": "Run python -m bdmars.cli.ingest --index and verify it captures current DSEX/DS30/DSES.",
        "key": "dsex_freshness",
        "message": "DSEX benchmark latest date 2026-10-15 is fresh.",
        "severity": "error",
        "status": "ok"
      },
      {
        "action": "Run python -m bdmars.cli.ingest --master, then import/repair DSE industry-sector mapping.",
        "key": "sector_mapping",
        "message": "Sector mapping coverage is 98.50%.",
        "severity": "warn",
        "status": "ok"
      },
      {
        "action": "Import a vetted CSV with python -m bdmars.cli.ingest --corporate-actions-csv <PATH>.",
        "key": "corporate_actions",
        "message": "267 corporate-action rows are available.",
        "severity": "warn",
        "status": "ok"
      },
      {
        "action": "Load DSE circuit breaker rules before allowing high-conviction live paper allocations.",
        "key": "circuit_rules",
        "message": "640 circuit-rule rows are available.",
        "severity": "warn",
        "status": "ok"
      },
      {
        "action": "Import a vetted CSV with python -m bdmars.cli.ingest --fundamentals-csv <PATH>.",
        "key": "fundamentals",
        "message": "Fundamentals: 20 rows, 0 audited. Add audited rows before relying on long-horizon value/quality.",
        "severity": "warn",
        "status": "warn"
      },
      {
        "action": "Run python -m bdmars.cli.ingest --quality-report and inspect reports/data_quality_*.md.",
        "key": "quality_errors",
        "message": "12 data-quality error(s) were logged in the last 30 days.",
        "severity": "warn",
        "status": "warn"
      },
      {
        "action": "Re-capture open/midday/close phases for the affected dates with distinct fetch timestamps and re-run build_data_gap_report to confirm the list clears.",
        "key": "legacy_phase_corruption",
        "message": "13 date(s) had multiple snapshot phases sharing a single `fetched_at` timestamp (same-fetch phase corruption): 2026-06-18, 2026-06-29, 2026-06-30, 2026-07-01, 2026-07-02, 2026-07-05, 2026-07-06, 2026-07-07, 2026-07-08, 2026-07-09, 2026-07-14, 2026-07-15, 2026-07-16. Cross-phase reasoning (gainers vs losers, intraday attribution, breadth) on these dates is not trustworthy until the phases are re-captured.",
        "severity": "warn",
        "status": "warn"
      }
    ],
    "commands": [
      {
        "command": "python -m bdmars.cli.ingest --index",
        "name": "Fresh DSEX"
      },
      {
        "command": "python -m bdmars.cli.ingest --master",
        "name": "Instrument master"
      },
      {
        "command": "python -m bdmars.cli.ingest --corporate-actions-csv <PATH>",
        "name": "Corporate actions CSV"
      },
      {
        "command": "python -m bdmars.cli.ingest --circuit-rules-csv <PATH>",
        "name": "Circuit rules CSV"
      },
      {
        "command": "python -m bdmars.cli.ingest --sector-mapping-csv <PATH>",
        "name": "Sector mapping CSV"
      },
      {
        "command": "python -m bdmars.cli.ingest --fundamentals-csv <PATH>",
        "name": "Fundamentals CSV"
      },
      {
        "command": "python -m bdmars.cli.ingest --quality-report",
        "name": "Quality report"
      },
      {
        "command": "python -m bdmars.cli.ingest --gap-report",
        "name": "Data gap resolver"
      },
      {
        "command": "python -m bdmars.cli.paper_bets learning-accelerator --samples 100 --top-k 5 --horizon 1M --horizon 1Y",
        "name": "Learning accelerator"
      }
    ],
    "persona_reviews": [
      {
        "aspect": "memory continuity",
        "blocking": false,
        "checked_rules": [
          "artifact_present"
        ],
        "evidence_refs": [],
        "findings": [
          "Memory fields are present and auditable.",
          "Persona PASS lacks at least one evidence reference (artifact, model_version, run_id, source_url, sql_metric); downgraded to warn until evidence is cited."
        ],
        "input_run_id": "data_gap_report:2026-10-16",
        "persona_id": "memory_auditor",
        "persona_name": "Memory Auditor",
        "status": "warn"
      },
      {
        "aspect": "DSE market realism",
        "blocking": false,
        "checked_rules": [
          "data_gaps_scanned",
          "fundamentals_coverage"
        ],
        "evidence_refs": [],
        "findings": [
          "Fundamental data is incomplete; long-term conviction cannot rely on valuation/earnings yet."
        ],
        "input_run_id": "data_gap_report:2026-10-16",
        "persona_id": "market_researcher",
        "persona_name": "Market Researcher",
        "status": "warn"
      },
      {
        "aspect": "data quality",
        "blocking": false,
        "checked_rules": [
          "data_gaps_present",
          "data_quality_issue_count"
        ],
        "evidence_refs": [],
        "findings": [
          "Fundamentals: 20 rows, 0 audited. Add audited rows before relying on long-horizon value/quality.",
          "12 data-quality error(s) were logged in the last 30 days.",
          "13 date(s) had multiple snapshot phases sharing a single `fetched_at` timestamp (same-fetch phase corruption): 2026-06-18, 2026-06-29, 2026-06-30, 2026-07-01, 2026-07-02, 2026-07-05, 2026-07-06, 2026-07-07, 2026-07-08, 2026-07-09, 2026-07-14, 2026-07-15, 2026-07-16. Cross-phase reasoning (gainers vs losers, intraday attribution, breadth) on these dates is not trustworthy until the phases are re-captured."
        ],
        "input_run_id": "data_gap_report:2026-10-16",
        "persona_id": "data_quality_auditor",
        "persona_name": "Data Quality Auditor",
        "status": "warn"
      },
      {
        "aspect": "cron safety",
        "blocking": false,
        "checked_rules": [
          "cron_no_real_trading_wording",
          "cron_personas_invoked",
          "cron_command_present"
        ],
        "evidence_refs": [],
        "findings": [
          "Not a cron artifact; no cron-specific issue.",
          "Persona PASS lacks at least one evidence reference (artifact, model_version, run_id, source_url, sql_metric); downgraded to warn until evidence is cited."
        ],
        "input_run_id": "data_gap_report:2026-10-16",
        "persona_id": "cron_safety_auditor",
        "persona_name": "Cron Safety Auditor",
        "status": "warn"
      }
    ],
    "report_path": "reports/data_gap_resolver.md"
  },
  "data_gap_resolver": {
    "available": true,
    "generated_at": "2026-10-16T11:53:27.735544+00:00",
    "asof_date": "2026-10-16",
    "persona_status": "warn",
    "coverage": {
      "active_quality_issues_30d": 0,
      "asof_date": "2026-10-16",
      "circuit_rules": 640,
      "corporate_actions": 267,
      "data_priorities": [
        {
          "coverage_count": 1,
          "key": "fresh_dsex",
          "label": "live",
          "name": "Fresh DSEX benchmark",
          "next_command": "python -m bdmars.cli.ingest --index",
          "notes": "Auto-fetched from dsebd.org homepage.",
          "status": "ok"
        },
        {
          "coverage_count": 656,
          "coverage_pct": 98.5,
          "key": "sector_mapping",
          "label": "vetted_imported",
          "name": "Sector mapping",
          "next_command": "python -m bdmars.cli.ingest --sector-mapping-csv <PATH> (live DSE industry detail pages are broken; build a vetted CSV with symbol,sector,industry,source_url)",
          "notes": "CSV importer ready. Live parser disabled (DSE returns the same single company for every industryno).",
          "status": "ok"
        },
        {
          "coverage_count": 267,
          "key": "corporate_actions",
          "label": "vetted_imported",
          "name": "Corporate actions",
          "next_command": "from bdmars.historical.dse_corporate_actions import fetch_and_extract; rows = fetch_and_extract(); review rows, save to CSV, then python -m bdmars.cli.ingest --corporate-actions-csv <PATH>",
          "notes": "PDF parser produces draft. Operator must review and import.",
          "status": "ok"
        },
        {
          "coverage_count": 640,
          "key": "circuit_rules",
          "label": "vetted_imported",
          "name": "Circuit-breaker rules",
          "next_command": "from bdmars.historical.dse_circuit_rules import fetch_and_extract; rows = fetch_and_extract(); review rows, save to CSV, then python -m bdmars.cli.ingest --circuit-rules-csv <PATH>",
          "notes": "DSE cbul.php parser produces draft (~640 rows from today's table). Operator must review and import.",
          "status": "ok"
        },
        {
          "coverage_audited": 0,
          "coverage_count": 20,
          "key": "fundamentals",
          "label": "infrastructure_ready",
          "name": "Audited fundamentals",
          "next_command": "python -m bdmars.cli.ingest --fundamentals-csv <PATH>",
          "notes": "DSE has no structured audited-fundamentals feed. CSV import is the only path.",
          "status": "warn"
        }
      ],
      "dsex_stale_days": 1,
      "fundamentals": 20,
      "fundamentals_audited": 0,
      "fundamentals_table": true,
      "instruments": 666,
      "known_sector_pct": 98.4985,
      "latest_dsex_date": "2026-10-15",
      "latest_index_date": "2026-10-15",
      "latest_ohlcv_date": "2026-10-15",
      "legacy_phase_corruption_dates": [
        "2026-06-18",
        "2026-06-29",
        "2026-06-30",
        "2026-07-01",
        "2026-07-02",
        "2026-07-05",
        "2026-07-06",
        "2026-07-07",
        "2026-07-08",
        "2026-07-09",
        "2026-07-14",
        "2026-07-15",
        "2026-07-16"
      ],
      "occurrence_total_30d": 0,
      "ohlcv_stale_days": 1,
      "quality_errors_30d": 12,
      "ratings": 1267,
      "unknown_sectors": 10,
      "verified_news": 19099
    },
    "checks": [
      {
        "action": "Run close_capture or python -m bdmars.cli.ingest --window <START> <END>.",
        "key": "ohlcv_freshness",
        "message": "OHLCV latest date 2026-10-15 is within freshness tolerance.",
        "severity": "warn",
        "status": "ok"
      },
      {
        "action": "Run python -m bdmars.cli.ingest --index and verify it captures current DSEX/DS30/DSES.",
        "key": "dsex_freshness",
        "message": "DSEX benchmark latest date 2026-10-15 is fresh.",
        "severity": "error",
        "status": "ok"
      },
      {
        "action": "Run python -m bdmars.cli.ingest --master, then import/repair DSE industry-sector mapping.",
        "key": "sector_mapping",
        "message": "Sector mapping coverage is 98.50%.",
        "severity": "warn",
        "status": "ok"
      },
      {
        "action": "Import a vetted CSV with python -m bdmars.cli.ingest --corporate-actions-csv <PATH>.",
        "key": "corporate_actions",
        "message": "267 corporate-action rows are available.",
        "severity": "warn",
        "status": "ok"
      },
      {
        "action": "Load DSE circuit breaker rules before allowing high-conviction live paper allocations.",
        "key": "circuit_rules",
        "message": "640 circuit-rule rows are available.",
        "severity": "warn",
        "status": "ok"
      },
      {
        "action": "Import a vetted CSV with python -m bdmars.cli.ingest --fundamentals-csv <PATH>.",
        "key": "fundamentals",
        "message": "Fundamentals: 20 rows, 0 audited. Add audited rows before relying on long-horizon value/quality.",
        "severity": "warn",
        "status": "warn"
      },
      {
        "action": "Run python -m bdmars.cli.ingest --quality-report and inspect reports/data_quality_*.md.",
        "key": "quality_errors",
        "message": "12 data-quality error(s) were logged in the last 30 days.",
        "severity": "warn",
        "status": "warn"
      },
      {
        "action": "Re-capture open/midday/close phases for the affected dates with distinct fetch timestamps and re-run build_data_gap_report to confirm the list clears.",
        "key": "legacy_phase_corruption",
        "message": "13 date(s) had multiple snapshot phases sharing a single `fetched_at` timestamp (same-fetch phase corruption): 2026-06-18, 2026-06-29, 2026-06-30, 2026-07-01, 2026-07-02, 2026-07-05, 2026-07-06, 2026-07-07, 2026-07-08, 2026-07-09, 2026-07-14, 2026-07-15, 2026-07-16. Cross-phase reasoning (gainers vs losers, intraday attribution, breadth) on these dates is not trustworthy until the phases are re-captured.",
        "severity": "warn",
        "status": "warn"
      }
    ],
    "data_gaps": [
      "Fundamentals: 20 rows, 0 audited. Add audited rows before relying on long-horizon value/quality.",
      "12 data-quality error(s) were logged in the last 30 days.",
      "13 date(s) had multiple snapshot phases sharing a single `fetched_at` timestamp (same-fetch phase corruption): 2026-06-18, 2026-06-29, 2026-06-30, 2026-07-01, 2026-07-02, 2026-07-05, 2026-07-06, 2026-07-07, 2026-07-08, 2026-07-09, 2026-07-14, 2026-07-15, 2026-07-16. Cross-phase reasoning (gainers vs losers, intraday attribution, breadth) on these dates is not trustworthy until the phases are re-captured."
    ],
    "source_freshness": [
      {
        "latest": "2026-10-15",
        "source": "ohlcv_daily",
        "status": "ok"
      },
      {
        "latest": "2026-10-15",
        "source": "DSEX",
        "status": "ok"
      },
      {
        "latest": "267",
        "source": "corporate_actions",
        "status": "ok"
      },
      {
        "latest": "640",
        "source": "circuit_rules",
        "status": "ok"
      },
      {
        "latest": "98.50% known",
        "source": "sector_mapping",
        "status": "ok"
      },
      {
        "latest": "20 rows (0 audited)",
        "source": "fundamentals",
        "status": "warn"
      }
    ],
    "quality_issues": [
      {
        "count": 9,
        "issue_type": "capture_rejected_row_floor",
        "severity": "error"
      },
      {
        "count": 5,
        "issue_type": "capture_rejected_capture_error",
        "severity": "error"
      },
      {
        "count": 3,
        "issue_type": "capture_rejected_outside_phase_window",
        "severity": "error"
      },
      {
        "count": 1719,
        "issue_type": "dse_cse_mismatch",
        "severity": "warn"
      }
    ],
    "commands": [
      {
        "command": "python -m bdmars.cli.ingest --index",
        "name": "Fresh DSEX"
      },
      {
        "command": "python -m bdmars.cli.ingest --master",
        "name": "Instrument master"
      },
      {
        "command": "python -m bdmars.cli.ingest --corporate-actions-csv <PATH>",
        "name": "Corporate actions CSV"
      },
      {
        "command": "python -m bdmars.cli.ingest --circuit-rules-csv <PATH>",
        "name": "Circuit rules CSV"
      },
      {
        "command": "python -m bdmars.cli.ingest --sector-mapping-csv <PATH>",
        "name": "Sector mapping CSV"
      },
      {
        "command": "python -m bdmars.cli.ingest --fundamentals-csv <PATH>",
        "name": "Fundamentals CSV"
      },
      {
        "command": "python -m bdmars.cli.ingest --quality-report",
        "name": "Quality report"
      },
      {
        "command": "python -m bdmars.cli.ingest --gap-report",
        "name": "Data gap resolver"
      },
      {
        "command": "python -m bdmars.cli.paper_bets learning-accelerator --samples 100 --top-k 5 --horizon 1M --horizon 1Y",
        "name": "Learning accelerator"
      }
    ],
    "persona_reviews": [
      {
        "aspect": "memory continuity",
        "blocking": false,
        "checked_rules": [
          "artifact_present"
        ],
        "evidence_refs": [],
        "findings": [
          "Memory fields are present and auditable.",
          "Persona PASS lacks at least one evidence reference (artifact, model_version, run_id, source_url, sql_metric); downgraded to warn until evidence is cited."
        ],
        "input_run_id": "data_gap_report:2026-10-16",
        "persona_id": "memory_auditor",
        "persona_name": "Memory Auditor",
        "status": "warn"
      },
      {
        "aspect": "DSE market realism",
        "blocking": false,
        "checked_rules": [
          "data_gaps_scanned",
          "fundamentals_coverage"
        ],
        "evidence_refs": [],
        "findings": [
          "Fundamental data is incomplete; long-term conviction cannot rely on valuation/earnings yet."
        ],
        "input_run_id": "data_gap_report:2026-10-16",
        "persona_id": "market_researcher",
        "persona_name": "Market Researcher",
        "status": "warn"
      },
      {
        "aspect": "data quality",
        "blocking": false,
        "checked_rules": [
          "data_gaps_present",
          "data_quality_issue_count"
        ],
        "evidence_refs": [],
        "findings": [
          "Fundamentals: 20 rows, 0 audited. Add audited rows before relying on long-horizon value/quality.",
          "12 data-quality error(s) were logged in the last 30 days.",
          "13 date(s) had multiple snapshot phases sharing a single `fetched_at` timestamp (same-fetch phase corruption): 2026-06-18, 2026-06-29, 2026-06-30, 2026-07-01, 2026-07-02, 2026-07-05, 2026-07-06, 2026-07-07, 2026-07-08, 2026-07-09, 2026-07-14, 2026-07-15, 2026-07-16. Cross-phase reasoning (gainers vs losers, intraday attribution, breadth) on these dates is not trustworthy until the phases are re-captured."
        ],
        "input_run_id": "data_gap_report:2026-10-16",
        "persona_id": "data_quality_auditor",
        "persona_name": "Data Quality Auditor",
        "status": "warn"
      },
      {
        "aspect": "cron safety",
        "blocking": false,
        "checked_rules": [
          "cron_no_real_trading_wording",
          "cron_personas_invoked",
          "cron_command_present"
        ],
        "evidence_refs": [],
        "findings": [
          "Not a cron artifact; no cron-specific issue.",
          "Persona PASS lacks at least one evidence reference (artifact, model_version, run_id, source_url, sql_metric); downgraded to warn until evidence is cited."
        ],
        "input_run_id": "data_gap_report:2026-10-16",
        "persona_id": "cron_safety_auditor",
        "persona_name": "Cron Safety Auditor",
        "status": "warn"
      }
    ],
    "report_path": "reports/data_gap_resolver.md"
  },
  "learning_accelerator": {
    "available": true,
    "config": {
      "asof_file": "reports/learning_accelerator_weekly_asofs.txt",
      "asof_list": null,
      "asof_list_kept": [
        "2014-05-11",
        "2014-11-30",
        "2015-06-18",
        "2015-12-22",
        "2015-12-29",
        "2016-04-21",
        "2018-04-01",
        "2018-10-03",
        "2019-08-19",
        "2019-10-02",
        "2019-11-25",
        "2020-06-15",
        "2021-05-20",
        "2021-09-02",
        "2023-04-06",
        "2023-04-13",
        "2023-07-19",
        "2023-09-03",
        "2023-10-05",
        "2024-10-28"
      ],
      "asof_list_skipped": [],
      "blind_vault_schema": "v4",
      "end": "2025-12-01",
      "horizons": [
        "1M",
        "1Y"
      ],
      "lookback_days": 60,
      "min_symbols": 30,
      "ohlcv_window_days": 730,
      "reuse_blind_vaults": true,
      "reuse_hits": 14,
      "samples_completed": 20,
      "samples_requested": 50,
      "samples_source": "asof_file",
      "samples_total_planned": 20,
      "seed": null,
      "start": "2013-06-01",
      "top_k": 5,
      "vaults_built": 6
    },
    "summary": {
      "avg_actual_return_pct": 1.9638,
      "avg_relative_return_pct": 1.4044,
      "best_relative_return_pct": 286.6254,
      "hit_rate_pct": 19.5,
      "hits": 39,
      "misses": 130,
      "n": 200,
      "partials": 0,
      "positive_relative_pct": 35,
      "strong_hits": 31,
      "worst_relative_return_pct": -58.4738
    },
    "counterfactuals": {
      "avg_benchmark_return_pct": 0.5594,
      "avg_pick_minus_benchmark_pct": 1.4044,
      "avg_pick_minus_cash_pct": 1.9638,
      "cash_return_pct": 0
    },
    "by_horizon": {
      "1M": {
        "avg_actual_return_pct": -1.1183,
        "avg_relative_return_pct": -1.3188,
        "best_relative_return_pct": 41.6287,
        "hit_rate_pct": 26,
        "hits": 26,
        "misses": 61,
        "n": 100,
        "partials": 0,
        "positive_relative_pct": 39,
        "strong_hits": 13,
        "worst_relative_return_pct": -27.3619
      },
      "1Y": {
        "avg_actual_return_pct": 5.0458,
        "avg_relative_return_pct": 4.1275,
        "best_relative_return_pct": 286.6254,
        "hit_rate_pct": 13,
        "hits": 13,
        "misses": 69,
        "n": 100,
        "partials": 0,
        "positive_relative_pct": 31,
        "strong_hits": 18,
        "worst_relative_return_pct": -58.4738
      }
    },
    "by_rank": {
      "1": {
        "avg_actual_return_pct": 15.0883,
        "avg_relative_return_pct": 14.5327,
        "best_relative_return_pct": 286.6254,
        "hit_rate_pct": 32.5,
        "hits": 13,
        "misses": 18,
        "n": 40,
        "partials": 0,
        "positive_relative_pct": 55,
        "strong_hits": 9,
        "worst_relative_return_pct": -58.4738
      },
      "2": {
        "avg_actual_return_pct": -2.5392,
        "avg_relative_return_pct": -3.0948,
        "best_relative_return_pct": 110.4462,
        "hit_rate_pct": 5,
        "hits": 2,
        "misses": 30,
        "n": 40,
        "partials": 0,
        "positive_relative_pct": 25,
        "strong_hits": 8,
        "worst_relative_return_pct": -53.939
      },
      "3": {
        "avg_actual_return_pct": -1.6288,
        "avg_relative_return_pct": -2.1845,
        "best_relative_return_pct": 157.5681,
        "hit_rate_pct": 20,
        "hits": 8,
        "misses": 29,
        "n": 40,
        "partials": 0,
        "positive_relative_pct": 27.5,
        "strong_hits": 3,
        "worst_relative_return_pct": -54.4222
      },
      "4": {
        "avg_actual_return_pct": -1.9656,
        "avg_relative_return_pct": -2.5213,
        "best_relative_return_pct": 58.665,
        "hit_rate_pct": 22.5,
        "hits": 9,
        "misses": 26,
        "n": 40,
        "partials": 0,
        "positive_relative_pct": 35,
        "strong_hits": 5,
        "worst_relative_return_pct": -48.4874
      },
      "5": {
        "avg_actual_return_pct": 0.8643,
        "avg_relative_return_pct": 0.2896,
        "best_relative_return_pct": 116.5959,
        "hit_rate_pct": 17.5,
        "hits": 7,
        "misses": 27,
        "n": 40,
        "partials": 0,
        "positive_relative_pct": 32.5,
        "strong_hits": 6,
        "worst_relative_return_pct": -27.3619
      }
    },
    "by_sector": {
      "Bank": {
        "avg_actual_return_pct": -1.3596,
        "avg_relative_return_pct": -5.123,
        "best_relative_return_pct": 47.3069,
        "hit_rate_pct": 25,
        "hits": 4,
        "misses": 11,
        "n": 16,
        "partials": 0,
        "positive_relative_pct": 31.25,
        "strong_hits": 1,
        "worst_relative_return_pct": -30.7589
      },
      "Cement": {
        "avg_actual_return_pct": 4.4902,
        "avg_relative_return_pct": 5.7705,
        "best_relative_return_pct": 62.6719,
        "hit_rate_pct": 30,
        "hits": 3,
        "misses": 5,
        "n": 10,
        "partials": 0,
        "positive_relative_pct": 50,
        "strong_hits": 2,
        "worst_relative_return_pct": -39.5583
      },
      "Ceramics Sector": {
        "avg_actual_return_pct": -36.3512,
        "avg_relative_return_pct": -34.6765,
        "best_relative_return_pct": -14.9309,
        "hit_rate_pct": 0,
        "hits": 0,
        "misses": 2,
        "n": 2,
        "partials": 0,
        "positive_relative_pct": 0,
        "strong_hits": 0,
        "worst_relative_return_pct": -54.4222
      },
      "Engineering": {
        "avg_actual_return_pct": 2.9234,
        "avg_relative_return_pct": 1.0462,
        "best_relative_return_pct": 97.2235,
        "hit_rate_pct": 25,
        "hits": 6,
        "misses": 15,
        "n": 24,
        "partials": 0,
        "positive_relative_pct": 37.5,
        "strong_hits": 3,
        "worst_relative_return_pct": -41.7788
      },
      "Food & Allied": {
        "avg_actual_return_pct": 10.2974,
        "avg_relative_return_pct": 12.9647,
        "best_relative_return_pct": 157.5681,
        "hit_rate_pct": 16.6667,
        "hits": 2,
        "misses": 6,
        "n": 12,
        "partials": 0,
        "positive_relative_pct": 50,
        "strong_hits": 4,
        "worst_relative_return_pct": -42.6956
      },
      "Fuel & Power": {
        "avg_actual_return_pct": -9.4376,
        "avg_relative_return_pct": -14.3337,
        "best_relative_return_pct": 12.4383,
        "hit_rate_pct": 18.75,
        "hits": 3,
        "misses": 13,
        "n": 16,
        "partials": 0,
        "positive_relative_pct": 18.75,
        "strong_hits": 0,
        "worst_relative_return_pct": -51.917
      },
      "IT Sector": {
        "avg_actual_return_pct": -12.719,
        "avg_relative_return_pct": -8.498,
        "best_relative_return_pct": 17.982,
        "hit_rate_pct": 37.5,
        "hits": 3,
        "misses": 4,
        "n": 8,
        "partials": 0,
        "positive_relative_pct": 50,
        "strong_hits": 1,
        "worst_relative_return_pct": -44.0092
      },
      "Insurance": {
        "avg_actual_return_pct": -2.9199,
        "avg_relative_return_pct": -2.0089,
        "best_relative_return_pct": 58.665,
        "hit_rate_pct": 9.0909,
        "hits": 2,
        "misses": 16,
        "n": 22,
        "partials": 0,
        "positive_relative_pct": 27.2727,
        "strong_hits": 4,
        "worst_relative_return_pct": -53.939
      },
      "Miscellaneous": {
        "avg_actual_return_pct": -19.168,
        "avg_relative_return_pct": -18.3527,
        "best_relative_return_pct": 8.6798,
        "hit_rate_pct": 12.5,
        "hits": 1,
        "misses": 7,
        "n": 8,
        "partials": 0,
        "positive_relative_pct": 12.5,
        "strong_hits": 0,
        "worst_relative_return_pct": -48.4874
      },
      "Mutual Funds": {
        "avg_actual_return_pct": 21.6049,
        "avg_relative_return_pct": -5.9903,
        "best_relative_return_pct": -1.524,
        "hit_rate_pct": 0,
        "hits": 0,
        "misses": 2,
        "n": 2,
        "partials": 0,
        "positive_relative_pct": 0,
        "strong_hits": 0,
        "worst_relative_return_pct": -10.4567
      },
      "Paper & Printing": {
        "avg_actual_return_pct": -0.6579,
        "avg_relative_return_pct": 7.358,
        "best_relative_return_pct": 42.0778,
        "hit_rate_pct": 0,
        "hits": 0,
        "misses": 1,
        "n": 2,
        "partials": 0,
        "positive_relative_pct": 50,
        "strong_hits": 1,
        "worst_relative_return_pct": -27.3619
      },
      "Pharmaceuticals & Chemicals": {
        "avg_actual_return_pct": 22.0195,
        "avg_relative_return_pct": 21.1085,
        "best_relative_return_pct": 286.6254,
        "hit_rate_pct": 27.5,
        "hits": 11,
        "misses": 19,
        "n": 40,
        "partials": 0,
        "positive_relative_pct": 52.5,
        "strong_hits": 10,
        "worst_relative_return_pct": -58.4738
      },
      "Services & Real Estate": {
        "avg_actual_return_pct": -13.2745,
        "avg_relative_return_pct": -10.7385,
        "best_relative_return_pct": 16.2566,
        "hit_rate_pct": 10,
        "hits": 1,
        "misses": 8,
        "n": 10,
        "partials": 0,
        "positive_relative_pct": 20,
        "strong_hits": 1,
        "worst_relative_return_pct": -34.0098
      },
      "Tannery Industries": {
        "avg_actual_return_pct": -20.9673,
        "avg_relative_return_pct": -17.0702,
        "best_relative_return_pct": -8.51,
        "hit_rate_pct": 0,
        "hits": 0,
        "misses": 6,
        "n": 6,
        "partials": 0,
        "positive_relative_pct": 0,
        "strong_hits": 0,
        "worst_relative_return_pct": -35.4882
      },
      "Textile": {
        "avg_actual_return_pct": -5.7173,
        "avg_relative_return_pct": -6.8919,
        "best_relative_return_pct": 50.7434,
        "hit_rate_pct": 12.5,
        "hits": 2,
        "misses": 13,
        "n": 16,
        "partials": 0,
        "positive_relative_pct": 18.75,
        "strong_hits": 1,
        "worst_relative_return_pct": -21.9346
      },
      "Travel & Leisure": {
        "avg_actual_return_pct": 68.2451,
        "avg_relative_return_pct": 69.3032,
        "best_relative_return_pct": 116.5959,
        "hit_rate_pct": 0,
        "hits": 0,
        "misses": 0,
        "n": 2,
        "partials": 0,
        "positive_relative_pct": 100,
        "strong_hits": 2,
        "worst_relative_return_pct": 22.0105
      },
      "UNKNOWN": {
        "avg_actual_return_pct": 2.4444,
        "avg_relative_return_pct": 4.1336,
        "best_relative_return_pct": 51.9147,
        "hit_rate_pct": 25,
        "hits": 1,
        "misses": 2,
        "n": 4,
        "partials": 0,
        "positive_relative_pct": 50,
        "strong_hits": 1,
        "worst_relative_return_pct": -19.6207
      }
    },
    "no_candidate_dates": [],
    "errors": [
      {
        "asof_date": "2019-11-25",
        "error": "[Errno 22] Invalid argument"
      },
      {
        "asof_date": "2020-06-15",
        "error": "[Errno 22] Invalid argument"
      },
      {
        "asof_date": "2021-05-20",
        "error": "[Errno 22] Invalid argument"
      },
      {
        "asof_date": "2021-09-02",
        "error": "[Errno 22] Invalid argument"
      },
      {
        "asof_date": "2023-04-06",
        "error": "[Errno 22] Invalid argument"
      },
      {
        "asof_date": "2023-04-13",
        "error": "[Errno 22] Invalid argument"
      },
      {
        "asof_date": "2023-07-19",
        "error": "[Errno 22] Invalid argument"
      },
      {
        "asof_date": "2023-09-03",
        "error": "[Errno 22] Invalid argument"
      },
      {
        "asof_date": "2023-10-05",
        "error": "[Errno 22] Invalid argument"
      },
      {
        "asof_date": "2024-10-28",
        "error": "[Errno 22] Invalid argument"
      }
    ],
    "report_path": "reports/learning_accelerator.md"
  },
  "_source": "kv",
  "_meta": {
    "updated_at": "2026-10-16T21:41:35.292Z",
    "source": "cron"
  },
  "_dashboard_status": {
    "source": "kv",
    "is_stale": false,
    "kv_age_hours": 0.01,
    "kv_updated_at": "2026-10-16T21:41:35.292Z",
    "kv_payload_sha256": "aa9192660aeebada",
    "auth_status": "unknown",
    "stale_threshold_hours": 24,
    "human_message": "Dashboard is live."
  },
  "_stale_state": false
}