OpenHunt for Android is on Google Play — take your plan into the field. Send it to your phone →

Method — activity backtest

Does weather move the harvest?

Other apps put a “movement” percentage on every hour of every day, with no published accuracy. We won’t make an animal-behaviour claim we can’t check — so before any activity feature ships, the check itself ships. This page is it: 302,011 dated kills across 25 Alaska seasons, tested day by day against the weather, with the method, the effect sizes, the confounds and the failures all stated. It will be updated before any claim built on it changes.

The ground truth

Alaska is the only state that publishes true per-kill dates at scale: the Department of Fish and Game’s per-hunter harvest records carry a date of kill for 98.7% of reported harvests. We ingested regulatory years 2000–2024 for moose and caribou — 1,437 season-windows with at least 50 kills each — and joined each hunt unit to its nearest NOAA weather station within 150 km (52 units mapped; 6 were farther than that and honestly get no weather rather than a 300 km extrapolation). Kill dates are ground truth for harvest timing — which is hunter effort and animal availability together. Everything below is designed around that confound, not in denial of it.

The method, plainly

The naive analysis — “kills peak at dawn and in September” — proves only that hunters hunt mornings and Septembers. So the question we actually test is narrower: within one season, in one unit, do the days with a factor (rising pressure, wind, cold) carry more of that season’s kills than their position in the season predicts?

Results

The number reported is the extra share of a season’s kills landing on factor-high days, beyond the effort curve’s prediction, in percentage points. Bold rows have 95% intervals excluding zero; sixteen intervals were computed, so expect one or two to clear that bar by chance — the filter that matters is sign stability across the two regimes (fall seasons vs the January–March winter hunts, which are different weather worlds).

caribou · fall seasons

factoreffect95% intervalseasons
Pressure trend (day-over-day)-0.6pp[-3.0pp, +1.8pp]136
Temperature vs seasonal normal+2.0pp[-0.6pp, +4.7pp]161
Wind speed+0.4pp[-2.1pp, +3.0pp]161
Precipitation+1.5pp[-0.7pp, +3.7pp]159

caribou · winter hunts

factoreffect95% intervalseasons
Pressure trend (day-over-day)+0.7pp[-0.8pp, +2.1pp]202
Temperature vs seasonal normal-2.3pp[-4.4pp, -0.2pp]242
Wind speed-0.5pp[-2.1pp, +1.1pp]242
Precipitation-0.7pp[-2.3pp, +0.8pp]233

moose · fall seasons

factoreffect95% intervalseasons
Pressure trend (day-over-day)+1.3pp[+0.5pp, +2.2pp]590
Temperature vs seasonal normal+0.5pp[-0.8pp, +1.8pp]685
Wind speed-1.1pp[-2.1pp, -0.0pp]683
Precipitation-1.0pp[-1.9pp, -0.1pp]649

moose · winter hunts

factoreffect95% intervalseasons
Pressure trend (day-over-day)+1.9pp[+0.2pp, +3.7pp]104
Temperature vs seasonal normal+1.2pp[-1.5pp, +3.9pp]135
Wind speed-2.4pp[-4.7pp, -0.2pp]135
Precipitation+2.5pp[+0.9pp, +4.2pp]134

What survives, and what does not

The held-out gate

Publishing effect sizes is not the same as earning a forecast. Before any fused activity number can appear in the product, our design rule requires it to prove skill on data it has never seen: the model is trained with an entire region and an entire five-year era excluded, then scored only on that excluded region’s excluded years — repeated across every region × era cell, so every season is scored exactly once by a model that never saw its region or its era. Regions are the Department of Fish and Game’s own five administrative regions, not a partition we invented. Four criteria, all required: held-out skill above the effort baseline with an interval excluding zero; the factor’s sign holding in every region; no single region carrying more than half the skill; and no single factor’s removal flipping the result.

caribou does not pass the gate

no factor is sign-stable across regimes with intervals excluding zero — nothing to fuse.

