Groundwater Forecast - Model Dashboard Last run: 2026-05-21 12:15

Performance statistics for the machine learning groundwater prediction model. The model trains daily on 3,346 days of data (2003–present), using a 366-day weighted rainfall window with dynamic lag shifting to predict Calculated Groundwater % up to 120 days ahead across three rainfall scenarios. The 20-day backtest reruns automatically each day at 12:15 after EA data updates.

How the Model Works

Core Formula

Each day's groundwater level is predicted using a linear formula applied to a weighted sum of the past 366 days of rainfall. Before being summed, every day’s rainfall is multiplied by two factors: a monthly factor (accounting for seasonal variation in recharge) and a lag weight (accounting for how long ago the rain fell and how much effect it still has on the aquifer).

GW %  =  −8.00  +  0.147 × WeightedRainSum

The intercept (−8.00) and slope (0.147) are currently fixed at calibrated values. The slope derives from the original Excel hydrological model (calibrated against 20+ years of EA gauge data); the intercept was recalibrated in February 2026 when the original value (−22.09) was found to underestimate groundwater levels by ~14% under current weighted rainfall conditions.

To ensure predictions start exactly at today’s measured level, an exponentially decaying correction is added. This fades to near-zero over 90 days, so the model gradually transitions from anchoring on today’s reading to trusting the formula alone:

correction(day) = Δ × e−0.02 × day

Day  0: 100% of correction
Day 35:  50% of correction
Day 90:   5% of correction
Monthly Rainfall Factors

Rain falling in different months has very different effects on groundwater recharge. Summer rain is largely lost to evapotranspiration and plant uptake; winter rain percolates into the chalk aquifer far more efficiently. Each month’s rainfall is therefore multiplied by a seasonal factor before entering the model.

These factors are loaded from the database each run (shown below are the current learned values, starting from the Excel model baseline):

Month Factor Recharge
Jan1.19High
Feb0.91Medium
Mar0.91Medium
Apr0.86Medium
May0.38Low
Jun0.38Low
Jul0.38Low
Aug0.38Low
Sep0.95Medium
Oct1.38High
Nov1.38High
Dec1.10High

Highest recharge months: Oct, Nov, Jan. Lowest recharge months: May, Jun, Jul, Aug. These factors are fixed at calibrated values derived from the Excel model. Automatic ML adjustment has been disabled as the GBM model handles seasonality internally, causing the adjustment to incorrectly push all factors toward 1.0.

Lag Weight Profile

Rain does not immediately reach the groundwater table — it must percolate through the unsaturated chalk above the aquifer. The lag weight profile describes how much influence rainfall from different periods in the past has on today’s groundwater level. The profile covers the past 366 days:

Days ago Weight Interpretation
0 – 19 0.75 Recent — partial effect, still percolating
20 – 39 1.00 Reaching water table
40 – 59 1.20 Peak influence
60 – 179 0.90 Sustained contribution
180 – 199 0.85 Fading influence
200 – 219 0.77 Diminishing
220 – 259 0.70–0.75 Background recharge
260 – 279 0.50 Minor residual
280 – 299 0.05 Negligible
300 – 365 0.00 No effect

The peak influence at 40–59 days ago reflects typical chalk percolation times in the upper Pang valley. The ML model can adjust individual weights by up to 2% per daily run, capped at 1.5× the initial value.

Dynamic Lag Shifting

When the aquifer is already full, rain reaches the water table faster because less unsaturated chalk needs to be saturated first. Conversely, when groundwater is very low, percolation takes longer. The model accounts for this by shifting the entire lag weight curve earlier or later depending on the current groundwater level.

Thresholds are based on historical quartiles from 20+ years of EA data (historical range: 3.3% – 96.6%):

GW Level Quartile Lag Shift Effect
< 26.6% Bottom 25% +40 days Much slower response
26.6 – 49.9% Lower mid +20 days Slower response
49.9 – 73.3% Upper mid 0 days Baseline (current)
> 73.3% Top 25% −20 days Faster response

At today’s level of 61.1%, the model is applying a baseline shift (normal response).

