Black Marlin — Full Transparency (v1)
Last updated: January 2026 Live URL: primetimefishing.app/blackmarlin
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 (Black Marlin v1)
Black Marlin is an offshore all-day rating built from “lifts” that map into a 1.0–5.0 rating.
L_ocean_raw = L_sst
L_ocean = clamp(L_ocean_raw, -0.06, +0.02) // SST-only ocean cap
L_total_preSeason = L_phase + L_overlap_avg + L_ocean
L_total_postSeason = applySeasonalMultiplier(L_total_preSeason, seasonMult)
L_total = clamp(L_total_postSeason, 0, L_REF) // global clamp
rating = 1 + 4 × (L_total / L_REF) // where L_REF = 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.
Calculation Methodology (All‑day rating)
This section is the “how it’s calculated” reference for Black Marlin v1.
phaseBoostValue = moonPhaseBoostBlackMarlinQuarters(f) // f in [0,1]
L_phase = (phaseBoostValue × phaseWeight / 2.0) × 0.31
L_overlap_avg = overlap(overlapMaxBoost × 0.4, overlapMaxBoost)
// Ocean (SST only):
// - If SST missing → ocean treated as neutral (0.00)
L_ocean = clamp(blackMarlinSstLift(sstC), -0.06, +0.02)
// Seasonality:
seasonMultRaw = seasonalMultipliers[monthIndex]
seasonMult = clamp(seasonMultRaw, 0.9, 1.15)
L_total = clamp((L_phase + L_overlap_avg + L_ocean) × seasonMult, 0, 0.28)
rating = 1 + 4 × (L_total / 0.28)
Moon phase (quarter phases / “half-moons”)
Research-backed (GBR diaries): higher CPUE during half-moons and ~30–40% lower during new or full moons.
Pepperell et al. 2025 (open access): DOI • PDF
“Moon phase had a non-linear relationship with higher CPUE during a half moon and approximately 30%–40% lower during new or full moons (Fig. 7e).”
Seasonality (GBR timing)
Research-backed: a GBR spawning aggregation forms in Oct–Nov; the charter season is Sep–Dec with peak CPUE Oct–Nov.
Domeier & Speare 2012 (open access): PLOS ONE full text
Calibrated: exact multipliers (GBR-timed, applied globally as a modeling choice): Sep/Dec ×1.05; Oct/Nov ×1.10; all other months ×1.00.
Environmental variables (verification)
This section documents what the papers say (verbatim quotes) and then shows how PrimeBite maps that into a stable rating (calibrated thresholds + caps).
SST (SST-only ocean block)
Setyadji & Fahmi 2020 (open access): DOI • PDF
“In this study, high CPUE occurred between 29–31°C...”
“... SST and SSH were statistically significant when incorporated into the models, but it allegedly wasn’t the main driver...”
Calibrated (exact rules used in-app):
- Missing SST: treat ocean as neutral (
L_ocean = 0.00). - Ocean cap:
L_ocean = clamp(L_sst, -0.06, +0.02). - Cold penalties:
<18°C → -0.06;18–22°C → -0.03(explicit modeling choice). - Warm bonuses:
29–31°C → +0.02;28–32°C → +0.01(loosely anchored to the “29–31°C” note).
Worked examples (inputs → lifts → rating)
Best case
Assume:
phaseBoostValue = 1.0 (quarter-phase peak)
seasonMult = 1.10 (Oct/Nov)
SST = 30°C → L_sst = +0.02 → L_ocean = +0.02 (cap)
L_total_preSeason ≈ L_phase + L_overlap_avg + 0.02
L_total_postSeason = L_total_preSeason × 1.10
Global clamp allows 5.0/5 only when L_total reaches L_REF = 0.28
Cold water
Assume:
SST = 17°C → L_sst = -0.06 → L_ocean = -0.06
seasonMult = 1.00 (most months)
Cold penalty can materially lower the rating and supports reaching 1.0/5 in clearly non-viable water (after clamping).
Model changelog (Black Marlin)
- 2026-01: Published full transparency page (this page). No changes to scoring logic.