{
  "generated_at_utc": "2026-03-26T01:57:35+00:00",
  "script": "/Users/finnhambly/antistatic-analysis/scripts/hormuz-transit-calls/generate_market.py",
  "source": {
    "dataset_url": "https://services9.arcgis.com/weJ1QsnbMYJlCHdG/arcgis/rest/services/Daily_Chokepoints_Data/FeatureServer/0/query",
    "page_url": "https://portwatch.imf.org/pages/cb5856222a5b4105adc6ee7e880a1730",
    "target_portid": "chokepoint6",
    "target_portname": "Strait of Hormuz",
    "latest_observation_date_utc": "2026-03-22"
  },
  "market": {
    "code": "hormuz-transit",
    "title": "Strait of Hormuz weekly transit calls",
    "type": "count",
    "mode": "weekly_sum",
    "forecast_start_date_utc": "2026-03-26",
    "forecast_end_date_utc": "2026-12-31",
    "target_days": 281,
    "thresholds": [
      7,
      14,
      21,
      28,
      35,
      42,
      49,
      56,
      63,
      70,
      84,
      105,
      126,
      154,
      189,
      231,
      280,
      350,
      420,
      525,
      630,
      770,
      910
    ],
    "rows": 920
  },
  "artifacts": {
    "hormuz_calls_recent_chart": "hormuz_calls_recent.png",
    "recovery_duration_fit_chart": "recovery_duration_fit.png",
    "script_download_asset": "generate_market.py"
  },
  "event_definition": {
    "event_start_date_utc": "2026-03-01",
    "known_survival_days": 22,
    "recovery_condition": "7d_mean_n_total >= 60 for 14 consecutive days"
  },
  "reference_classes": {
    "fit_eligible_count": 177,
    "reference_class_mode": "conflict_only",
    "excluded_from_fit_count": 10,
    "excluded_from_fit_by_port": {
      "chokepoint7": 10
    },
    "conflict_affected_count": 29,
    "severe_global_non_conflict_count": 0,
    "stress_global_non_conflict_count": 0,
    "suez_non_conflict_override_count": 1,
    "severe_reference_non_conflict_only": false,
    "severe_reference_count": 29,
    "overlap_removed_count": 0,
    "effective_sample_fraction_within_port": 0.35,
    "effective_sample_sizes": {
      "conflict_affected": 12.75,
      "severe_reference": 12.75,
      "stress_non_conflict": 0.0,
      "external_analogues": 3.247216035634744
    },
    "external_overlap_discount": 0.35,
    "post_recovery_attenuation": {
      "ratio_horizon_30d": {
        "horizon_days": 30,
        "global_n": 27,
        "conflict_n": 27,
        "global_median": 0.9634127353678372,
        "conflict_median": 0.9634127353678372,
        "global_share_below_95pct": 0.37037037037037035,
        "conflict_share_below_95pct": 0.37037037037037035
      },
      "ratio_horizon_60d": {
        "horizon_days": 60,
        "global_n": 27,
        "conflict_n": 27,
        "global_median": 0.9759725418218388,
        "conflict_median": 0.9759725418218388,
        "global_share_below_95pct": 0.2962962962962963,
        "conflict_share_below_95pct": 0.2962962962962963
      },
      "ratio_horizon_90d": {
        "horizon_days": 90,
        "global_n": 27,
        "conflict_n": 27,
        "global_median": 0.9906807779167448,
        "conflict_median": 0.9906807779167448,
        "global_share_below_95pct": 0.25925925925925924,
        "conflict_share_below_95pct": 0.25925925925925924
      },
      "ratio30_global": 0.9600665947949557,
      "ratio30_conflict_pooled": 0.9600665947949557,
      "ratio30_hormuz_used": 0.9600665947949557,
      "ratio60_hormuz_used": 0.9747711587303411,
      "ratio90_hormuz_used": 0.9747711587303411,
      "decay_per_day": 0.007653756031564319,
      "half_life_days": 90.56300954738896
    },
    "external_analogues": [
      {
        "key": "tanker_war_1984_1988",
        "name": "Tanker War (1984-1988)",
        "duration_days": 1561,
        "overlap_with_portwatch": false,
        "conflict_related": true,
        "source_label": "Wikipedia: Tanker War",
        "source_url": "https://en.wikipedia.org/wiki/Tanker_War"
      },
      {
        "key": "red_sea_bab_after_houthi",
        "name": "Red Sea / Bab el-Mandeb after Houthi attacks",
        "duration_days": 774,
        "overlap_with_portwatch": true,
        "conflict_related": true,
        "source_label": "AP: Red Sea attacks forced rerouting around Africa",
        "source_url": "https://apnews.com/article/china-red-sea-tensions-global-trade-houthis-shipping-4f398a2e9d4143cd10ee729bda129be2"
      },
      {
        "key": "black_sea_after_2022_invasion",
        "name": "Black Sea after 2022 invasion",
        "duration_days": 533,
        "overlap_with_portwatch": true,
        "conflict_related": true,
        "source_label": "AP: temporary Black Sea corridor after grain-deal exit",
        "source_url": "https://apnews.com/article/855430e8a89444daa5ba1bafa557c280"
      },
      {
        "key": "gulf_tanker_crisis_2019",
        "name": "2019 Gulf tanker crisis",
        "duration_days": 237,
        "overlap_with_portwatch": false,
        "conflict_related": true,
        "source_label": "AP: reference to 2019 limpet-mine tanker attacks",
        "source_url": "https://apnews.com/article/16f0c69a2314c17dcc08149b10861fa3"
      }
    ],
    "severe_reference_duration_days": {
      "median": 28.0,
      "p90": 150.99999999999997
    },
    "conflict_affected_duration_days": {
      "median": 28.0,
      "p90": 150.99999999999997
    },
    "stress_non_conflict_duration_days": null,
    "conflict_proxy_examples_top_duration": [
      {
        "portid": "chokepoint28",
        "portname": "Kerch Strait",
        "start_date_utc": "2022-06-15",
        "end_date_utc": "2022-12-26",
        "duration_days": 195,
        "min_ratio": 0.07692307692307693
      },
      {
        "portid": "chokepoint28",
        "portname": "Kerch Strait",
        "start_date_utc": "2019-11-04",
        "end_date_utc": "2020-04-30",
        "duration_days": 179,
        "min_ratio": 0.017241379310344827
      },
      {
        "portid": "chokepoint28",
        "portname": "Kerch Strait",
        "start_date_utc": "2025-09-09",
        "end_date_utc": "2026-03-02",
        "duration_days": 175,
        "min_ratio": 0.07692307692307693
      },
      {
        "portid": "chokepoint28",
        "portname": "Kerch Strait",
        "start_date_utc": "2020-11-01",
        "end_date_utc": "2021-03-25",
        "duration_days": 145,
        "min_ratio": 0.0
      },
      {
        "portid": "chokepoint3",
        "portname": "Bosporus Strait",
        "start_date_utc": "2025-12-28",
        "end_date_utc": "2026-03-08",
        "duration_days": 71,
        "min_ratio": 0.056818181818181816
      },
      {
        "portid": "chokepoint28",
        "portname": "Kerch Strait",
        "start_date_utc": "2019-08-04",
        "end_date_utc": "2019-10-09",
        "duration_days": 67,
        "min_ratio": 0.0967741935483871
      },
      {
        "portid": "chokepoint3",
        "portname": "Bosporus Strait",
        "start_date_utc": "2025-02-20",
        "end_date_utc": "2025-04-16",
        "duration_days": 56,
        "min_ratio": 0.25
      },
      {
        "portid": "chokepoint28",
        "portname": "Kerch Strait",
        "start_date_utc": "2019-02-05",
        "end_date_utc": "2019-03-23",
        "duration_days": 47,
        "min_ratio": 0.16326530612244897
      }
    ],
    "global_severe_examples_top_duration": [
      {
        "portid": "chokepoint28",
        "portname": "Kerch Strait",
        "start_date_utc": "2022-06-15",
        "end_date_utc": "2022-12-26",
        "duration_days": 195,
        "min_ratio": 0.07692307692307693
      },
      {
        "portid": "chokepoint28",
        "portname": "Kerch Strait",
        "start_date_utc": "2019-11-04",
        "end_date_utc": "2020-04-30",
        "duration_days": 179,
        "min_ratio": 0.017241379310344827
      },
      {
        "portid": "chokepoint28",
        "portname": "Kerch Strait",
        "start_date_utc": "2025-09-09",
        "end_date_utc": "2026-03-02",
        "duration_days": 175,
        "min_ratio": 0.07692307692307693
      },
      {
        "portid": "chokepoint28",
        "portname": "Kerch Strait",
        "start_date_utc": "2020-11-01",
        "end_date_utc": "2021-03-25",
        "duration_days": 145,
        "min_ratio": 0.0
      },
      {
        "portid": "chokepoint3",
        "portname": "Bosporus Strait",
        "start_date_utc": "2025-12-28",
        "end_date_utc": "2026-03-08",
        "duration_days": 71,
        "min_ratio": 0.056818181818181816
      },
      {
        "portid": "chokepoint28",
        "portname": "Kerch Strait",
        "start_date_utc": "2019-08-04",
        "end_date_utc": "2019-10-09",
        "duration_days": 67,
        "min_ratio": 0.0967741935483871
      },
      {
        "portid": "chokepoint3",
        "portname": "Bosporus Strait",
        "start_date_utc": "2025-02-20",
        "end_date_utc": "2025-04-16",
        "duration_days": 56,
        "min_ratio": 0.25
      },
      {
        "portid": "chokepoint28",
        "portname": "Kerch Strait",
        "start_date_utc": "2019-02-05",
        "end_date_utc": "2019-03-23",
        "duration_days": 47,
        "min_ratio": 0.16326530612244897
      }
    ],
    "global_stress_examples_top_duration": [
      {
        "portid": "chokepoint1",
        "portname": "Suez Canal",
        "start_date_utc": "2021-03-24",
        "end_date_utc": "2021-04-12",
        "duration_days": 20,
        "min_ratio": 0.035398230088495575
      }
    ],
    "red_sea_route_examples_top_duration": [
      {
        "portid": "chokepoint4",
        "portname": "Bab el-Mandeb Strait",
        "start_date_utc": "2025-12-09",
        "end_date_utc": "2026-01-05",
        "duration_days": 28,
        "min_ratio": 0.3157894736842105
      },
      {
        "portid": "chokepoint1",
        "portname": "Suez Canal",
        "start_date_utc": "2025-04-30",
        "end_date_utc": "2025-05-26",
        "duration_days": 27,
        "min_ratio": 0.4533333333333333
      },
      {
        "portid": "chokepoint1",
        "portname": "Suez Canal",
        "start_date_utc": "2024-09-03",
        "end_date_utc": "2024-09-25",
        "duration_days": 23,
        "min_ratio": 0.45
      },
      {
        "portid": "chokepoint1",
        "portname": "Suez Canal",
        "start_date_utc": "2024-12-12",
        "end_date_utc": "2024-12-26",
        "duration_days": 15,
        "min_ratio": 0.29411764705882354
      }
    ],
    "black_sea_war_examples_top_duration": [
      {
        "portid": "chokepoint28",
        "portname": "Kerch Strait",
        "start_date_utc": "2022-06-15",
        "end_date_utc": "2022-12-26",
        "duration_days": 195,
        "min_ratio": 0.07692307692307693
      },
      {
        "portid": "chokepoint28",
        "portname": "Kerch Strait",
        "start_date_utc": "2025-09-09",
        "end_date_utc": "2026-03-02",
        "duration_days": 175,
        "min_ratio": 0.07692307692307693
      }
    ],
    "gulf_2019_examples_top_duration": [],
    "analogue_coverage": {
      "tanker_war_1984_1988": {
        "included_in_model": true,
        "mode": "external_duration_prior"
      },
      "red_sea_bab_after_houthi": {
        "included_in_model": true,
        "mode": "portwatch_plus_external_prior",
        "episodes_detected": 4
      },
      "black_sea_after_2022_invasion": {
        "included_in_model": true,
        "mode": "portwatch_plus_external_prior",
        "episodes_detected": 2
      },
      "gulf_tanker_crisis_2019": {
        "included_in_model": true,
        "mode": "external_duration_prior",
        "episodes_detected": 0
      },
      "ever_given_suez_blockage_2021": {
        "included_in_model": false,
        "mode": "portwatch_plus_external_prior",
        "episodes_detected": 1
      },
      "panama_drought_restrictions": {
        "included_in_model": false,
        "mode": "external_duration_prior"
      }
    }
  },
  "recovery_model_params": {
    "mu_global_severe": 3.518747004033754,
    "sigma_global_severe": 1.2133278801172966,
    "mu_global_stress": 3.518747004033754,
    "sigma_global_stress": 1.2133278801172966,
    "mu_external": 6.424694339209264,
    "sigma_external": 0.9068506251174748,
    "mu_conflict": 3.518747004033754,
    "sigma_conflict": 1.2133278801172966,
    "mu_hormuz": 5.223495096272179,
    "sigma_hormuz": 1.2133278801172966,
    "weights": {
      "hormuz": 0.45,
      "conflict_affected": 0.25,
      "global_severe": 0.0,
      "global_stress": 0.0,
      "external_analogues": 0.3
    }
  },
  "post_recovery_attenuation_params": {
    "ratio30_global": 0.9600665947949557,
    "ratio30_conflict": 0.9600665947949557,
    "ratio30_hormuz": 0.9600665947949557,
    "ratio60_global": 0.9747711587303411,
    "ratio60_conflict": 0.9747711587303411,
    "ratio60_hormuz": 0.9747711587303411,
    "ratio90_global": 0.9735187255861802,
    "ratio90_conflict": 0.9735187255861802,
    "ratio90_hormuz": 0.9747711587303411,
    "decay_per_day": 0.007653756031564319,
    "half_life_days": 90.56300954738896
  },
  "regime_params": {
    "baseline_mean": 87.2,
    "baseline_var": 284.61818181818177,
    "baseline_size": 38.51641186222141,
    "collapse_mean": 4.476190476190476,
    "collapse_var": 5.761904761904762,
    "collapse_size": 15.583774250440921
  }
}