Dynamic shifting is only applied from day 30 of the forecast onwards. In the short term (days 1–29) all three scenarios use the same baseline weights to ensure they diverge smoothly and predictably based only on differing rainfall amounts.

Three rainfall scenarios are projected: average uses historical monthly means; +40% and −40% scale future rain up or down. All scenarios start identically at today’s actual reading.

6.8%
Mean Error (MAE)
20-day backtest
6.9%
RMSE
20-day backtest
-6.8%
Bias
Over-pred
0.9981
Validation R²
3,346 samples
61.1%
Today (Actual)
2026-05-21
94
Model Runs
18,489 prediction rows

Tomorrow’s Forecast

+40%
61.4%
Avg
61.4%
-40%
61.3%

Actual today: 61.1%

60-Day Forecast

+40%
59.2%
Avg
57.1%
-40%
54.9%

Blue=wet, Green=average, Orange=dry

Accuracy by Forecast Horizon

Days AheadNAvg Error %Bias %Max Error %
1490.450.450.85
2480.800.801.31
3471.141.141.87
5451.811.812.60
7432.482.483.38
10403.473.474.50
14364.794.795.94
21297.107.107.90
302012.1912.1913.54
45516.2616.2616.53

Backtest History Daily 20-day results

DateMAE %RMSE %Bias %Status
2026-05-216.826.92-6.82Significant bias detected
2026-05-206.596.70-6.59Significant bias detected
2026-05-196.356.47-6.35Significant bias detected
2026-05-186.116.25-6.11Significant bias detected
2026-05-175.886.03-5.88Significant bias detected
2026-05-165.655.82-5.65Significant bias detected
2026-05-155.435.61-5.43Significant bias detected
2026-05-145.225.41-5.22Significant bias detected
2026-05-134.995.21-4.99Significant bias detected
2026-05-124.765.00-4.76Significant bias detected
2026-05-114.504.77-4.50Significant bias detected
2026-05-104.244.53-4.24Significant bias detected
2026-05-093.994.29-3.99Significant bias detected
2026-05-083.744.06-3.74Significant bias detected
2026-05-073.483.81-3.48Significant bias detected
2026-05-063.223.55-3.22Significant bias detected
2026-05-052.983.30-2.98Significant bias detected
2026-05-042.733.04-2.73Significant bias detected
2026-05-032.492.80-2.49Significant bias detected
2026-05-022.262.58-2.26Significant bias detected
2026-05-012.052.39-2.03Significant bias detected
2026-04-301.852.21-1.83Within acceptable range
2026-04-291.662.03-1.62Within acceptable range
2026-04-281.501.86-1.41Within acceptable range
2026-04-271.371.69-1.20Within acceptable range
2026-04-261.231.54-1.02Within acceptable range
2026-04-251.101.38-0.84Within acceptable range
2026-04-240.981.21-0.66Within acceptable range
2026-04-230.881.06-0.50Within acceptable range
2026-04-220.820.96-0.33Within acceptable range

Monthly Averages Trend over time

MonthAvg MAE %Avg RMSE %Avg Bias %Days
2026-054.454.69-4.4521
2026-041.421.650.6030
2026-033.713.893.5031
2026-025.146.23-3.5812

Model Training Log Daily training metrics

