Mahi‑mahi — Full Transparency (v1)

Last updated: January 2026 Live URL: primetimefishing.app/mahi

This page is designed to leave nothing out: the exact equations, every variable we use, the open-access URLs behind each driver, verbatim quotes (with page pointers where available), and a plain-English explanation of what is research-backed vs what is calibrated.

The exact math (Mahi v1)

Mahi is an offshore all-day rating built from “lifts” that map into a 1.0–5.0 rating.

L_ocean_raw = L_sst + L_chl
L_ocean     = clamp(L_ocean_raw, -0.06, +0.02)   // ocean cap (cold can reduce more than warm can boost)

L_total_raw = L_phase + L_overlap_avg + L_time_avg + L_ocean
L_total     = clamp(L_total_raw, 0, L_REF)       // global clamp

rating = 1 + 4 × (L_total / L_REF)               // where L_REF = 0.28

Calculation Methodology (All‑day rating)

This section is the “how it’s calculated” reference for Mahi v1 (mirrors the canonical internal doc).

Step 1) Phase curve (shared Yellowfin/Mahi family)
phaseBoostValue = moonPhaseBoostYellowfinMahi(f)  // f in [0,1]
L_phase = (phaseBoostValue × phaseWeight / 2.0) × 0.31
phaseWeight = 1.33

Step 2) Fixed all‑day baselines (modeling assumptions)
L_overlap_avg = overlap(overlapMaxBoost × 0.4, overlapMaxBoost)
L_time_avg    = timeBias(nightAvailability × 0.5)   // assume ~50% of day is night

Step 3) Ocean block (SST required; CHL optional)
If SST missing → L_ocean = 0.00
If SST < 19°C → force L_chl = 0.00 (cold gate)
L_ocean = clamp(L_sst + L_chl, -0.06, +0.02)

Step 4) Total lift → rating
L_total = clamp(L_phase + L_overlap_avg + L_time_avg + L_ocean, 0, 0.28)
Rating  = 1 + 4 × (L_total / 0.28)

Variables (what’s research-backed vs calibrated)

Research-backed means the driver/pattern/mechanism is supported by open-access sources. Calibrated means we chose the exact curve shape/thresholds/weights/caps to produce a stable 1.0–5.0 score and to avoid overclaiming from region- or gear-specific studies.

Moon phase (L_phase)

Research-backed: an open-access offshore tournament summary reports Dolphinfish (Mahi‑mahi) catch-rate peak at First Quarter.

Source (open PDF): NC Sea Grant — Hook, Line & Science (Winter 2020)

“Scientists found a relationship between catch rates and lunar phase for 5 of the 8 species as shown here…
Dolphinfish first quarter” (PDF p.2)

Calibrated: we use a smooth shared phase curve (yellowfin‑mahi) and scale it into a lift:

L_phase = (phaseBoostValue × phaseWeight / 2.0) × 0.31
phaseWeight = 1.33

Average dawn/dusk opportunity (L_overlap_avg) — modeling assumption

Offshore day ratings don’t use time windows. For non‑Yellowfin offshore species we include a small fixed overlap lift so overlap isn’t implicitly treated as 0 in a 24‑hour score. This is a modeling/UX assumption (not claimed as a research effect size).

Night availability (L_time_avg)

Research-backed (context): Mahi spawning events are predicted to occur at night and chiefly at the new moon phase (context; not a universal CPUE effect-size study).

Source (open access): Schlenker et al. 2021 — Frontiers in Marine Science (PDF)

Calibrated: we translate diel context into a small fixed all‑day average lift using nightAvailability = 0.285 and assume ~50% of a day is night.

Environmental Variables (Verification)

This section documents what the papers say (verbatim quotes with page pointers) and then shows exactly how PrimeBite maps that into a stable rating (calibrated thresholds + caps).

Oceanography (SST + chlorophyll‑a) (L_ocean)

Research-backed: multiple open-access studies show SST and chlorophyll-a covary with dolphinfish/mahi CPUE/habitat, but ranges are region-dependent.

SST anchors:

Marín‑Enríquez & Muhlia‑Melo 2018 (PDF)

“...dolphinfish preferred warm waters (24–28°C)...” (PDF p.1)

Martínez Arias et al. 2022 (PDF)

“Higher values of CPUE occurred in temperatures between 25.5 and 27.5 ºC. Above 27.5 °C and below 25.5 °C, CPUE decreases.” (PDF p.5)

Palko et al. 1982 (PDF)

“...are generally restricted by the 20°C isotherm (Gibbs and Collette 1959).” (PDF p.4)

Hammond 2008 (SEDAR document page)

“Dolphinfish were shown to utilize ocean waters with temperatures ranging from 16.0 to 30.5°C.” (Hammond 2008; quoted in our fact-check log)

Young thesis (PDF)

“...tolerated temperatures from 15°C to 29°C but would stop feeding at 18°C (Hassler and Hogarth 1977).” (PDF p.76)

Chlorophyll anchors:

“...low concentrations of chlorophyll‑a (<0.02 mg/m3) ...” (Marín‑Enríquez & Muhlia‑Melo 2018, PDF p.1)
“82.90% of total fish... was caught in waters with concentrations of chl‑a between 0.05 and 0.25 mg/m3...” (Marín‑Enríquez & Muhlia‑Melo 2018, PDF p.5)
“Higher values of CPUE occurred in places where Chl‑a varied between 0.5 and 2.2 mg/m3. Below and above these values respectively, CPUE decreased.” (Martínez Arias et al. 2022, PDF p.5)

Calibrated (exact rules used in-app):

  • SST required (if missing, ocean is treated as neutral: L_ocean = 0.00).
  • Cold-water gate: if SST < 19°C, force L_chl = 0.00 (do not allow CHL bonuses to partially cancel cold penalties).
  • Ocean cap: L_ocean = clamp(L_sst + L_chl, -0.06, +0.02).

Worked examples (inputs → lifts → rating)

Best case (prime moon window + strong ocean)

Assume:
phaseBoostValue = 1.0 (First Quarter peak for the shared phase model)
SST = 26.5°C → L_sst = +0.01
CHL = 0.10 mg/m³ → L_chl = +0.01

L_ocean_raw = 0.02 → L_ocean = +0.02 (cap)
L_total_raw includes L_phase + L_overlap_avg + L_time_avg + L_ocean
Global clamp allows 5.0/5 only when L_total reaches L_REF = 0.28

Cold water (habitat-limiting)

Assume:
SST = 15°C → L_sst = -0.06
SST < 19°C → CHL ignored (L_chl = 0.00)
Ocean cap allows strong negative influence to reach 1.0/5 in clearly non-viable cold water

Model changelog (Mahi)

  • 2026-01: Published full transparency page (this page). No changes to scoring logic.