Management plans to replace the ten machines that earned the least. Before we spend on that, this page tests the three explanations for low earnings, one at a time, then prices what the $100,000 should buy for July. Machine summaries follow the period, zone and bank filters; guest summaries follow period, tier and region. The closure study, model validation and July action plan use fixed windows. Concentration uses six-month ranks and the region filter only.
Location matters, but a better-performing machine does not prove more property-wide profit. Keep replacement, signage and policy rollout on hold until incremental value is established.
Luck z = (house win − theo) ÷ the standard deviation implied by each game's published payout variance and the actual bets. Values between −2 and +2 are ordinary luck. Hit-rate z compares the share of spins that paid anything with the game's published hit probability. Days = days on the floor in the period.
Horizontal: expected house win (theo) per available hour, which adjusts for game math and available time. Vertical: luck z. A low-earning machine sits far left; location and demand may explain it; a lucky-or-unlucky one sits high or low. The shaded band is ordinary luck (±2).
Darker = more expected win per hour. Cells with fewer than 3 machines are omitted. Reading across a row compares the same game math in different places.
Lost theo = downtime hours × that manufacturer's theo per available hour. It is an estimate of expected house win forgone, assuming demand would have been normal while the machine was down.
All fault tickets, Jan–Jun, by local hour the machine went down.
Player-months: one row per card holder per month with any activity. "Ahead" = player-months with positive tracked net. Carded play only; uncarded play is invisible here.
Reinvestment = comp economic cost ÷ tracked theo. Comp cost is already inside POS cost of goods; it is counted once.
Fixed validation window, unaffected by dashboard filters. Both forecasts were fixed from Jan 1 – Apr 30 only and never refit on May–June. No later data, tourism or survey figures were used as inputs.
Sources. Machine meters (machine_day, all play), game math (game_math), placements and zones (prepared_daily_view), tickets (operations), floor totals (property_day), tracked players (player_period), loyalty events (loyalty_ledger), walkways, action catalogue. Release 0.9.0-draft.
Money. House win = coin-in − payout. Theo = Σ bet × (1 − RTP). All ratios are ratios of sums. Off-floor days (machine not installed or retired) are excluded, not counted as zero.
Luck. For each machine, the standard deviation of house win is √Σ(payout-multiplier variance × bet²), from published game variance and actual bet sizes. Luck z = (house win − theo) ÷ that SD. Hit-rate z uses Σ(spins × p) and Σ(spins × p × (1 − p)) across each day’s configuration. Location filters preserve each machine’s dated placements; machines spanning locations list both.
Exposure. Comparisons use theo per available hour (scheduled hours minus downtime; DST day has 23 h) so new, retired or broken machines are not penalized for missing time.
Model. Train Jan 1 – Apr 30, test May 1 – Jun 30. Baseline = training-period mean daily coin-in. Model = training mean for each weekday. Metric = mean absolute error in dollars.
Limitations. Synthetic data. Carded play only for guests. Downtime cost assumes normal demand while down. Action benefits are estimates with stated ranges, not guarantees. An unusual payout pattern is a reason to inspect, not evidence of wrongdoing.
Built with Python + DuckDB for aggregation and plain HTML/SVG for this page. AI assistance disclosed in the write-up appendix.