DateTrain R²Val R²Tr RMSEVal RMSESamples
2026-05-21 12:151.00000.99810.0980.9383346
2026-05-20 12:151.00000.99720.0971.1463345
2026-05-19 12:151.00000.99710.0971.1583344
2026-05-18 12:151.00000.99710.0971.1583344
2026-05-17 12:151.00000.99750.0971.0733343
2026-05-16 12:151.00000.99760.0971.0513342
2026-05-15 12:151.00000.99710.0971.1643341
2026-05-14 12:151.00000.99720.0971.1473340
2026-05-13 12:151.00000.99720.0971.1483340
2026-05-12 12:151.00000.99770.0961.0303339
2026-05-11 12:151.00000.99780.0971.0113338
2026-05-10 12:151.00000.99730.0971.1293337
2026-05-09 12:151.00000.99750.0981.0883336
2026-05-08 12:151.00000.99750.0981.0893336
2026-05-07 12:151.00000.99780.0971.0093335
2026-05-06 12:151.00000.99780.0961.0233334
2026-05-05 12:151.00000.99720.0971.1403333
2026-05-04 12:151.00000.99680.0971.2233332
2026-05-03 12:151.00000.99680.0971.2233332
2026-05-02 12:151.00000.99770.0981.0433331
2026-05-01 12:151.00000.99760.0961.0693330
2026-04-30 12:151.00000.99760.0961.0593329
2026-04-29 12:151.00000.99770.0971.0373328
2026-04-28 12:151.00000.99770.0971.0383328
2026-04-27 12:151.00000.99790.0971.0053327
2026-04-26 12:151.00000.99790.0980.9863326
2026-04-25 12:151.00000.99780.0961.0183325
2026-04-24 12:151.00000.99730.0951.1363324
2026-04-23 12:151.00000.99730.0951.1363324
2026-04-22 12:151.00000.99770.0981.0393323

Historical Accuracy: Predictions Made 30 Days Ago Average scenario — comparing the 30-day "long range" forecast to what actually happened

Target DateActual %Predicted %Error %Days AheadMade On
2026-05-2161.1370.469.33282026-04-23
2026-05-2161.1370.859.72292026-04-22
2026-05-2161.1371.3310.20302026-04-21
2026-05-2161.1371.6010.48312026-04-20
2026-05-2161.1371.8310.70322026-04-19
2026-05-2061.5971.369.77282026-04-22
2026-05-2061.5971.8510.26292026-04-21
2026-05-2061.5972.1310.53302026-04-20
2026-05-2061.5972.3610.77312026-04-19
2026-05-2061.5972.6411.05322026-04-18
2026-05-1961.9972.0410.05282026-04-21
2026-05-1961.9972.3210.33292026-04-20
2026-05-1961.9972.5510.56302026-04-19
2026-05-1961.9972.8310.85312026-04-18
2026-05-1961.9976.1114.13322026-04-17
2026-05-1862.3472.4310.08282026-04-20
2026-05-1862.3472.6610.32292026-04-19
2026-05-1862.3472.9510.60302026-04-18
2026-05-1862.3476.1913.85312026-04-17
2026-05-1862.3476.2913.95322026-04-16
2026-05-1762.7572.649.89282026-04-19
2026-05-1762.7572.9310.18292026-04-18
2026-05-1762.7576.2913.54302026-04-17
2026-05-1762.7576.3913.64312026-04-16
2026-05-1762.7576.3813.62322026-04-15
2026-05-1663.1472.929.78282026-04-18
2026-05-1663.1473.2810.15292026-04-17
2026-05-1663.1476.4013.26302026-04-16
2026-05-1663.1476.3813.24312026-04-15
2026-05-1663.1476.8313.69322026-04-14
2026-05-1563.5473.279.74282026-04-17
2026-05-1563.5473.419.88292026-04-16
2026-05-1563.5476.5313.00302026-04-15
2026-05-1563.5476.9913.45312026-04-14
2026-05-1563.5477.1813.65322026-04-13
2026-05-1463.9373.459.52282026-04-16
2026-05-1463.9373.449.50292026-04-15
2026-05-1463.9377.2313.29302026-04-14
2026-05-1463.9377.4213.49312026-04-13
2026-05-1463.9377.6213.68322026-04-12
2026-05-1364.3073.569.26282026-04-15
2026-05-1364.3074.079.77292026-04-14
2026-05-1364.3077.3013.01302026-04-13
2026-05-1364.3077.5013.21312026-04-12
2026-05-1364.3077.7213.42322026-04-11
2026-05-1264.6374.159.53282026-04-14
2026-05-1264.6374.399.76292026-04-13
2026-05-1264.6377.4812.85302026-04-12
2026-05-1264.6377.7013.07312026-04-11
2026-05-1264.6377.6913.06322026-04-10
2026-05-1165.0374.719.67282026-04-13
2026-05-1165.0374.929.89292026-04-12
2026-05-1165.0377.4612.42302026-04-11
2026-05-1165.0377.4512.41312026-04-10
2026-05-1165.0377.7712.73322026-04-09
2026-05-1065.3875.109.72282026-04-12
2026-05-1065.3875.349.96292026-04-11
2026-05-1065.3877.5912.22302026-04-10
2026-05-1065.3877.9212.54312026-04-09
2026-05-1065.3878.1612.78322026-04-08