moose passes the gate

Candidate: Pressure trend (day-over-day) — wind is deliberately excluded, because a factor we can only defend as a harvest effect may not enter an animal claim. Held-out skill +1.2pp [+0.4pp, +2.0pp] over 694 never-seen seasons across 25 train/test cells; the largest single region contributes 30% of it.

regioneffect95% intervalseasons
Southeast+3.5pp[-1.6pp, +9.2pp]36
Southcentral+1.0pp[-0.6pp, +2.5pp]138
Central/Southwest+1.4pp[+0.0pp, +2.7pp]221
Interior+0.8pp[-0.5pp, +2.1pp]225
Arctic/Western+2.9pp[+0.3pp, +5.5pp]74

single-factor index: the drop-one-factor criterion is vacuous, not passed.

Leaving Alaska: the Idaho replication

A claim that only works in one state is a curiosity, not a mechanism — so the pressure finding gets retested where the data grain is completely different. Idaho publishes 95 units of general-season deer harvest with hunter-days — a true effort denominator Alaska never had — and its season windows come verbatim from the Seasons & Rules brochures. The test: within one unit and weapon, do the years whose season windows held more rising-pressure days show more harvest per hunter-day? Confidence resamples whole years, because weather within a year is correlated statewide — which is exactly why a short span of window vintages cannot fake significance.

Idaho deer · week scale · seasons 2015, 2016, 2017, 2018, 2020, 2021, 2022, 2023, 2024

take methodunit-serieseffect95% interval
Any Weapon88-7.9pp[-20.5pp, +5.4pp]
Archery78+3.4pp[-17.2pp, +30.9pp]
Muzzleloader17+13.9pp[-26.4pp, +33.5pp]

The take methods do not even agree in sign — at this grain the pressure mechanism does not replicate, and adding vintages made that clearer, not fuzzier. Not gate input: the vintage span is below the ten year-blocks a year-resampled interval needs to mean 95%. A deer effect is a deer claim: nothing here transfers to moose, and nothing ships from this table until it passes the same gate Alaska did. A season-window contrast is also a far blunter instrument than Alaska’s kill dates — a real day-scale effect can vanish at this aggregation, so the honest conclusion is “not detectable at week scale”, not “disproved”.

Named limitations

What this means in the product

The conditions score remains a statement about your situation — wind, scent, light. The gate above defines exactly what an activity surface has earned the right to say: for moose in Alaska, at day scale, a pressure-trend signal phrased as “conditions historically associated with more movement recorded” — nothing hourly, nothing for caribou, nothing outside Alaska until lower-48 replication passes the same gate, and always with this backtest one tap away.

That surface now exists, exactly that narrow: Alaska unit pages carry a day-scale pressure band for moose. Its construction, so you can check it: the number is today’s day-over-day change in daily-mean sea-level pressure at the same station this backtest joined to that unit, computed from live observations over paired clock hours (a running day compared hour-for-hour against yesterday, so the diurnal cycle cannot read as a front). The backtest’s within-window median split has no live equivalent, so the band classifies today against the station’s own 25-year seasonal distribution of the identical quantity — terciles per fall/winter regime, built from the committed daily interchange (scripts/build-activity-band.py). Too few paired hours and the band simply does not render. If a regenerated backtest ever fails the moose gate, the band artifact empties and the surface disappears — the component reads verdicts, not prose. The raw interchange and the harness are in the open repository (data/activity/, crates/pipeline/src/activity.rs); methodology questions and challenges are welcome — the draw odds backtests set the house standard this page follows.

Revision — v2: the shared median split silently dropped windows whose factor median tied the lower of two values, so v1 precipitation figures rest on fewer windows and do not reproduce — they were wrong, not merely superseded. The precipitation sign-flip conclusion is unchanged; every other v1 number is identical.

Backtest generated 2026-08-17T12:15:21Z · seed 20260817 · 4000 resamples · windows require ≥50 kills