{
  "published": true,
  "spec_version": "0.5-robusta",
  "title": "The CRS Robusta Report",
  "issue_date": "2026-10-01",
  "close_date": "2026-09-30",
  "sample": {
    "n": 262,
    "range": "2025-09-09 to 2026-09-30"
  },
  "context": {
    "ar_stock_ratio": 0.3017,
    "robusta_share_pct": 76.82
  },
  "grammar": {
    "marks": false,
    "rank_column": false,
    "wks_column": false,
    "census": false
  },
  "horizons": [
    {
      "key": "1w",
      "days": 5,
      "rank_published": true
    },
    {
      "key": "2w",
      "days": 10,
      "rank_published": true
    },
    {
      "key": "1m",
      "days": 21,
      "rank_published": true
    },
    {
      "key": "3m",
      "days": 63,
      "rank_published": true
    },
    {
      "key": "12m",
      "days": 252,
      "rank_published": true
    }
  ],
  "groups": [
    {
      "name": "Certified stocks",
      "unit": "thousand 60-kg bags, and % change",
      "rows": [
        {
          "key": "rob_arabica_certified",
          "label": "Arabica certified stock",
          "value": 260.654,
          "rank": null,
          "mark": null,
          "weeks": null,
          "has_changes": true,
          "sample": {},
          "cells": [
            {
              "horizon": "1w",
              "change": 2.4261,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "2w",
              "change": 11.6392,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "1m",
              "change": 16.3759,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "3m",
              "change": -30.9462,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "12m",
              "change": -59.4843,
              "rank": null,
              "mark": null,
              "rank_published": true
            }
          ]
        },
        {
          "key": "rob_robusta_certified",
          "label": "Robusta certified stock",
          "value": 864.0,
          "rank": null,
          "mark": null,
          "weeks": null,
          "has_changes": true,
          "sample": {},
          "cells": [
            {
              "horizon": "1w",
              "change": -3.9644,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "2w",
              "change": 2.898,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "1m",
              "change": 4.6005,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "3m",
              "change": 28.0632,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "12m",
              "change": -19.9753,
              "rank": null,
              "mark": null,
              "rank_published": true
            }
          ]
        }
      ]
    },
    {
      "name": "The arbitrage",
      "unit": "% change",
      "rows": [
        {
          "key": "rob_ar_ratio",
          "label": "Arabica/Robusta stock ratio",
          "value": 0.3017,
          "rank": null,
          "mark": null,
          "weeks": null,
          "has_changes": true,
          "sample": {},
          "cells": [
            {
              "horizon": "1w",
              "change": 6.6544,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "2w",
              "change": 8.495,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "1m",
              "change": 11.2575,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "3m",
              "change": -46.0783,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "12m",
              "change": -49.371,
              "rank": null,
              "mark": null,
              "rank_published": true
            }
          ]
        },
        {
          "key": "rob_robusta_share",
          "label": "Robusta share of combined stock",
          "value": 76.8236,
          "rank": null,
          "mark": null,
          "weeks": null,
          "has_changes": true,
          "sample": {},
          "cells": [
            {
              "horizon": "1w",
              "change": -1.446,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "2w",
              "change": -1.8147,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "1m",
              "change": -2.3451,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "3m",
              "change": 19.8052,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "12m",
              "change": 22.6005,
              "rank": null,
              "mark": null,
              "rank_published": true
            }
          ]
        }
      ]
    },
    {
      "name": "Divergence",
      "unit": "percentage-point difference, Robusta − Arabica",
      "rows": [
        {
          "key": "rob_r_minus_a",
          "label": "Robusta − Arabica change",
          "value": -6.3906,
          "rank": null,
          "mark": null,
          "weeks": null,
          "has_changes": true,
          "sample": {},
          "cells": [
            {
              "horizon": "1w",
              "change": -6.3905,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "2w",
              "change": -8.7412,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "1m",
              "change": -11.7754,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "3m",
              "change": 59.0094,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "12m",
              "change": 39.509,
              "rank": null,
              "mark": null,
              "rank_published": true
            }
          ]
        }
      ]
    },
    {
      "name": "Warehouse concentration",
      "unit": "% of the leg's stock in its largest port, and % change",
      "rows": [
        {
          "key": "rob_arabica_top_port",
          "label": "Arabica largest-port share",
          "value": 76.5,
          "rank": null,
          "mark": null,
          "weeks": null,
          "has_changes": true,
          "sample": {},
          "cells": [
            {
              "horizon": "1w",
              "change": 2.0,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "2w",
              "change": 7.2931,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "1m",
              "change": 8.9744,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "3m",
              "change": 13.5015,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "12m",
              "change": -5.2045,
              "rank": null,
              "mark": null,
              "rank_published": true
            }
          ]
        },
        {
          "key": "rob_robusta_top_port",
          "label": "Robusta largest-port share",
          "value": 66.8,
          "rank": null,
          "mark": null,
          "weeks": null,
          "has_changes": true,
          "sample": {},
          "cells": [
            {
              "horizon": "1w",
              "change": 0.6024,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "2w",
              "change": -4.1607,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "1m",
              "change": -6.4426,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "3m",
              "change": 21.0145,
              "rank": null,
              "mark": null,
              "rank_published": true
            },
            {
              "horizon": "12m",
              "change": 36.6053,
              "rank": null,
              "mark": null,
              "rank_published": true
            }
          ]
        }
      ]
    }
  ],
  "analysis": {
    "spec": "AGENTS.md 5.3, physical side",
    "sides_carried": [
      "physical"
    ],
    "physical": {
      "level": {
        "value": 0.3017,
        "pct_delta": 6.7,
        "label": "Arabica/Robusta stock ratio",
        "horizon_days": 5
      },
      "range": {
        "min": 0.2592,
        "max": 0.8443,
        "position_pct": 7.3,
        "position_phrase": "near the bottom of its range",
        "lookback_start": "2025-09-09",
        "lookback_end": "2026-09-30",
        "lookback": "expanding -- grows with the archive",
        "full_period_pct_change": -51.6
      },
      "attribution": {
        "available": true,
        "horizon_days": 5,
        "unit": "bags",
        "total_move": 41840.67,
        "arabica_move": 6174.0,
        "robusta_move": -35666.67,
        "arabica_pct": 14.8,
        "robusta_pct": 85.2,
        "dominant_leg": "robusta",
        "label_a": "arabica",
        "label_b": "robusta"
      },
      "formation": {
        "modal": "A down / R up",
        "share_pct": 45.5,
        "margin_pp": 18.2,
        "contested": false,
        "contested_with": null,
        "runner_up_share_pct": null,
        "as_of_cutoff": "A up / R down",
        "as_of_cutoff_date": "2026-09-30",
        "observations": 22,
        "window_months": 1
      },
      "prevalence": {
        "last_3mo": 68.3,
        "prior_3mo": 42.6,
        "earlier_6mo": 12.3
      },
      "prevalence_detail": {
        "last_3mo": {
          "observations": 63,
          "in_state": 43,
          "from": "2026-06-30",
          "to": "2026-09-30"
        },
        "prior_3mo": {
          "observations": 61,
          "in_state": 26,
          "from": "2026-03-30",
          "to": "2026-06-30"
        },
        "earlier_6mo": {
          "observations": 122,
          "in_state": 15,
          "from": "2025-09-30",
          "to": "2026-03-30"
        }
      },
      "duration": {
        "target": "A down / R up",
        "completed_runs": 7,
        "mean_weeks": 2.71,
        "median_weeks": 2.0,
        "max_weeks": 6,
        "current_run_weeks": 0,
        "total_runs": 7,
        "mean_weeks_all_runs": 2.71,
        "weeks_in_state": 19,
        "weeks_observed": 55,
        "first_run_left_censored": false,
        "current_run_right_censored": false,
        "regime_changes": 22,
        "suppressed": false,
        "suppressed_reason": null,
        "basis": "non-overlapping weekly blocks"
      },
      "reading": "Emerging",
      "reading_detail": {
        "reading": "Emerging",
        "why": "occupancy rising toward the present",
        "trajectory": [
          68.3,
          42.6,
          12.3
        ],
        "mean_weeks": 2.71,
        "regime_changes": 22,
        "duration_suppressed": false
      },
      "distribution": {
        "both DOWN": 41.2,
        "A down / R up": 33.1,
        "A up / R down": 16.7,
        "both UP": 8.9
      },
      "distribution_weekly": {
        "both DOWN": 36.4,
        "A down / R up": 34.5,
        "A up / R down": 23.6,
        "both UP": 5.5
      },
      "observations": {
        "aligned_days": 262,
        "classified_daily": 257,
        "weekly_blocks": 56,
        "excluded_exact_zero": 0
      },
      "presentation": {
        "as_share": false,
        "identity": "share = 1 / (1 + ratio), exact"
      },
      "parse_flags": []
    },
    "geography": {
      "window_days": 21,
      "dominant_leg": "robusta",
      "material_asymmetry": true,
      "materiality_threshold_pct": 5.0,
      "arabica_moved_pct_of_level": 18.31,
      "robusta_moved_pct_of_level": 7.91,
      "arabica_ports": {
        "available": true,
        "window_days": 21,
        "from_date": "2026-08-31",
        "to_date": "2026-09-30",
        "net_change_bags": 36678.0,
        "gross_change_bags": 47716.0,
        "movers": 5,
        "contributors": [
          {
            "label": "ANTWERP",
            "change_bags": 42046.0,
            "share_of_gross_pct": 88.1,
            "level_bags": 199297.0
          },
          {
            "label": "NEW ORLEANS",
            "change_bags": -2548.0,
            "share_of_gross_pct": 5.3,
            "level_bags": 7440.0
          },
          {
            "label": "HOUSTON",
            "change_bags": -2296.0,
            "share_of_gross_pct": 4.8,
            "level_bags": 38133.0
          },
          {
            "label": "MIAMI",
            "change_bags": -675.0,
            "share_of_gross_pct": 1.4,
            "level_bags": 6182.0
          },
          {
            "label": "NEW YORK",
            "change_bags": 151.0,
            "share_of_gross_pct": 0.3,
            "level_bags": 890.0
          }
        ]
      },
      "robusta_ports": {
        "available": true,
        "window_days": 21,
        "from_date": "2026-08-31",
        "to_date": "2026-09-30",
        "net_change_bags": 38000.0,
        "gross_change_bags": 68333.3,
        "movers": 3,
        "contributors": [
          {
            "label": "LONDON",
            "change_bags": 53166.7,
            "share_of_gross_pct": 77.8,
            "level_bags": 285333.3
          },
          {
            "label": "ANTWERP",
            "change_bags": -12833.3,
            "share_of_gross_pct": 18.8,
            "level_bags": 577000.0
          },
          {
            "label": "TRIESTE",
            "change_bags": -2333.3,
            "share_of_gross_pct": 3.4,
            "level_bags": 1666.7
          }
        ]
      },
      "arabica_origins": {
        "available": true,
        "window_days": 21,
        "from_date": "2026-08-31",
        "to_date": "2026-09-30",
        "net_change_bags": 36678.0,
        "gross_change_bags": 83808.0,
        "movers": 10,
        "contributors": [
          {
            "label": "Brazil",
            "change_bags": 59909.0,
            "share_of_gross_pct": 71.5,
            "level_bags": 66657.0
          },
          {
            "label": "Honduras",
            "change_bags": -8140.0,
            "share_of_gross_pct": 9.7,
            "level_bags": 50017.0
          },
          {
            "label": "Mexico",
            "change_bags": -4481.0,
            "share_of_gross_pct": 5.3,
            "level_bags": 13642.0
          },
          {
            "label": "Nicaragua",
            "change_bags": -4156.0,
            "share_of_gross_pct": 5.0,
            "level_bags": 9813.0
          },
          {
            "label": "Peru",
            "change_bags": -3331.0,
            "share_of_gross_pct": 4.0,
            "level_bags": 46390.0
          }
        ]
      },
      "port_formation": {
        "horizon_days": 5,
        "shared_ports": 3,
        "classified": 1,
        "ports": [
          {
            "port": "ANTWERP",
            "formation": "A up / R down",
            "arabica_pct": 4.35,
            "robusta_pct": -3.35,
            "r_minus_a_pp": -7.7,
            "arabica_level_bags": 199297.0,
            "robusta_level_bags": 577000.0,
            "opposing": true
          }
        ],
        "opposing_ports": [
          {
            "port": "ANTWERP",
            "formation": "A up / R down",
            "arabica_pct": 4.35,
            "robusta_pct": -3.35,
            "r_minus_a_pp": -7.7,
            "arabica_level_bags": 199297.0,
            "robusta_level_bags": 577000.0,
            "opposing": true
          }
        ],
        "arabica_only": [
          "HOUSTON",
          "MIAMI",
          "NEW ORLEANS",
          "NEW YORK",
          "VIRGINIA"
        ],
        "robusta_only": [
          "AMSTERDAM",
          "FELIXSTOWE",
          "GENOA",
          "LE HAVRE",
          "LIVERPOOL",
          "LONDON",
          "NORFOLK",
          "ROTTERDAM",
          "TRIESTE"
        ],
        "unconfirmed_aliases": [
          [
            "VIRGINIA",
            "NORFOLK"
          ]
        ],
        "note": "Same four-state lens as the headline, applied per warehouse. A port where the two markets move in opposite directions is the sharpest form of the asymmetry the report is about.",
        "overlap_note": "Coffee C's delivery network is US-centric and the Robusta contract's is European, so most of the non-overlap above is a real property of the two contracts, not a labelling gap. Only the shared locations can carry a formation."
      },
      "port_formation_window": {
        "horizon_days": 21,
        "shared_ports": 3,
        "classified": 1,
        "ports": [
          {
            "port": "ANTWERP",
            "formation": "A up / R down",
            "arabica_pct": 26.74,
            "robusta_pct": -2.18,
            "r_minus_a_pp": -28.91,
            "arabica_level_bags": 199297.0,
            "robusta_level_bags": 577000.0,
            "opposing": true
          }
        ],
        "opposing_ports": [
          {
            "port": "ANTWERP",
            "formation": "A up / R down",
            "arabica_pct": 26.74,
            "robusta_pct": -2.18,
            "r_minus_a_pp": -28.91,
            "arabica_level_bags": 199297.0,
            "robusta_level_bags": 577000.0,
            "opposing": true
          }
        ],
        "arabica_only": [
          "HOUSTON",
          "MIAMI",
          "NEW ORLEANS",
          "NEW YORK",
          "VIRGINIA"
        ],
        "robusta_only": [
          "AMSTERDAM",
          "FELIXSTOWE",
          "GENOA",
          "LE HAVRE",
          "LIVERPOOL",
          "LONDON",
          "NORFOLK",
          "ROTTERDAM",
          "TRIESTE"
        ],
        "unconfirmed_aliases": [
          [
            "VIRGINIA",
            "NORFOLK"
          ]
        ],
        "note": "Same four-state lens as the headline, applied per warehouse. A port where the two markets move in opposite directions is the sharpest form of the asymmetry the report is about.",
        "overlap_note": "Coffee C's delivery network is US-centric and the Robusta contract's is European, so most of the non-overlap above is a real property of the two contracts, not a labelling gap. Only the shared locations can carry a formation."
      },
      "concentration": {
        "arabica": {
          "available": true,
          "leg": "arabica",
          "metric": "HHI Concentration",
          "top_port": "ANTWERP",
          "top_port_share_pct": 76.5,
          "hhi": 6085.0,
          "active_ports": 6,
          "hhi_floor": 1667.0,
          "hhi_excess_over_floor": 4418.0,
          "hhi_min": 4467.0,
          "hhi_max": 7125.0,
          "top_port_share_min_pct": 64.1,
          "top_port_share_max_pct": 83.9,
          "series": {
            "hhi": {
              "2025-09-09": 6966.0,
              "2025-09-10": 6830.0,
              "2025-09-11": 6810.0,
              "2025-09-12": 6744.0,
              "2025-09-15": 6707.0,
              "2025-09-16": 6728.0,
              "2025-09-17": 6732.0,
              "2025-09-18": 6706.0,
              "2025-09-19": 6694.0,
              "2025-09-22": 6646.0,
              "2025-09-23": 6595.0,
              "2025-09-24": 6567.0,
              "2025-09-25": 6459.0,
              "2025-09-26": 6522.0,
              "2025-09-29": 6570.0,
              "2025-09-30": 6650.0,
              "2025-10-01": 6688.0,
              "2025-10-02": 6612.0,
              "2025-10-03": 6576.0,
              "2025-10-06": 6572.0,
              "2025-10-07": 6577.0,
              "2025-10-08": 6631.0,
              "2025-10-09": 6635.0,
              "2025-10-10": 6579.0,
              "2025-10-13": 6586.0,
              "2025-10-14": 6578.0,
              "2025-10-15": 6565.0,
              "2025-10-16": 6575.0,
              "2025-10-17": 6421.0,
              "2025-10-20": 6429.0,
              "2025-10-21": 6429.0,
              "2025-10-22": 6490.0,
              "2025-10-23": 6499.0,
              "2025-10-24": 6427.0,
              "2025-10-27": 6447.0,
              "2025-10-28": 6439.0,
              "2025-10-29": 6420.0,
              "2025-10-30": 6420.0,
              "2025-10-31": 6318.0,
              "2025-11-03": 6316.0,
              "2025-11-04": 6328.0,
              "2025-11-05": 6324.0,
              "2025-11-06": 6298.0,
              "2025-11-07": 6292.0,
              "2025-11-10": 6289.0,
              "2025-11-11": 6210.0,
              "2025-11-12": 6241.0,
              "2025-11-13": 6282.0,
              "2025-11-14": 6350.0,
              "2025-11-17": 6351.0,
              "2025-11-18": 6339.0,
              "2025-11-19": 6368.0,
              "2025-11-20": 6355.0,
              "2025-11-21": 6381.0,
              "2025-11-24": 6414.0,
              "2025-11-25": 6447.0,
              "2025-11-26": 6486.0,
              "2025-11-28": 6472.0,
              "2025-12-01": 6469.0,
              "2025-12-02": 6477.0,
              "2025-12-03": 6509.0,
              "2025-12-04": 6545.0,
              "2025-12-05": 6600.0,
              "2025-12-08": 6565.0,
              "2025-12-09": 6502.0,
              "2025-12-10": 6542.0,
              "2025-12-11": 6549.0,
              "2025-12-12": 6546.0,
              "2025-12-15": 6524.0,
              "2025-12-17": 6590.0,
              "2025-12-18": 6645.0,
              "2025-12-19": 6688.0,
              "2025-12-22": 6737.0,
              "2025-12-23": 6657.0,
              "2025-12-26": 6823.0,
              "2025-12-29": 6823.0,
              "2025-12-30": 6844.0,
              "2026-01-02": 6878.0,
              "2026-01-05": 6878.0,
              "2026-01-06": 6894.0,
              "2026-01-07": 6906.0,
              "2026-01-08": 6904.0,
              "2026-01-09": 6903.0,
              "2026-01-12": 6837.0,
              "2026-01-13": 6889.0,
              "2026-01-14": 7033.0,
              "2026-01-15": 7033.0,
              "2026-01-16": 7066.0,
              "2026-01-20": 7042.0,
              "2026-01-21": 7041.0,
              "2026-01-22": 7052.0,
              "2026-01-23": 7083.0,
              "2026-01-26": 7069.0,
              "2026-01-27": 7067.0,
              "2026-01-28": 7067.0,
              "2026-01-29": 7089.0,
              "2026-01-30": 7103.0,
              "2026-02-02": 7103.0,
              "2026-02-03": 7067.0,
              "2026-02-04": 7090.0,
              "2026-02-05": 7125.0,
              "2026-02-06": 7021.0,
              "2026-02-09": 7011.0,
              "2026-02-10": 6950.0,
              "2026-02-11": 6864.0,
              "2026-02-12": 6686.0,
              "2026-02-13": 6666.0,
              "2026-02-16": 6529.0,
              "2026-02-17": 6375.0,
              "2026-02-18": 6017.0,
              "2026-02-19": 5819.0,
              "2026-02-20": 5716.0,
              "2026-02-23": 5708.0,
              "2026-02-24": 5794.0,
              "2026-02-25": 5766.0,
              "2026-02-26": 5778.0,
              "2026-02-27": 5770.0,
              "2026-03-02": 5670.0,
              "2026-03-03": 5792.0,
              "2026-03-04": 5766.0,
              "2026-03-05": 5646.0,
              "2026-03-06": 5611.0,
              "2026-03-09": 5389.0,
              "2026-03-10": 5276.0,
              "2026-03-11": 5436.0,
              "2026-03-12": 5442.0,
              "2026-03-13": 5519.0,
              "2026-03-16": 5518.0,
              "2026-03-17": 5531.0,
              "2026-03-18": 5467.0,
              "2026-03-19": 5265.0,
              "2026-03-20": 5234.0,
              "2026-03-23": 5275.0,
              "2026-03-24": 5386.0,
              "2026-03-25": 5309.0,
              "2026-03-26": 5342.0,
              "2026-03-27": 5282.0,
              "2026-03-30": 5269.0,
              "2026-03-31": 5276.0,
              "2026-04-01": 5319.0,
              "2026-04-06": 5274.0,
              "2026-04-07": 5329.0,
              "2026-04-08": 5340.0,
              "2026-04-09": 5281.0,
              "2026-04-10": 5292.0,
              "2026-04-13": 5279.0,
              "2026-04-14": 5218.0,
              "2026-04-15": 5190.0,
              "2026-04-16": 5198.0,
              "2026-04-17": 5148.0,
              "2026-04-20": 5176.0,
              "2026-04-21": 5150.0,
              "2026-04-22": 5127.0,
              "2026-04-23": 5113.0,
              "2026-04-24": 5136.0,
              "2026-04-27": 5047.0,
              "2026-04-28": 5105.0,
              "2026-04-29": 5100.0,
              "2026-04-30": 5089.0,
              "2026-05-04": 5087.0,
              "2026-05-05": 5085.0,
              "2026-05-06": 5044.0,
              "2026-05-07": 4974.0,
              "2026-05-08": 4942.0,
              "2026-05-11": 4942.0,
              "2026-05-12": 4975.0,
              "2026-05-13": 4984.0,
              "2026-05-14": 4984.0,
              "2026-05-15": 4954.0,
              "2026-05-18": 4963.0,
              "2026-05-19": 4930.0,
              "2026-05-20": 4912.0,
              "2026-05-21": 4963.0,
              "2026-05-26": 4933.0,
              "2026-05-27": 4919.0,
              "2026-05-28": 4928.0,
              "2026-05-29": 4882.0,
              "2026-06-01": 4878.0,
              "2026-06-02": 4910.0,
              "2026-06-03": 4867.0,
              "2026-06-04": 4891.0,
              "2026-06-05": 4890.0,
              "2026-06-08": 4832.0,
              "2026-06-09": 4880.0,
              "2026-06-10": 4850.0,
              "2026-06-11": 4828.0,
              "2026-06-12": 4837.0,
              "2026-06-15": 4827.0,
              "2026-06-16": 4825.0,
              "2026-06-17": 4840.0,
              "2026-06-18": 4845.0,
              "2026-06-19": 4863.0,
              "2026-06-22": 4861.0,
              "2026-06-23": 4851.0,
              "2026-06-24": 4853.0,
              "2026-06-25": 4816.0,
              "2026-06-26": 4817.0,
              "2026-06-29": 4833.0,
              "2026-06-30": 4848.0,
              "2026-07-01": 4850.0,
              "2026-07-02": 4845.0,
              "2026-07-06": 4852.0,
              "2026-07-07": 4808.0,
              "2026-07-08": 4720.0,
              "2026-07-09": 4670.0,
              "2026-07-10": 4664.0,
              "2026-07-13": 4663.0,
              "2026-07-14": 4664.0,
              "2026-07-15": 4712.0,
              "2026-07-16": 4713.0,
              "2026-07-17": 4697.0,
              "2026-07-20": 4662.0,
              "2026-07-21": 4668.0,
              "2026-07-22": 4572.0,
              "2026-07-23": 4523.0,
              "2026-07-24": 4467.0,
              "2026-07-27": 4580.0,
              "2026-07-28": 4635.0,
              "2026-07-29": 4836.0,
              "2026-07-30": 5017.0,
              "2026-07-31": 5002.0,
              "2026-08-03": 4963.0,
              "2026-08-04": 5003.0,
              "2026-08-05": 5057.0,
              "2026-08-06": 5152.0,
              "2026-08-07": 5105.0,
              "2026-08-10": 5135.0,
              "2026-08-11": 5123.0,
              "2026-08-12": 5150.0,
              "2026-08-13": 5202.0,
              "2026-08-14": 5145.0,
              "2026-08-17": 5149.0,
              "2026-08-18": 5211.0,
              "2026-08-19": 5211.0,
              "2026-08-20": 5260.0,
              "2026-08-21": 5273.0,
              "2026-08-24": 5260.0,
              "2026-08-25": 5248.0,
              "2026-08-26": 5273.0,
              "2026-08-27": 5298.0,
              "2026-08-31": 5300.0,
              "2026-09-01": 5299.0,
              "2026-09-02": 5299.0,
              "2026-09-03": 5298.0,
              "2026-09-04": 5298.0,
              "2026-09-08": 5222.0,
              "2026-09-09": 5207.0,
              "2026-09-10": 5175.0,
              "2026-09-11": 5169.0,
              "2026-09-14": 5169.0,
              "2026-09-15": 5182.0,
              "2026-09-16": 5424.0,
              "2026-09-17": 5631.0,
              "2026-09-18": 5768.0,
              "2026-09-21": 5773.0,
              "2026-09-22": 5815.0,
              "2026-09-23": 5908.0,
              "2026-09-24": 5914.0,
              "2026-09-25": 5914.0,
              "2026-09-28": 5901.0,
              "2026-09-29": 5943.0,
              "2026-09-30": 6085.0
            },
            "top_port_share_pct": {
              "2025-09-09": 82.8,
              "2025-09-10": 82.0,
              "2025-09-11": 81.8,
              "2025-09-12": 81.4,
              "2025-09-15": 81.1,
              "2025-09-16": 81.3,
              "2025-09-17": 81.3,
              "2025-09-18": 81.1,
              "2025-09-19": 81.0,
              "2025-09-22": 80.7,
              "2025-09-23": 80.4,
              "2025-09-24": 80.2,
              "2025-09-25": 79.4,
              "2025-09-26": 79.9,
              "2025-09-29": 80.2,
              "2025-09-30": 80.7,
              "2025-10-01": 81.0,
              "2025-10-02": 80.5,
              "2025-10-03": 80.2,
              "2025-10-06": 80.2,
              "2025-10-07": 80.2,
              "2025-10-08": 80.6,
              "2025-10-09": 80.6,
              "2025-10-10": 80.2,
              "2025-10-13": 80.3,
              "2025-10-14": 80.2,
              "2025-10-15": 80.2,
              "2025-10-16": 80.2,
              "2025-10-17": 79.2,
              "2025-10-20": 79.2,
              "2025-10-21": 79.2,
              "2025-10-22": 79.6,
              "2025-10-23": 79.7,
              "2025-10-24": 79.2,
              "2025-10-27": 79.3,
              "2025-10-28": 79.3,
              "2025-10-29": 79.1,
              "2025-10-30": 79.1,
              "2025-10-31": 78.4,
              "2025-11-03": 78.4,
              "2025-11-04": 78.5,
              "2025-11-05": 78.5,
              "2025-11-06": 78.3,
              "2025-11-07": 78.3,
              "2025-11-10": 78.2,
              "2025-11-11": 77.7,
              "2025-11-12": 77.9,
              "2025-11-13": 78.2,
              "2025-11-14": 78.7,
              "2025-11-17": 78.7,
              "2025-11-18": 78.6,
              "2025-11-19": 78.8,
              "2025-11-20": 78.7,
              "2025-11-21": 78.9,
              "2025-11-24": 79.1,
              "2025-11-25": 79.3,
              "2025-11-26": 79.6,
              "2025-11-28": 79.5,
              "2025-12-01": 79.5,
              "2025-12-02": 79.6,
              "2025-12-03": 79.8,
              "2025-12-04": 80.0,
              "2025-12-05": 80.4,
              "2025-12-08": 80.2,
              "2025-12-09": 79.7,
              "2025-12-10": 80.0,
              "2025-12-11": 80.1,
              "2025-12-12": 80.0,
              "2025-12-15": 79.9,
              "2025-12-17": 80.3,
              "2025-12-18": 80.7,
              "2025-12-19": 81.0,
              "2025-12-22": 81.3,
              "2025-12-23": 80.9,
              "2025-12-26": 82.0,
              "2025-12-29": 82.0,
              "2025-12-30": 82.1,
              "2026-01-02": 82.3,
              "2026-01-05": 82.3,
              "2026-01-06": 82.5,
              "2026-01-07": 82.5,
              "2026-01-08": 82.5,
              "2026-01-09": 82.5,
              "2026-01-12": 82.1,
              "2026-01-13": 82.4,
              "2026-01-14": 83.3,
              "2026-01-15": 83.3,
              "2026-01-16": 83.6,
              "2026-01-20": 83.4,
              "2026-01-21": 83.4,
              "2026-01-22": 83.5,
              "2026-01-23": 83.7,
              "2026-01-26": 83.6,
              "2026-01-27": 83.6,
              "2026-01-28": 83.6,
              "2026-01-29": 83.7,
              "2026-01-30": 83.8,
              "2026-02-02": 83.8,
              "2026-02-03": 83.6,
              "2026-02-04": 83.7,
              "2026-02-05": 83.9,
              "2026-02-06": 83.3,
              "2026-02-09": 83.2,
              "2026-02-10": 82.8,
              "2026-02-11": 82.3,
              "2026-02-12": 81.1,
              "2026-02-13": 81.0,
              "2026-02-16": 80.1,
              "2026-02-17": 79.0,
              "2026-02-18": 76.3,
              "2026-02-19": 74.7,
              "2026-02-20": 74.0,
              "2026-02-23": 74.0,
              "2026-02-24": 74.7,
              "2026-02-25": 74.5,
              "2026-02-26": 74.5,
              "2026-02-27": 74.4,
              "2026-03-02": 73.5,
              "2026-03-03": 74.5,
              "2026-03-04": 74.3,
              "2026-03-05": 73.2,
              "2026-03-06": 72.9,
              "2026-03-09": 71.2,
              "2026-03-10": 70.0,
              "2026-03-11": 71.4,
              "2026-03-12": 71.5,
              "2026-03-13": 72.2,
              "2026-03-16": 72.2,
              "2026-03-17": 72.3,
              "2026-03-18": 71.9,
              "2026-03-19": 70.2,
              "2026-03-20": 70.0,
              "2026-03-23": 70.5,
              "2026-03-24": 71.5,
              "2026-03-25": 70.9,
              "2026-03-26": 71.2,
              "2026-03-27": 70.7,
              "2026-03-30": 70.6,
              "2026-03-31": 70.7,
              "2026-04-01": 71.1,
              "2026-04-06": 70.7,
              "2026-04-07": 71.2,
              "2026-04-08": 71.3,
              "2026-04-09": 70.9,
              "2026-04-10": 71.0,
              "2026-04-13": 70.9,
              "2026-04-14": 70.4,
              "2026-04-15": 70.2,
              "2026-04-16": 70.3,
              "2026-04-17": 69.9,
              "2026-04-20": 70.1,
              "2026-04-21": 69.9,
              "2026-04-22": 69.8,
              "2026-04-23": 69.6,
              "2026-04-24": 69.8,
              "2026-04-27": 69.1,
              "2026-04-28": 69.6,
              "2026-04-29": 69.5,
              "2026-04-30": 69.4,
              "2026-05-04": 69.4,
              "2026-05-05": 69.4,
              "2026-05-06": 69.0,
              "2026-05-07": 68.5,
              "2026-05-08": 68.2,
              "2026-05-11": 68.2,
              "2026-05-12": 68.5,
              "2026-05-13": 68.5,
              "2026-05-14": 68.5,
              "2026-05-15": 68.3,
              "2026-05-18": 68.4,
              "2026-05-19": 68.1,
              "2026-05-20": 68.0,
              "2026-05-21": 68.4,
              "2026-05-26": 68.2,
              "2026-05-27": 68.0,
              "2026-05-28": 68.1,
              "2026-05-29": 67.7,
              "2026-06-01": 67.7,
              "2026-06-02": 68.0,
              "2026-06-03": 67.6,
              "2026-06-04": 67.8,
              "2026-06-05": 67.8,
              "2026-06-08": 67.3,
              "2026-06-09": 67.7,
              "2026-06-10": 67.4,
              "2026-06-11": 67.2,
              "2026-06-12": 67.3,
              "2026-06-15": 67.2,
              "2026-06-16": 67.2,
              "2026-06-17": 67.3,
              "2026-06-18": 67.4,
              "2026-06-19": 67.5,
              "2026-06-22": 67.5,
              "2026-06-23": 67.4,
              "2026-06-24": 67.4,
              "2026-06-25": 67.1,
              "2026-06-26": 67.1,
              "2026-06-29": 67.3,
              "2026-06-30": 67.4,
              "2026-07-01": 67.4,
              "2026-07-02": 67.4,
              "2026-07-06": 67.5,
              "2026-07-07": 67.1,
              "2026-07-08": 66.4,
              "2026-07-09": 65.9,
              "2026-07-10": 65.8,
              "2026-07-13": 65.8,
              "2026-07-14": 65.8,
              "2026-07-15": 66.3,
              "2026-07-16": 66.3,
              "2026-07-17": 66.2,
              "2026-07-20": 65.9,
              "2026-07-21": 65.9,
              "2026-07-22": 65.0,
              "2026-07-23": 64.6,
              "2026-07-24": 64.1,
              "2026-07-27": 64.9,
              "2026-07-28": 65.3,
              "2026-07-29": 67.0,
              "2026-07-30": 68.3,
              "2026-07-31": 68.1,
              "2026-08-03": 67.8,
              "2026-08-04": 68.0,
              "2026-08-05": 68.4,
              "2026-08-06": 69.1,
              "2026-08-07": 68.7,
              "2026-08-10": 68.9,
              "2026-08-11": 68.8,
              "2026-08-12": 69.0,
              "2026-08-13": 69.3,
              "2026-08-14": 68.8,
              "2026-08-17": 68.9,
              "2026-08-18": 69.4,
              "2026-08-19": 69.4,
              "2026-08-20": 69.9,
              "2026-08-21": 70.0,
              "2026-08-24": 69.9,
              "2026-08-25": 69.8,
              "2026-08-26": 70.0,
              "2026-08-27": 70.2,
              "2026-08-31": 70.2,
              "2026-09-01": 70.2,
              "2026-09-02": 70.2,
              "2026-09-03": 70.2,
              "2026-09-04": 70.2,
              "2026-09-08": 69.5,
              "2026-09-09": 69.5,
              "2026-09-10": 69.2,
              "2026-09-11": 69.1,
              "2026-09-14": 69.1,
              "2026-09-15": 69.2,
              "2026-09-16": 71.3,
              "2026-09-17": 73.0,
              "2026-09-18": 74.1,
              "2026-09-21": 74.1,
              "2026-09-22": 74.4,
              "2026-09-23": 75.0,
              "2026-09-24": 75.1,
              "2026-09-25": 75.1,
              "2026-09-28": 75.0,
              "2026-09-29": 75.3,
              "2026-09-30": 76.5
            }
          },
          "note": "HHI Concentration, 0-10,000 convention: each port's share of this leg's certified stock as a percentage, squared, summed. All stock in one warehouse scores 10,000.",
          "comparability_note": "Compare `hhi_excess_over_floor`, not `hhi`. A leg spread perfectly evenly across its active ports still scores 10,000 divided by that port count, so raw values are not comparable between legs holding stock in different numbers of warehouses."
        },
        "robusta": {
          "available": true,
          "leg": "robusta",
          "metric": "HHI Concentration",
          "top_port": "ANTWERP",
          "top_port_share_pct": 66.8,
          "hhi": 5551.0,
          "active_ports": 3,
          "hhi_floor": 3333.0,
          "hhi_excess_over_floor": 2218.0,
          "hhi_min": 4326.0,
          "hhi_max": 5941.0,
          "top_port_share_min_pct": 47.4,
          "top_port_share_max_pct": 72.0,
          "series": {
            "hhi": {
              "2025-09-09": 4330.0,
              "2025-09-10": 4329.0,
              "2025-09-11": 4329.0,
              "2025-09-12": 4328.0,
              "2025-09-15": 4328.0,
              "2025-09-16": 4328.0,
              "2025-09-17": 4332.0,
              "2025-09-18": 4332.0,
              "2025-09-19": 4332.0,
              "2025-09-22": 4332.0,
              "2025-09-23": 4326.0,
              "2025-09-24": 4337.0,
              "2025-09-25": 4337.0,
              "2025-09-26": 4337.0,
              "2025-09-29": 4337.0,
              "2025-09-30": 4342.0,
              "2025-10-01": 4329.0,
              "2025-10-02": 4329.0,
              "2025-10-03": 4329.0,
              "2025-10-06": 4329.0,
              "2025-10-07": 4388.0,
              "2025-10-08": 4388.0,
              "2025-10-09": 4388.0,
              "2025-10-10": 4396.0,
              "2025-10-13": 4396.0,
              "2025-10-14": 4392.0,
              "2025-10-15": 4391.0,
              "2025-10-16": 4391.0,
              "2025-10-17": 4391.0,
              "2025-10-20": 4391.0,
              "2025-10-21": 4392.0,
              "2025-10-22": 4392.0,
              "2025-10-23": 4392.0,
              "2025-10-24": 4392.0,
              "2025-10-27": 4399.0,
              "2025-10-28": 4399.0,
              "2025-10-29": 4399.0,
              "2025-10-30": 4400.0,
              "2025-10-31": 4401.0,
              "2025-11-03": 4401.0,
              "2025-11-04": 4402.0,
              "2025-11-05": 4403.0,
              "2025-11-06": 4386.0,
              "2025-11-07": 4384.0,
              "2025-11-10": 4379.0,
              "2025-11-11": 4434.0,
              "2025-11-12": 4439.0,
              "2025-11-13": 4436.0,
              "2025-11-14": 4419.0,
              "2025-11-17": 4414.0,
              "2025-11-18": 4496.0,
              "2025-11-19": 4516.0,
              "2025-11-20": 4496.0,
              "2025-11-21": 4481.0,
              "2025-11-24": 4492.0,
              "2025-11-25": 4612.0,
              "2025-11-26": 4597.0,
              "2025-11-28": 4510.0,
              "2025-12-01": 4461.0,
              "2025-12-02": 4460.0,
              "2025-12-03": 4563.0,
              "2025-12-04": 4562.0,
              "2025-12-05": 4558.0,
              "2025-12-08": 4557.0,
              "2025-12-09": 4556.0,
              "2025-12-10": 4565.0,
              "2025-12-11": 4572.0,
              "2025-12-12": 4598.0,
              "2025-12-15": 4605.0,
              "2025-12-17": 4616.0,
              "2025-12-18": 4614.0,
              "2025-12-19": 4632.0,
              "2025-12-22": 4653.0,
              "2025-12-23": 4653.0,
              "2025-12-26": 4655.0,
              "2025-12-29": 4646.0,
              "2025-12-30": 4646.0,
              "2026-01-02": 4635.0,
              "2026-01-05": 4633.0,
              "2026-01-06": 4629.0,
              "2026-01-07": 4629.0,
              "2026-01-08": 4628.0,
              "2026-01-09": 4632.0,
              "2026-01-12": 4650.0,
              "2026-01-13": 4641.0,
              "2026-01-14": 4664.0,
              "2026-01-15": 4657.0,
              "2026-01-16": 4674.0,
              "2026-01-20": 4717.0,
              "2026-01-21": 4739.0,
              "2026-01-22": 4779.0,
              "2026-01-23": 4799.0,
              "2026-01-26": 4762.0,
              "2026-01-27": 4761.0,
              "2026-01-28": 4764.0,
              "2026-01-29": 4766.0,
              "2026-01-30": 4766.0,
              "2026-02-02": 4765.0,
              "2026-02-03": 4759.0,
              "2026-02-04": 4761.0,
              "2026-02-05": 4760.0,
              "2026-02-06": 4757.0,
              "2026-02-09": 4777.0,
              "2026-02-10": 4771.0,
              "2026-02-11": 4771.0,
              "2026-02-12": 4770.0,
              "2026-02-13": 4764.0,
              "2026-02-16": 4764.0,
              "2026-02-17": 4764.0,
              "2026-02-18": 4758.0,
              "2026-02-19": 4758.0,
              "2026-02-20": 4951.0,
              "2026-02-23": 4760.0,
              "2026-02-24": 4777.0,
              "2026-02-25": 4799.0,
              "2026-02-26": 4819.0,
              "2026-02-27": 4835.0,
              "2026-03-02": 4879.0,
              "2026-03-03": 4876.0,
              "2026-03-04": 4861.0,
              "2026-03-05": 4840.0,
              "2026-03-06": 4840.0,
              "2026-03-09": 4845.0,
              "2026-03-10": 4849.0,
              "2026-03-11": 4852.0,
              "2026-03-12": 4861.0,
              "2026-03-13": 4870.0,
              "2026-03-16": 4837.0,
              "2026-03-17": 4845.0,
              "2026-03-18": 4889.0,
              "2026-03-19": 4921.0,
              "2026-03-20": 4932.0,
              "2026-03-23": 4978.0,
              "2026-03-24": 4994.0,
              "2026-03-25": 5038.0,
              "2026-03-26": 5084.0,
              "2026-03-27": 5110.0,
              "2026-03-30": 5139.0,
              "2026-03-31": 5138.0,
              "2026-04-01": 5145.0,
              "2026-04-06": 5157.0,
              "2026-04-07": 5154.0,
              "2026-04-08": 5147.0,
              "2026-04-09": 5145.0,
              "2026-04-10": 5139.0,
              "2026-04-13": 5158.0,
              "2026-04-14": 5173.0,
              "2026-04-15": 5186.0,
              "2026-04-16": 5197.0,
              "2026-04-17": 5197.0,
              "2026-04-20": 5212.0,
              "2026-04-21": 5194.0,
              "2026-04-22": 5143.0,
              "2026-04-23": 5093.0,
              "2026-04-24": 5101.0,
              "2026-04-27": 5050.0,
              "2026-04-28": 5060.0,
              "2026-04-29": 5030.0,
              "2026-04-30": 5038.0,
              "2026-05-04": 5037.0,
              "2026-05-05": 5033.0,
              "2026-05-06": 5052.0,
              "2026-05-07": 5047.0,
              "2026-05-08": 5051.0,
              "2026-05-11": 5057.0,
              "2026-05-12": 5063.0,
              "2026-05-13": 5071.0,
              "2026-05-14": 5110.0,
              "2026-05-15": 5151.0,
              "2026-05-18": 5118.0,
              "2026-05-19": 5029.0,
              "2026-05-20": 4989.0,
              "2026-05-21": 4925.0,
              "2026-05-26": 4932.0,
              "2026-05-27": 4935.0,
              "2026-05-28": 4947.0,
              "2026-05-29": 4947.0,
              "2026-06-01": 4951.0,
              "2026-06-02": 4957.0,
              "2026-06-03": 4962.0,
              "2026-06-04": 4957.0,
              "2026-06-05": 4957.0,
              "2026-06-08": 4956.0,
              "2026-06-09": 4952.0,
              "2026-06-10": 4952.0,
              "2026-06-11": 4936.0,
              "2026-06-12": 4938.0,
              "2026-06-15": 4950.0,
              "2026-06-16": 4949.0,
              "2026-06-17": 4961.0,
              "2026-06-18": 4952.0,
              "2026-06-19": 4952.0,
              "2026-06-22": 4951.0,
              "2026-06-23": 4949.0,
              "2026-06-24": 4944.0,
              "2026-06-25": 4956.0,
              "2026-06-26": 4967.0,
              "2026-06-29": 4977.0,
              "2026-06-30": 4976.0,
              "2026-07-01": 4976.0,
              "2026-07-02": 4993.0,
              "2026-07-06": 5015.0,
              "2026-07-07": 4986.0,
              "2026-07-08": 5034.0,
              "2026-07-09": 5054.0,
              "2026-07-10": 5076.0,
              "2026-07-13": 5121.0,
              "2026-07-14": 5121.0,
              "2026-07-15": 5141.0,
              "2026-07-16": 5135.0,
              "2026-07-17": 5178.0,
              "2026-07-20": 5177.0,
              "2026-07-21": 5221.0,
              "2026-07-22": 5261.0,
              "2026-07-23": 5261.0,
              "2026-07-24": 5274.0,
              "2026-07-27": 5356.0,
              "2026-07-28": 5355.0,
              "2026-07-29": 5360.0,
              "2026-07-30": 5413.0,
              "2026-07-31": 5447.0,
              "2026-08-03": 5444.0,
              "2026-08-04": 5444.0,
              "2026-08-05": 5444.0,
              "2026-08-06": 5472.0,
              "2026-08-07": 5485.0,
              "2026-08-10": 5533.0,
              "2026-08-11": 5579.0,
              "2026-08-12": 5657.0,
              "2026-08-13": 5672.0,
              "2026-08-14": 5656.0,
              "2026-08-17": 5644.0,
              "2026-08-18": 5663.0,
              "2026-08-19": 5663.0,
              "2026-08-20": 5730.0,
              "2026-08-21": 5781.0,
              "2026-08-24": 5838.0,
              "2026-08-25": 5857.0,
              "2026-08-26": 5854.0,
              "2026-08-27": 5851.0,
              "2026-08-31": 5889.0,
              "2026-09-01": 5914.0,
              "2026-09-02": 5941.0,
              "2026-09-03": 5941.0,
              "2026-09-04": 5938.0,
              "2026-09-08": 5912.0,
              "2026-09-09": 5901.0,
              "2026-09-10": 5815.0,
              "2026-09-11": 5746.0,
              "2026-09-14": 5746.0,
              "2026-09-15": 5744.0,
              "2026-09-16": 5744.0,
              "2026-09-17": 5721.0,
              "2026-09-18": 5741.0,
              "2026-09-21": 5800.0,
              "2026-09-22": 5638.0,
              "2026-09-23": 5509.0,
              "2026-09-24": 5521.0,
              "2026-09-25": 5516.0,
              "2026-09-28": 5564.0,
              "2026-09-29": 5558.0,
              "2026-09-30": 5551.0
            },
            "top_port_share_pct": {
              "2025-09-09": 48.1,
              "2025-09-10": 48.4,
              "2025-09-11": 48.5,
              "2025-09-12": 48.5,
              "2025-09-15": 48.5,
              "2025-09-16": 48.5,
              "2025-09-17": 48.6,
              "2025-09-18": 49.0,
              "2025-09-19": 48.9,
              "2025-09-22": 48.9,
              "2025-09-23": 48.8,
              "2025-09-24": 49.0,
              "2025-09-25": 49.0,
              "2025-09-26": 49.0,
              "2025-09-29": 49.1,
              "2025-09-30": 49.1,
              "2025-10-01": 48.8,
              "2025-10-02": 48.8,
              "2025-10-03": 48.9,
              "2025-10-06": 49.2,
              "2025-10-07": 49.6,
              "2025-10-08": 49.6,
              "2025-10-09": 49.6,
              "2025-10-10": 49.7,
              "2025-10-13": 49.7,
              "2025-10-14": 49.5,
              "2025-10-15": 49.4,
              "2025-10-16": 49.4,
              "2025-10-17": 49.5,
              "2025-10-20": 49.6,
              "2025-10-21": 49.7,
              "2025-10-22": 49.7,
              "2025-10-23": 49.8,
              "2025-10-24": 49.9,
              "2025-10-27": 49.9,
              "2025-10-28": 49.9,
              "2025-10-29": 49.9,
              "2025-10-30": 50.2,
              "2025-10-31": 50.4,
              "2025-11-03": 50.4,
              "2025-11-04": 50.6,
              "2025-11-05": 50.6,
              "2025-11-06": 50.2,
              "2025-11-07": 50.3,
              "2025-11-10": 49.9,
              "2025-11-11": 49.8,
              "2025-11-12": 50.9,
              "2025-11-13": 50.8,
              "2025-11-14": 50.2,
              "2025-11-17": 48.9,
              "2025-11-18": 47.4,
              "2025-11-19": 50.6,
              "2025-11-20": 50.7,
              "2025-11-21": 50.8,
              "2025-11-24": 52.5,
              "2025-11-25": 54.4,
              "2025-11-26": 54.4,
              "2025-11-28": 50.9,
              "2025-12-01": 48.2,
              "2025-12-02": 48.2,
              "2025-12-03": 48.7,
              "2025-12-04": 48.6,
              "2025-12-05": 48.3,
              "2025-12-08": 48.2,
              "2025-12-09": 48.2,
              "2025-12-10": 48.9,
              "2025-12-11": 49.4,
              "2025-12-12": 49.1,
              "2025-12-15": 49.6,
              "2025-12-17": 50.3,
              "2025-12-18": 50.2,
              "2025-12-19": 51.0,
              "2025-12-22": 51.8,
              "2025-12-23": 51.8,
              "2025-12-26": 52.1,
              "2025-12-29": 51.6,
              "2025-12-30": 51.6,
              "2026-01-02": 51.2,
              "2026-01-05": 51.1,
              "2026-01-06": 50.9,
              "2026-01-07": 50.9,
              "2026-01-08": 50.8,
              "2026-01-09": 51.1,
              "2026-01-12": 51.9,
              "2026-01-13": 51.5,
              "2026-01-14": 52.5,
              "2026-01-15": 52.2,
              "2026-01-16": 52.9,
              "2026-01-20": 54.4,
              "2026-01-21": 55.2,
              "2026-01-22": 56.2,
              "2026-01-23": 56.7,
              "2026-01-26": 55.7,
              "2026-01-27": 55.7,
              "2026-01-28": 55.8,
              "2026-01-29": 55.9,
              "2026-01-30": 55.9,
              "2026-02-02": 55.8,
              "2026-02-03": 55.7,
              "2026-02-04": 55.7,
              "2026-02-05": 55.7,
              "2026-02-06": 55.6,
              "2026-02-09": 55.8,
              "2026-02-10": 55.6,
              "2026-02-11": 55.6,
              "2026-02-12": 55.6,
              "2026-02-13": 55.4,
              "2026-02-16": 55.4,
              "2026-02-17": 55.4,
              "2026-02-18": 55.3,
              "2026-02-19": 55.3,
              "2026-02-20": 60.1,
              "2026-02-23": 55.4,
              "2026-02-24": 55.9,
              "2026-02-25": 56.4,
              "2026-02-26": 56.9,
              "2026-02-27": 57.3,
              "2026-03-02": 58.3,
              "2026-03-03": 58.3,
              "2026-03-04": 57.9,
              "2026-03-05": 57.5,
              "2026-03-06": 57.5,
              "2026-03-09": 57.6,
              "2026-03-10": 57.8,
              "2026-03-11": 57.9,
              "2026-03-12": 58.1,
              "2026-03-13": 58.4,
              "2026-03-16": 57.8,
              "2026-03-17": 57.9,
              "2026-03-18": 58.7,
              "2026-03-19": 59.0,
              "2026-03-20": 58.8,
              "2026-03-23": 59.5,
              "2026-03-24": 59.5,
              "2026-03-25": 60.3,
              "2026-03-26": 60.5,
              "2026-03-27": 60.6,
              "2026-03-30": 60.7,
              "2026-03-31": 60.7,
              "2026-04-01": 60.9,
              "2026-04-06": 61.1,
              "2026-04-07": 61.1,
              "2026-04-08": 61.0,
              "2026-04-09": 60.9,
              "2026-04-10": 60.8,
              "2026-04-13": 61.2,
              "2026-04-14": 61.6,
              "2026-04-15": 61.8,
              "2026-04-16": 62.1,
              "2026-04-17": 62.1,
              "2026-04-20": 62.4,
              "2026-04-21": 62.0,
              "2026-04-22": 61.0,
              "2026-04-23": 59.8,
              "2026-04-24": 60.0,
              "2026-04-27": 58.7,
              "2026-04-28": 59.0,
              "2026-04-29": 58.2,
              "2026-04-30": 58.4,
              "2026-05-04": 58.4,
              "2026-05-05": 58.2,
              "2026-05-06": 58.7,
              "2026-05-07": 58.6,
              "2026-05-08": 58.7,
              "2026-05-11": 58.9,
              "2026-05-12": 59.1,
              "2026-05-13": 59.2,
              "2026-05-14": 60.1,
              "2026-05-15": 61.0,
              "2026-05-18": 60.2,
              "2026-05-19": 57.8,
              "2026-05-20": 56.4,
              "2026-05-21": 53.5,
              "2026-05-26": 53.9,
              "2026-05-27": 54.1,
              "2026-05-28": 54.4,
              "2026-05-29": 54.4,
              "2026-06-01": 54.7,
              "2026-06-02": 55.0,
              "2026-06-03": 55.2,
              "2026-06-04": 55.1,
              "2026-06-05": 55.1,
              "2026-06-08": 55.0,
              "2026-06-09": 54.9,
              "2026-06-10": 54.9,
              "2026-06-11": 54.0,
              "2026-06-12": 54.0,
              "2026-06-15": 54.5,
              "2026-06-16": 54.4,
              "2026-06-17": 54.9,
              "2026-06-18": 54.6,
              "2026-06-19": 54.6,
              "2026-06-22": 54.5,
              "2026-06-23": 54.4,
              "2026-06-24": 54.2,
              "2026-06-25": 54.7,
              "2026-06-26": 55.2,
              "2026-06-29": 55.3,
              "2026-06-30": 55.2,
              "2026-07-01": 55.2,
              "2026-07-02": 55.9,
              "2026-07-06": 56.7,
              "2026-07-07": 55.6,
              "2026-07-08": 57.0,
              "2026-07-09": 57.6,
              "2026-07-10": 58.3,
              "2026-07-13": 59.5,
              "2026-07-14": 59.5,
              "2026-07-15": 60.0,
              "2026-07-16": 59.9,
              "2026-07-17": 60.8,
              "2026-07-20": 60.8,
              "2026-07-21": 61.8,
              "2026-07-22": 62.5,
              "2026-07-23": 62.5,
              "2026-07-24": 62.8,
              "2026-07-27": 64.1,
              "2026-07-28": 64.1,
              "2026-07-29": 64.1,
              "2026-07-30": 65.0,
              "2026-07-31": 65.5,
              "2026-08-03": 65.5,
              "2026-08-04": 65.5,
              "2026-08-05": 65.5,
              "2026-08-06": 65.9,
              "2026-08-07": 66.1,
              "2026-08-10": 66.8,
              "2026-08-11": 67.2,
              "2026-08-12": 68.3,
              "2026-08-13": 68.5,
              "2026-08-14": 68.2,
              "2026-08-17": 68.5,
              "2026-08-18": 68.8,
              "2026-08-19": 68.8,
              "2026-08-20": 69.6,
              "2026-08-21": 70.2,
              "2026-08-24": 70.9,
              "2026-08-25": 71.1,
              "2026-08-26": 71.1,
              "2026-08-27": 71.0,
              "2026-08-31": 71.4,
              "2026-09-01": 71.7,
              "2026-09-02": 72.0,
              "2026-09-03": 72.0,
              "2026-09-04": 72.0,
              "2026-09-08": 71.7,
              "2026-09-09": 71.5,
              "2026-09-10": 70.5,
              "2026-09-11": 69.7,
              "2026-09-14": 69.7,
              "2026-09-15": 69.7,
              "2026-09-16": 69.7,
              "2026-09-17": 69.4,
              "2026-09-18": 69.6,
              "2026-09-21": 70.3,
              "2026-09-22": 68.3,
              "2026-09-23": 66.4,
              "2026-09-24": 66.5,
              "2026-09-25": 66.5,
              "2026-09-28": 67.2,
              "2026-09-29": 66.9,
              "2026-09-30": 66.8
            }
          },
          "note": "HHI Concentration, 0-10,000 convention: each port's share of this leg's certified stock as a percentage, squared, summed. All stock in one warehouse scores 10,000.",
          "comparability_note": "Compare `hhi_excess_over_floor`, not `hhi`. A leg spread perfectly evenly across its active ports still scores 10,000 divided by that port count, so raw values are not comparable between legs holding stock in different numbers of warehouses."
        }
      },
      "robusta_origin": {
        "available": true,
        "context": {
          "available": false,
          "why": "Table 4 was not located in this issue"
        },
        "framing": "ICO export-by-origin is CONTEXT for Robusta's growing-origin story, not a decomposition of certified stock. Export volume is production leaving a country; certified stock is exchange-warehouse inventory. It does not sum to the total and must never be presented as though it does."
      },
      "adjacent_pool": {
        "enabled": false,
        "why": "deferred by design doc SS12.4; built but off pending an explicit instruction to reinstate"
      },
      "state": "material asymmetry",
      "state_note": "The robusta leg dominated attribution; its port decomposition is the drill-down below."
    },
    "soluble_share": {
      "available": false,
      "value_pct": null,
      "confidence": null,
      "why": "no soluble-share sentence matched in this issue's narrative. The figure also appears in Figure 9, a chart image, which is not read. Supply manual_value to carry the panel."
    },
    "ico": {
      "available": true,
      "source_pdf": "I-CIP.pdf",
      "flags": [
        "Table 3 (World Supply/Demand) skipped by design -- it is a raster image in every issue checked and no figure in this report depends on an OCR'd number (I8)."
      ],
      "table3_read": false,
      "attribution": "International Coffee Organization, Coffee Market Report",
      "ny_london_arbitrage": {
        "available": false
      },
      "group_exports": {
        "available": false,
        "why": "Table 4 was not located in this issue"
      },
      "ico_certified_stocks": {
        "available": false
      }
    },
    "ico_cross_check": {
      "available": false,
      "why": "no ICO certified-stock table for this issue"
    },
    "qa": {
      "records_by_market": {
        "arabica": 269,
        "robusta": 269
      },
      "coverage_by_market": {
        "arabica": {
          "records": 269,
          "first_date": "2025-09-09",
          "last_date": "2026-10-01",
          "business_days_in_range": 278,
          "missing_business_days": 9,
          "missing_by_weekday": {
            "Thursday": 3,
            "Tuesday": 1,
            "Monday": 3,
            "Friday": 2
          }
        },
        "robusta": {
          "records": 269,
          "first_date": "2025-09-09",
          "last_date": "2026-09-30",
          "business_days_in_range": 277,
          "missing_business_days": 8,
          "missing_by_weekday": {
            "Wednesday": 2,
            "Thursday": 2,
            "Friday": 4
          }
        }
      },
      "warnings": [],
      "environment_problem": null,
      "alignment": {
        "dates_with_both_markets": 262,
        "arabica_only": 7,
        "robusta_only": 7,
        "note": "The real sample size for every cross-market figure in this report. Not implied by either market's own record count."
      },
      "weekend_rolled_records": 51,
      "parse_flags": [],
      "date_collisions": {
        "arabica": [],
        "robusta": []
      },
      "unreadable_files": {
        "arabica": [],
        "robusta": []
      },
      "undated_files": {
        "arabica": [],
        "robusta": []
      }
    },
    "identities": {
      "target": "A down / R up",
      "daily": {
        "runs": 12,
        "mean": 7.08,
        "runs_times_mean": 84.96,
        "observations_in_state": 85,
        "observations": 257,
        "occupancy_pct": 33.1,
        "identity_holds": true
      },
      "weekly_occupancy_pct": 34.5
    },
    "levels": {
      "arabica_certified_bags": 260654.0,
      "robusta_certified_lots": 5184.0,
      "robusta_certified_bags_equiv": 864000.0,
      "bags_per_lot": 166.6667,
      "arabica_min_bags": 217646.0,
      "arabica_max_bags": 685945.0,
      "robusta_min_lots": 3598.0,
      "robusta_max_lots": 6608.0,
      "by_market_full_series": {
        "arabica": {
          "unit": "bags",
          "observations": 269,
          "first_date": "2025-09-09",
          "last_date": "2026-10-01",
          "latest_native": 260364.0,
          "min_native": 217646.0,
          "max_native": 685945.0,
          "min_native_date": "2026-09-15",
          "max_native_date": "2025-09-09",
          "latest_bags_equiv": 260364.0,
          "min_bags_equiv": 217646.0,
          "max_bags_equiv": 685945.0
        },
        "robusta": {
          "unit": "lots",
          "observations": 269,
          "first_date": "2025-09-09",
          "last_date": "2026-09-30",
          "latest_native": 5184.0,
          "min_native": 3598.0,
          "max_native": 6608.0,
          "min_native_date": "2026-05-13",
          "max_native_date": "2025-09-09",
          "latest_bags_equiv": 864000.0,
          "min_bags_equiv": 599666.7,
          "max_bags_equiv": 1101333.3
        }
      },
      "aligned_only": {
        "arabica_min_bags": 217646.0,
        "arabica_max_bags": 685945.0,
        "robusta_min_lots": 3598.0,
        "robusta_max_lots": 6608.0,
        "n": 262
      }
    },
    "notes": {
      "lookback": "The certified-stock archive begins 2025-09-09, so the twelve-month window is currently the entire dataset with no depth behind it. Position within the range is reported alongside the absolute level and the trajectory, never alone.",
      "prevalence_framing": "Prevalence is time occupancy, not a probability, a rate, or an estimate. Consecutive observations share four of their five days and are heavily autocorrelated, so these figures describe how much of the period the market spent in a state. No confidence attaches to them.",
      "paper_side": "The paper (futures) side is not carried. A feasibility probe found no ICE Europe Robusta contract on the free data source: RC=F does not exist, and 88 symbol variants across contract months and exchange suffixes returned nothing. Arabica per-contract data resolves normally, but expired contracts are delisted and their history is withdrawn, so even the arabica leg cannot be backfilled. Without both legs there is no price ratio and no paper formation, and a one-legged paper section would not answer the question it poses.",
      "range_framing": "Position within the range is reported only alongside the absolute level and the trajectory. On a trending series it pins near 0% or 100% and is not a mean-reversion signal.",
      "presentation_pivot": "The physical level ships as the Arabica/Robusta ratio. Robusta share of combined stock is the same information -- share = 1/(1+ratio), exactly -- and the swap is one flag in robusta_config."
    }
  },
  "pending": [
    {
      "key": "rob_paper_side",
      "label": "Paper side, the futures arbitrage",
      "status": "no data source",
      "note": "The paper (futures) side is not carried. A feasibility probe found no ICE Europe Robusta contract on the free data source: RC=F does not exist, and 88 symbol variants across contract months and exchange suffixes returned nothing. Arabica per-contract data resolves normally, but expired contracts are delisted and their history is withdrawn, so even the arabica leg cannot be backfilled. Without both legs there is no price ratio and no paper formation, and a one-legged paper section would not answer the question it poses."
    },
    {
      "key": "rob_combined_read",
      "label": "Combined paper-and-physical read",
      "status": "blocked on the paper side",
      "note": "A three-way agreement tag -- reinforcing, contradicting, or one side flat -- needs two sides. It returns with the paper leg and is deliberately absent rather than approximated from one."
    },
    {
      "key": "rob_origin_exports",
      "label": "Robusta exports by country of origin",
      "status": "partial",
      "note": "Robusta certified stock decomposes to port only, at any resolution -- the ICE report carries no origin breakdown and never will. Country-level export data (Vietnam, Indonesia, Uganda, Brazil) is not in ICO Tables 1-5 either; only group-level export volume is carried, as context."
    },
    {
      "key": "rob_trade_geography",
      "label": "Robusta trade-geography split",
      "status": "unverified",
      "note": "An 86.3% EU / 13.7% US split is attributed to ICO JC 03/24 Rev. 1 elsewhere in this pipeline but has never been checked against the source. It is not used here and anchors no framing until it is confirmed."
    },
    {
      "key": "rob_ice_automation",
      "label": "Automated ICE report collection",
      "status": "manual",
      "note": "Daily ICE files are collected by hand. Their names carry generation timestamps, which suggests an on-demand export rather than a static URL, so automation likely needs a scripted browser. Manual collection is an accepted operating model."
    },
    {
      "key": "rob_soluble_share",
      "label": "Soluble coffee share",
      "status": "not extracted this issue",
      "note": "no soluble-share sentence matched in this issue's narrative. The figure also appears in Figure 9, a chart image, which is not read. Supply manual_value to carry the panel. Robusta dominates instant coffee, so this is a demand-side adoption signal distinct from the supply-side export share."
    }
  ],
  "downloads": {
    "robusta_index_history": "robusta_index_history_2026-09-30.csv"
  },
  "lookback_note": "The certified-stock archive begins 2025-09-09, so the twelve-month window is currently the entire dataset with no depth behind it. Position within the range is reported alongside the absolute level and the trajectory, never alone."
}