* This table filters for predictions where the horizon was approximately 30 days. It will begin populating once the model has been running with the new snapshot storage for at least 30 days.

Recent Predictions vs Actuals Average scenario — where actual data now exists

DateActual %Predicted %Error %Days AheadMade On
2026-05-2061.5978.9417.34492026-04-01 00:00:00
2026-05-2061.5978.6817.09482026-04-02 00:00:00
2026-05-2061.5978.4616.87472026-04-03 00:00:00
2026-05-2061.5978.3116.71462026-04-04 00:00:00
2026-05-2061.5978.1216.53452026-04-05 00:00:00
2026-05-2061.5978.0516.46442026-04-06 00:00:00
2026-05-2061.5977.9716.38432026-04-07 00:00:00
2026-05-2061.5977.7316.14422026-04-08 00:00:00
2026-05-2061.5977.4715.88412026-04-09 00:00:00
2026-05-2061.5977.1415.54402026-04-10 00:00:00
2026-05-2061.5977.0815.49392026-04-11 00:00:00
2026-05-2061.5976.8915.30382026-04-12 00:00:00
2026-05-2061.5976.7115.12372026-04-13 00:00:00
2026-05-2061.5976.5314.94362026-04-14 00:00:00
2026-05-2061.5976.1014.51352026-04-15 00:00:00
2026-05-2061.5976.1214.52342026-04-16 00:00:00
2026-05-2061.5976.0114.42332026-04-17 00:00:00
2026-05-2061.5972.6411.05322026-04-18 00:00:00
2026-05-2061.5972.3610.77312026-04-19 00:00:00
2026-05-2061.5972.1310.53302026-04-20 00:00:00
2026-05-2061.5971.8510.26292026-04-21 00:00:00
2026-05-2061.5971.369.77282026-04-22 00:00:00
2026-05-2061.5970.979.38272026-04-23 00:00:00
2026-05-2061.5970.538.94262026-04-24 00:00:00
2026-05-2061.5970.318.72252026-04-25 00:00:00
2026-05-2061.5970.028.42242026-04-26 00:00:00
2026-05-2061.5969.648.04232026-04-27 00:00:00
2026-05-2061.5969.277.68222026-04-28 00:00:00
2026-05-2061.5968.987.39212026-04-29 00:00:00
2026-05-2061.5968.637.04202026-04-30 00:00:00
2026-05-2061.5968.186.59192026-05-01 00:00:00
2026-05-2061.5967.786.19182026-05-02 00:00:00
2026-05-2061.5967.425.83172026-05-03 00:00:00
2026-05-2061.5967.005.41162026-05-04 00:00:00
2026-05-2061.5966.715.12152026-05-05 00:00:00
2026-05-2061.5966.264.66142026-05-06 00:00:00
2026-05-2061.5966.084.49132026-05-07 00:00:00
2026-05-2061.5965.904.31122026-05-08 00:00:00
2026-05-2061.5965.483.89112026-05-09 00:00:00
2026-05-2061.5965.143.55102026-05-10 00:00:00
2026-05-2061.5964.913.3292026-05-11 00:00:00
2026-05-2061.5964.763.1782026-05-12 00:00:00
2026-05-2061.5964.432.8472026-05-13 00:00:00
2026-05-2061.5964.172.5862026-05-14 00:00:00
2026-05-2061.5963.772.1852026-05-15 00:00:00
2026-05-2061.5963.311.7142026-05-16 00:00:00
2026-05-2061.5962.841.2532026-05-17 00:00:00
2026-05-2061.5962.320.7322026-05-18 00:00:00
2026-05-2061.5961.800.2112026-05-19 00:00:00
2026-05-2061.5961.590.0002026-05-20 00:00:00
2026-05-1961.9979.0117.03482026-04-01 00:00:00
2026-05-1961.9978.7616.77472026-04-02 00:00:00
2026-05-1961.9978.5316.55462026-04-03 00:00:00
2026-05-1961.9978.3816.39452026-04-04 00:00:00
2026-05-1961.9978.1916.20442026-04-05 00:00:00
2026-05-1961.9978.1216.13432026-04-06 00:00:00
2026-05-1961.9978.0516.06422026-04-07 00:00:00
2026-05-1961.9977.8115.82412026-04-08 00:00:00
2026-05-1961.9977.5415.55402026-04-09 00:00:00
2026-05-1961.9977.2015.22392026-04-10 00:00:00

