TL;DR

Forelore delivers a two-layer audit for every venue × date in the customer's event window. Layer 1 (wedding event-day floor): the pleasant-hours threshold such that, with 90% statistical confidence, at least 90% of historical event-days in the 7-day window held this value. (An "event-day" = any single day in your date's 7-day window, in one of the 25 past years — i.e. the same date window in a past year; the 7-day window × 25 years gives ~175 such days.) Equivalently: the floor is the value an event-day in this date window clears at least 90% of the time (about 9 in 10) — inferred at ~90% confidence from the 25-year sample. Layer 2 (6-of-7 audit floor): the pleasant-hours value that — in 24 of 25 historical years — was held by at least 6 of the 7 days in the window. Order statistic theory under the Weibull plotting position gives ~92% one-sided confidence, reported conservatively as ~90% (autocorrelation tested and negligible for this rain-driven metric — see §5). Both layers are computed from the same 25-year empirical data; they answer different questions.

1. The 7-day event window — why this resolution

Both Forelore audit layers compute statistics on the 7 calendar days centered on the customer's chosen date. This window is not chosen for convenience: it is the finest temporal resolution at which a 25-year climate signal can be reliably distinguished from sampling noise for a single venue.

1.1 Why not 1 day (the customer's actual event date)

Estimating a per-calendar-day floor from 25 single-day observations per year is statistically thin. A single-day order statistic at k=2, n=25 has standard error of order SE ≈ σ / √n on the order of 1.5–2.5 hours for typical pleasant-hours distributions — large enough that adjacent calendar days produce noticeably different floors driven by sampling variance, not by real climatology. This is consistent with bootstrap CI widths we observed across 4 sample venues × 365 days (CI widths 5–9h on raw daily order statistics in tropical regions; see Wilks 2011, §5.6; David and Nagaraja 2003, Ch. 3).

1.2 Why not 30 days (a calendar-month average)

A 30-day window typically spans multiple climatological regimes (e.g., dry-to-wet transition, pre- vs in-monsoon). Averaging across regimes obscures the actual operational window the customer is choosing. For a single wedding decision, a 30-day audit is no longer answering the customer's question («is my date safe?») and starts answering a different one («is this month typical?»).

1.3 Why 7 days specifically

A 7-day window is:

The 7-day window is therefore the resolution floor of our audit. Below this, sampling noise dominates climate signal; above this, the climatological homogeneity assumption begins to fail. This choice is fixed for all Forelore wedding-side and villa-side audits and is the same window used by both Layer 1 and Layer 2 computations.

2. Layer 1 — Wedding event-day floor (Student-t tolerance interval)

2.1 Definition

For any venue × date in the 7-day window centered on the customer's event date, Forelore computes the highest pleasant-hours threshold T such that:

"With 90% statistical confidence, at least 90% of future event-days in this 7-day window will hold ≥ T hours of pleasant conditions."

This is formally a one-sided 90%/90% tolerance interval on the marginal probability that a single event-day in the window falls below T. The customer's chosen wedding date is assumed climatologically exchangeable with the other 6 days in the window — valid for natural climate variables in the absence of day-of-week effects.

2.2 Computation

Per (pixel, DOY, candidate threshold T):

  1. For each of the 25 meteo-years: compute K_y(T) = number of days in the 7-day window with pleasant hours strictly less than T. Year y contributes only if all 7 days have valid data.
  2. Compute mean_K(T) and the sample SD sd_K(T) (ddof=1) across the N ≤ 25 valid years.
  3. Compute the one-sided 90% upper bound on the per-day risk via Student-t analytic:
    upper_90(T) = ( mean_K(T) + t_{0.90, df=N-1} · sd_K(T) / √N ) / 7
  4. The wedding event-day floor is max{ T : upper_90(T) ≤ 0.10 }.

2.3 Why Student-t analytic, not bootstrap

The natural alternative — year-cluster bootstrap with n=1000 or n=10000 resamples — was empirically validated against the Student-t analytic on 4 sample venues × 365 DOYs = 1,460 cells.

Method|Δ| median vs bootstrap n=10000Exact matchWithin 0.5h
Bootstrap n=10000.00h96.0%99.2%
Student-t analytic (df = N-1)0.00h99.1%99.9%
Normal approximation (z = 1.282)0.00h98.9%99.7%

The Student-t analytic matches bootstrap n=10000 at or above the threshold discretization step (0.5h). It is statistically equivalent to a properly executed year-cluster bootstrap, with the added benefit of being deterministic — identical results on every re-run. The CLT delivers a valid normal approximation given N=25 and Ky bounded in {0..7}; Student-t (rather than normal) accounts for the finite-sample uncertainty in the SD estimate.

2.4 Bootstrap correction at rare edge-case pixels

A small fraction of pixels worldwide (typically less than 0.5% of the 5.4M-pixel grid, concentrated in monsoon-margin and desert-fringe zones) have per-year Ky distributions that are too sparse or near-degenerate for the analytic normal approximation to be well-justified. These are identified by an automated check on two flags:

For pixels flagged F2 or F3 at any candidate threshold, Forelore computes the floor directly from a dedicated year-cluster bootstrap (n=5,000 resamples) rather than the analytic form, for maximum precision in these regimes. The correction shifts the floor by 0–2h on affected pixels and leaves the 99.5%+ of grid cells unchanged.

3. Layer 2 — 6-of-7 audit floor (order statistic)

3.1 Definition

For the same venue × date and 7-day window, Forelore computes the 2nd-lowest, across 25 meteo-years, of the per-year 2nd-worst-of-7 day.

The pleasant-hours value that — in 24 of 25 historical years — was held by at least 6 of the 7 days in the window.

In order statistic notation: X_(2)( {Y_2,y}_{y=1..25} ) where Y_2,y = X_(2)( daily pleasant-hours, 7 days of year y ).

3.2 Quantile interpretation (Weibull)

For n iid samples from a distribution F, the k-th order statistic X_(k) is a point estimator of the p-quantile of F where p depends on the plotting position formula:

Formulap for k=2, n=25Source
Weibullk / (n+1) = 2/26 = 7.69%Weibull (1939); standard in hydrology, climatology
Hazen(k − 0.5) / n = 1.5/25 = 6.00%Hazen (1914)
Cunnane(k − 0.4) / (n + 0.2) = 1.6/25.2 ≈ 6.35%Cunnane (1978); often preferred for extremes

We adopt the Weibull plotting position as the canonical choice — it is the standard in extreme value statistics for atmospheric and hydrological data (Wilks 2011, §5.6).

One-sided lower confidence = 1 − p:

Under the iid assumption, the 6-of-7 audit floor corresponds to a ~92% one-sided lower confidence bound on the underlying climate distribution.

4. Block-level support profile — inside the day

4.1 What it answers

The Layer 1 daily floor reports how much pleasant time the event-day window has overall. It does not tell the planner where in the day that pleasant time has historically concentrated. The block-level support profile decomposes the daytime window (08:00–22:00 local) into four climate-neutral blocks and reports, for each, the conservative coverage level met at least 90% of the time (about 9 event-days in 10). This is supplementary information: it sits alongside the daily floor and answers a different question, namely «is this specific 3- or 4-hour block reliable for a critical event (ceremony, reception, photo session)?»

4.2 The four blocks

Block boundaries are climate-neutral, not event-coded. Wedding event labels (Brunch, Heat Peak, Ceremony, Reception) appear only in the customer-facing audit report and never enter the underlying data.

4.3 The conservative block floor

For each (pixel, day-of-year, block) tuple, we compute the block fraction per year × day:

block_fraction[year, day, block] = pleasant_slots_in_block / total_slots_in_block

where pleasant = rain < 0.1 mm/h and UTCI in [-13°C, +32°C] per 30-min slot. We hold the block fraction to the same conservative 90/90 standard as Layer 1. Because block fractions are bounded in [0, 1] and their year-to-year values are skewed toward those bounds, the normal approximation behind the analytic (Student-t) form is less dependable here than for the daily floor. The block floor is therefore computed primarily with a year-cluster bootstrap; the analytic form is reserved for blocks whose floor is already effectively determined — near-saturated or near-empty cases. On the 7-day window centered on the date, across 25 years, we report the highest threshold T that the block clears at least 90% of the time — with 90% statistical confidence. This threshold is the block floor.

4.4 The three support classes (operational symmetry)

The block floor is reported alongside one of three discrete classes, calibrated for short-event reliability:

The thresholds 0.76 and 0.63 are not arbitrary — they produce operational symmetry across the 3-hour and 4-hour block lengths. A 0.76 floor on a 3-hour block discretizes to 5 of 6 slots pleasant (= 2.5h pleasant, 0.5h non-pleasant); on a 4-hour block, 7 of 8 slots (= 3.5h pleasant, 0.5h non-pleasant). The "max 30 minutes non-pleasant" interpretation is therefore uniform across blocks. Similarly, the 0.63 threshold discretizes to "max 1 hour non-pleasant" uniformly.

4.5 Main constraint — what limits the block

When the block is classified Workable or Constrained, the report names the main constraint — the climate channel (rain, heat, cold, or a mixed combination) that limits the block. This is derived by comparing the per-channel block fractions for rain (rain < 0.1 mm/h, ignoring UTCI) and thermal comfort (UTCI in range, ignoring rain). If one channel has a meaningfully lower mean than the other (gap ≥ 5 percentage points), it is named; otherwise we report "mixed". For Strong blocks the main constraint is omitted because there is no material limit to plan around.

4.6 Relationship to Layer 1 (the daily floor)

The daily floor (Layer 1) and the block floors are computed on the same 7-day cyclic window × 25-year sample but on different statistics — the former on the sum of pleasant slots per day, the latter on the per-block pleasant fraction. They are therefore not algebraically related: the sum of block floors × block length is an operational block-level summary, not a mathematical bound on the daily floor. We have empirically verified this relationship across six climate zones (Bahamas, South Florida, Mountain continental, Mediterranean, Tropical equatorial; n = 282 cells): in 84% of cells the daily floor exceeded the sum of block floors (block diversification effect); in 16% the sum exceeded the daily floor by up to 2 hours, predominantly in subtropical near-saturation regimes. For this reason the audit reports the daily floor and the block profile as two independent views of the same window, never summed or differenced into a single number.

5. Climate autocorrelation — tested, and negligible for this metric

The iid assumption underlying the confidence framework would be violated if successive years were statistically dependent — multi-year climate modes (ENSO, AMO, NAO, PDO) can induce year-to-year persistence. Rather than assume it, we tested it directly in the data.

5.1 The diagnostic

For positively autocorrelated samples the effective sample size Neff is smaller than the nominal N, which would inflate confidence. The standard correction (Bretherton et al. 1999; Wilks 2011, §5.2.4):

N_eff ≈ N × (1 − ρ) / (1 + ρ)

where ρ is the lag-1 autocorrelation of the per-year series.

5.2 Empirical estimate for Forelore

We measured ρ on the per-year window pleasant-hours series. For this rain-driven metric it is essentially zero: a pooled estimate over hundreds of grid cells gives lag-1 ρ ≈ −0.04 (slightly negative), and the flagship venue (Harbor Island) sits at ρ ≈ −0.2. This matches the established result that precipitation is indistinguishable from a random process year-to-year over most of the global land surface (Sun et al., PNAS 2018). Temperature carries more persistence, but the thermal channel is rarely the binding constraint here.

Consequence: Neff ≈ N. The 25 meteo-years behave as roughly 25 independent samples, so no autocorrelation discount is applied or needed. The headline ~90% is the confidence level of the bound itself (we set it at 90%) — not a number discounted from a higher in-sample frequency.

5.3 Where it does matter, and the two layers

A minority of regimes (~10–25% of cells, e.g. some strong-ENSO precipitation areas) show positive persistence, ρ up to ~0.2–0.3. There Neff falls to ~14–17 and the true confidence of a nominal-90% bound drops by a few points (to ~85%); those cells are flagged as lower-confidence.

For the typical venue (Neff ≈ N): Layer 1 (Student-t bound on the mean shortfall, N = 25) keeps its nominal ~90% confidence; Layer 2 (2nd-lowest of 25, an order statistic) has an iid one-sided confidence of ~92% (Weibull plotting position 2/26). We report a flat ~90% for both as a conservative round-down — absorbing discretization and any residual dependence — not as an autocorrelation correction.

6. Why we report 90% (for both layers)

6.1 Why round down

We report "~90%" rather than the higher iid-theoretical numbers (92.3% for the audit floor; nominal Student-t for the wedding floor) for two reasons:

  1. Conservativeness: choosing the lower end is consistent with Forelore's "audited, not averaged" stance: we err toward under-stating, not over-stating, confidence.
  2. Buffer against unknown unknowns: Effective-N estimates carry their own uncertainty. The 90% figure absorbs that uncertainty in the customer's favor.

6.2 Customer interpretation

Wedding event-day floor:

"Across the 25 years of historical data, with 90% statistical confidence, at least 90% of randomly-chosen event-days in your 7-day window held the floor value or higher. For your specific event-day, this is a marginal probability under stationarity — not a forecast."

6-of-7 audit floor:

"In 24 of the last 25 observed years, at least 6 of the 7 days in your window held the floor value or higher. This is a structural-week measure: a customer who arrives expecting 'most days to clear' has ~92% historical support, reported conservatively as ~90%."

7. Why we use the 2nd-worst year, not the absolute worst

For the Layer 2 audit floor, we deliberately drop the single worst year (= report the 2nd-lowest of 25, not the absolute minimum). Three justifications:

  1. Robustness to single-event outliers: A single tropical storm, satellite data gap, or model-resolution artifact can produce a year-min of 0.0h that is not representative of the underlying climate distribution.
  2. Decision usability: The absolute minimum can make many otherwise viable windows appear unusable. The 2nd-worst year better represents a high-confidence operational floor.
  3. Standard practice in climate risk reporting: The IPCC, World Bank, and major reinsurance models use percentile-based floors (typically 5th–10th percentile) rather than absolute minima for similar reasons.

8. ENSO robustness

8.1 The concern

The 25-year sample window (Jul 2000–Jun 2025) does not necessarily contain ENSO phases (El Niño / La Niña / Neutral) at their long-run climatological frequencies. If our sample under-represents the ENSO phase that drives bad outcomes at a given venue × date, the audited floor could be optimistically biased.

8.2 Sample composition

ENSO phaseCount in sampleSample frequencyLong-run climatology (1950–2023)
El Niño520%~28–32%
La Niña312%~22–28%
Neutral1768%~40–50%

Our 25-year window under-represents La Niña years by roughly half (12% vs ~25% long-run). The bias is at the cohort frequency, not at the per-year ENSO-state level.

8.3 Empirical test — Bahamas (Apr–May), under the wedding event-day floor (Layer 1)

For the Harbor Island Wedding Audit sample, we stratified the per-year per-day pleasant-hours values by ENSO phase, for the 7-day windows around the two headline dates:

DatePhaseN (years)Wedding cons 90/90 stratified (h, composite)
May 1El Niño5~7–8
May 1La Niña3~3–5 (3/3 LN years cluster below 7h; captured in the cons 90/90 floor of 6.0h)
May 1Neutral17~7–8
May 8El Niño511–12
May 8La Niña311–13
May 8Neutral1711–12

ENSO has a measurable magnitude effect on the trough date (May 1) but no detectable effect on the protected date (May 8). The May 1 effect does not clear α=0.05 because N=3 La Niña years is statistically underpowered, not because the magnitude is small.

8.4 Bootstrap re-weighting (under Layer 1)

To test whether the wedding event-day floor is robust to ENSO sample bias, we resampled the 25 years 10,000 times using climatological ENSO weights (30% EN, 25% LN, 45% Neut) instead of observed-sample weights:

DateObserved cons 90/90 floorRe-weighted mean floorRe-weighted P5–P95
May 16.0h5.8h4.5–7.0h
May 811.0h10.7h9.5–12.0h
Both audit layers are robust to ENSO sample bias. Climatological re-weighting moves both the Layer 1 cons 90/90 floor and the Layer 2 6-of-7 audit floor by ≤0.3h on both dates. The Student-t analytic captures the ENSO tail directly through the empirical distribution of Ky values; the order statistic absorbs the worst La Niña year in the sample directly.

8.5 Conditional risk on already-weak dates

The headline confidence is unconditional. On a date the audit already flags as weak — e.g. May 1 Bahamas (6.0h) — a future strong La Niña could push the outcome lower still; that residual risk is a property of the climate, not the method. It is precisely why the audit exists: a planner who sees the 6.0h floor and reroutes to May 8's 11.0h has used it exactly as intended — the floor's job is to move you off the weak date, not to make the weak date safe.

9. References

← Back to forelore.ai