Forward Predictions — All Scenarios Made on 2026-05-21 00:00

DateAverage %+40% Rain %-40% Rain %Range %
2026-05-2161.1361.1361.130.00
2026-05-2261.3761.4361.310.12
2026-05-2361.5361.6261.440.18
2026-05-2461.7261.8561.600.24
2026-05-2561.9662.1161.810.30
2026-05-2662.1362.3161.950.36
2026-05-2762.2662.4762.050.42
2026-05-2862.0562.2961.800.48
2026-05-2962.0962.3761.820.55
2026-05-3062.1562.4561.840.61
2026-05-3162.2162.5561.880.67
2026-06-0162.1562.5261.790.72
2026-06-0262.0362.4261.640.78
2026-06-0361.8762.2961.450.84
2026-06-0461.6862.1361.230.90
2026-06-0561.6762.1561.190.96
2026-06-0661.6162.1261.101.01
2026-06-0761.5962.1261.051.07
2026-06-0861.4562.0260.891.13
2026-06-0961.3361.9260.731.19
2026-06-1060.0660.7059.431.27
2026-06-1159.9360.6059.261.34
2026-06-1260.1760.8859.451.42
2026-06-1360.3261.0759.571.50
2026-06-1460.3761.1559.581.58
2026-06-1560.4661.2959.631.66
2026-06-1660.3461.2059.471.73
2026-06-1759.6760.5758.761.81
2026-06-1859.4660.4058.511.89
2026-06-1959.2760.2558.281.97
2026-06-2058.9259.9557.902.05
2026-06-2158.7459.8157.682.12
2026-06-2258.8359.9357.732.20
2026-06-2358.9260.0657.782.28
2026-06-2458.9660.1457.782.36
2026-06-2559.0560.2657.832.43
2026-06-2659.1660.4257.912.51
2026-06-2759.0560.3457.762.59
2026-06-2859.1960.5257.862.67
2026-06-2959.2060.5757.832.74
2026-06-3059.1860.6057.772.84
2026-07-0159.2560.7157.792.92
2026-07-0259.3760.8857.873.01
2026-07-0359.4861.0357.933.09
2026-07-0459.5261.1157.933.18
2026-07-0559.4961.1257.863.27
2026-07-0658.8760.5557.193.35
2026-07-0758.0559.7756.333.44
2026-07-0858.1059.8756.343.53
2026-07-0958.0259.8256.213.61
2026-07-1057.0758.9255.223.70
2026-07-1157.0458.9455.153.79
2026-07-1256.9058.8454.973.87
2026-07-1357.0158.9955.043.96
2026-07-1457.0159.0354.994.04
2026-07-1557.0759.1355.014.13
2026-07-1657.1359.2355.024.21
2026-07-1757.1759.3255.024.30
2026-07-1857.0559.2554.864.38
2026-07-1956.6058.8454.374.47
2026-07-2056.4758.7354.204.53
2026-07-2156.4658.7654.174.59
2026-07-2256.5658.8854.234.65
2026-07-2356.6158.9754.264.71
2026-07-2456.6459.0254.254.77
2026-07-2556.6859.1054.274.83
2026-07-2655.4557.8953.004.89
2026-07-2753.5255.9951.044.95
2026-07-2853.4755.9850.975.00
2026-07-2953.2955.8250.765.06
2026-07-3053.0455.6050.485.12
2026-07-3152.7155.3050.115.18
2026-08-0151.9154.5449.285.26
2026-08-0251.8654.5340.0914.43
2026-08-0351.7254.4240.0814.34
2026-08-0451.5954.3239.9014.43
2026-08-0551.4254.1939.7414.45
2026-08-0651.1954.0039.0114.99
2026-08-0750.8553.6939.0014.70
2026-08-0849.6552.5338.9113.62
2026-08-0941.3752.1238.3613.76
2026-08-1041.2752.0638.2213.84
2026-08-1141.3152.1438.2213.92
2026-08-1241.1652.1238.0314.09
2026-08-1340.7552.0537.5814.47
2026-08-1440.6252.0637.4114.64
2026-08-1539.8551.6136.6115.00
2026-08-1639.2151.2235.9215.29
2026-08-1739.2351.3035.9115.39
2026-08-1838.8351.1035.4715.63
2026-08-1938.7351.1135.3315.79
2026-08-2038.6650.5135.2215.29
2026-08-2138.2748.6534.7913.86
2026-08-2237.9841.5034.467.04
2026-08-2337.9241.4834.367.12
2026-08-2437.6541.2534.057.20
2026-08-2537.5241.1733.887.28
2026-08-2636.7840.4633.107.36
2026-08-2736.8740.5933.147.45
2026-08-2836.9040.6733.147.53
2026-08-2936.7040.5132.907.61
2026-08-3036.6540.5032.817.69
2026-08-3136.7240.6132.847.77
2026-09-0136.5540.5532.558.00
2026-09-0235.9940.1131.878.23
2026-09-0336.1040.3331.878.46
2026-09-0434.5438.8830.198.69
2026-09-0534.3938.8529.938.92
2026-09-0634.5539.1329.989.15
2026-09-0734.6139.3029.929.38
2026-09-0834.7239.5329.919.62
2026-09-0934.9039.8329.989.85
2026-09-1035.0040.0429.9710.07
2026-09-1135.0940.2429.9410.30
2026-09-1234.8740.1329.6110.52
2026-09-1334.9940.3629.6210.75
2026-09-1434.9840.4629.4910.97
2026-09-1535.1340.7329.5311.20
2026-09-1635.3841.0929.6711.43
2026-09-1735.3541.1829.5211.65

Cron Log Last modified: 2026-05-21 11:15:24

Using learned parameters: intercept=-8.0000, slope=0.147000
Today's actual: 61.129, formula predicts: 69.708, adjustment: -8.579
Day 0: GW=61.1%, lag_shift=+0, weighted_sum=528.6, adj=-8.58, pred=61.129
Day 10: GW=62.1%, lag_shift=+0, weighted_sum=525.4, adj=-7.02, pred=62.213
Day 20: GW=61.3%, lag_shift=+0, weighted_sum=502.1, adj=-5.75, pred=60.064
Day 30: GW=59.3%, lag_shift=+0, weighted_sum=487.3, adj=-4.71, pred=58.922
Day 40: GW=59.2%, lag_shift=+0, weighted_sum=483.3, adj=-3.85, pred=59.183
Day 50: GW=58.0%, lag_shift=+0, weighted_sum=464.1, adj=-3.16, pred=57.072
Day 60: GW=56.6%, lag_shift=+0, weighted_sum=456.1, adj=-2.58, pred=56.468
Day 70: GW=53.3%, lag_shift=+0, weighted_sum=429.6, adj=-2.12, pred=53.038
Day 80: GW=49.6%, lag_shift=+20, weighted_sum=347.7, adj=-1.73, pred=41.373
Day 90: GW=38.8%, lag_shift=+20, weighted_sum=327.5, adj=-1.42, pred=38.726
Day 100: GW=36.9%, lag_shift=+20, weighted_sum=312.0, adj=-1.16, pred=36.702
Day 110: GW=34.6%, lag_shift=+20, weighted_sum=297.1, adj=-0.95, pred=34.721
Predicted range: 34.389 to 62.261
Generating predictions for scenario: +40%
Predicting calc_gw from 2026-05-21 00:00:00 (level: 61.129)
Using learned parameters: intercept=-8.0000, slope=0.147000
Today's actual: 61.129, formula predicts: 69.708, adjustment: -8.579
Day 0: GW=61.1%, lag_shift=+0, weighted_sum=528.6, adj=-8.58, pred=61.129
Day 10: GW=62.4%, lag_shift=+0, weighted_sum=527.7, adj=-7.02, pred=62.546
Day 20: GW=61.9%, lag_shift=+0, weighted_sum=506.4, adj=-5.75, pred=60.697
Day 30: GW=60.3%, lag_shift=+0, weighted_sum=494.2, adj=-4.71, pred=59.946
Day 40: GW=60.6%, lag_shift=+0, weighted_sum=492.9, adj=-3.85, pred=60.601
Day 50: GW=59.8%, lag_shift=+0, weighted_sum=476.7, adj=-3.16, pred=58.922
Day 60: GW=58.8%, lag_shift=+0, weighted_sum=471.5, adj=-2.58, pred=58.734
Day 70: GW=55.8%, lag_shift=+0, weighted_sum=447.0, adj=-2.12, pred=55.600
Day 80: GW=52.5%, lag_shift=+0, weighted_sum=420.8, adj=-1.73, pred=52.123
Day 90: GW=51.1%, lag_shift=+0, weighted_sum=411.8, adj=-1.42, pred=51.114
Day 100: GW=40.7%, lag_shift=+20, weighted_sum=337.9, adj=-1.16, pred=40.506
Day 110: GW=39.3%, lag_shift=+20, weighted_sum=329.8, adj=-0.95, pred=39.529
Predicted range: 38.850 to 62.546
Generating predictions for scenario: -40%
Predicting calc_gw from 2026-05-21 00:00:00 (level: 61.129)
Using learned parameters: intercept=-8.0000, slope=0.147000
Today's actual: 61.129, formula predicts: 69.708, adjustment: -8.579
Day 0: GW=61.1%, lag_shift=+0, weighted_sum=528.6, adj=-8.58, pred=61.129
Day 10: GW=61.8%, lag_shift=+0, weighted_sum=523.2, adj=-7.02, pred=61.880
Day 20: GW=60.7%, lag_shift=+0, weighted_sum=497.8, adj=-5.75, pred=59.431
Day 30: GW=58.3%, lag_shift=+0, weighted_sum=480.3, adj=-4.71, pred=57.899
Day 40: GW=57.8%, lag_shift=+0, weighted_sum=473.6, adj=-3.85, pred=57.766
Day 50: GW=56.2%, lag_shift=+0, weighted_sum=451.6, adj=-3.16, pred=55.222
Day 60: GW=54.4%, lag_shift=+0, weighted_sum=440.7, adj=-2.58, pred=54.201
Day 70: GW=50.8%, lag_shift=+0, weighted_sum=412.2, adj=-2.12, pred=50.477
Day 80: GW=38.9%, lag_shift=+20, weighted_sum=327.2, adj=-1.73, pred=38.362
Day 90: GW=35.5%, lag_shift=+20, weighted_sum=304.4, adj=-1.42, pred=35.326
Day 100: GW=33.1%, lag_shift=+20, weighted_sum=286.1, adj=-1.16, pred=32.898
Day 110: GW=29.9%, lag_shift=+20, weighted_sum=264.4, adj=-0.95, pred=29.913
Predicted range: 29.489 to 62.049
✓ Saved calc_gw predictions to database
============================================================
SUCCESS: Daily update completed
============================================================
============================================================
PREDICTION SUMMARY
============================================================
CALC_GW:
average: 61.129 (day 1) → 35.350 (day 60)
+40%: 61.129 (day 1) → 41.176 (day 60)
-40%: 61.129 (day 1) → 29.524 (day 60)