Brajmovech commited on
Commit
fac0b31
·
1 Parent(s): ecb29ff

Improve Almanac cross-year weekly data

Browse files
app.py CHANGED
@@ -6,7 +6,7 @@ import json
6
  import logging
7
  import time
8
  from collections import defaultdict
9
- from datetime import datetime, timedelta, timezone
10
  from pathlib import Path
11
  import numpy as np
12
  import pandas as pd
@@ -159,6 +159,114 @@ def _almanac_week_range(start_value: str):
159
  return week_start.isoformat(), week_end.isoformat()
160
 
161
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
162
  def _almanac_table_rows(payload, table_name):
163
  table = payload.get(table_name, {})
164
  if isinstance(table, dict):
@@ -236,6 +344,7 @@ def _normalize_almanac_dump(payload):
236
  continue
237
  daily[date_key] = {
238
  "date": date_key,
 
239
  "day": str(row.get("day_of_week", "")).strip().upper()[:3],
240
  "d": _almanac_float(row.get("dow_prob"), 0.0),
241
  "s": _almanac_float(row.get("sp500_prob"), 0.0),
@@ -711,7 +820,7 @@ def almanac_seasonal():
711
 
712
  @app.route('/api/almanac/week')
713
  def almanac_week():
714
- """Return the Monday-to-Friday trading slice for the requested week."""
715
  data = _load_almanac_data()
716
  if "error" in data:
717
  return jsonify(data), 404
@@ -730,18 +839,30 @@ def almanac_week():
730
  except ValueError:
731
  return jsonify({"error": "Invalid start date. Expected YYYY-MM-DD"}), 400
732
 
733
- week_dates = [date_key for date_key in all_dates if week_start <= date_key <= week_end]
734
- if not week_dates:
735
- return jsonify({"error": f"No trading days found for week starting {week_start}"}), 404
 
 
 
 
736
 
737
  week_data = {date_key: daily[date_key] for date_key in week_dates}
738
- month_key = week_dates[0][:7] if week_dates else start[:7]
 
 
 
 
 
 
 
739
  month_info = data.get("months", {}).get(month_key, {})
740
 
741
  return jsonify(
742
  {
743
  "week_start": week_start,
744
  "week_end": week_end,
 
745
  "daily": week_data,
746
  "month_overview": month_info,
747
  }
@@ -810,12 +931,14 @@ def almanac_accuracy_week():
810
  weekly = data.get("weekly") or {}
811
  week_dates = sorted(date_key for date_key in daily.keys() if week_start <= date_key <= week_end)
812
 
813
- weekly_entry = None
814
- for date_key in week_dates:
815
- week_key = datetime.strptime(date_key, "%Y-%m-%d").strftime("%Y-W%W")
816
- weekly_entry = weekly.get(week_key)
817
- if weekly_entry is not None:
818
- break
 
 
819
 
820
  if weekly_entry is None:
821
  return jsonify({"error": f"No weekly accuracy found for week starting {week_start}"}), 404
 
6
  import logging
7
  import time
8
  from collections import defaultdict
9
+ from datetime import date, datetime, timedelta, timezone
10
  from pathlib import Path
11
  import numpy as np
12
  import pandas as pd
 
159
  return week_start.isoformat(), week_end.isoformat()
160
 
161
 
162
+ def _nth_weekday_of_month(year: int, month: int, weekday: int, occurrence: int) -> date:
163
+ first_day = date(year, month, 1)
164
+ offset = (weekday - first_day.weekday()) % 7
165
+ return first_day + timedelta(days=offset + ((occurrence - 1) * 7))
166
+
167
+
168
+ def _last_weekday_of_month(year: int, month: int, weekday: int) -> date:
169
+ if month == 12:
170
+ next_month = date(year + 1, 1, 1)
171
+ else:
172
+ next_month = date(year, month + 1, 1)
173
+ last_day = next_month - timedelta(days=1)
174
+ offset = (last_day.weekday() - weekday) % 7
175
+ return last_day - timedelta(days=offset)
176
+
177
+
178
+ def _easter_sunday(year: int) -> date:
179
+ """Return Gregorian Easter Sunday for the requested year."""
180
+ a = year % 19
181
+ b = year // 100
182
+ c = year % 100
183
+ d = b // 4
184
+ e = b % 4
185
+ f = (b + 8) // 25
186
+ g = (b - f + 1) // 3
187
+ h = (19 * a + b - d - g + 15) % 30
188
+ i = c // 4
189
+ k = c % 4
190
+ l = (32 + 2 * e + 2 * i - h - k) % 7
191
+ m = (a + 11 * h + 22 * l) // 451
192
+ month = (h + l - 7 * m + 114) // 31
193
+ day = ((h + l - 7 * m + 114) % 31) + 1
194
+ return date(year, month, day)
195
+
196
+
197
+ def _observed_fixed_holiday(year: int, month: int, day: int) -> date:
198
+ holiday = date(year, month, day)
199
+ if holiday.weekday() == 5:
200
+ return holiday - timedelta(days=1)
201
+ if holiday.weekday() == 6:
202
+ return holiday + timedelta(days=1)
203
+ return holiday
204
+
205
+
206
+ def _market_holiday_map(year: int) -> dict[date, str]:
207
+ easter = _easter_sunday(year)
208
+ return {
209
+ _observed_fixed_holiday(year, 1, 1): "New Year's Day market holiday",
210
+ _nth_weekday_of_month(year, 1, 0, 3): "Martin Luther King Jr. Day market holiday",
211
+ _nth_weekday_of_month(year, 2, 0, 3): "Presidents' Day market holiday",
212
+ easter - timedelta(days=2): "Good Friday market holiday",
213
+ _last_weekday_of_month(year, 5, 0): "Memorial Day market holiday",
214
+ _observed_fixed_holiday(year, 6, 19): "Juneteenth market holiday",
215
+ _observed_fixed_holiday(year, 7, 4): "Independence Day market holiday",
216
+ _nth_weekday_of_month(year, 9, 0, 1): "Labor Day market holiday",
217
+ _nth_weekday_of_month(year, 11, 3, 4): "Thanksgiving Day market holiday",
218
+ _observed_fixed_holiday(year, 12, 25): "Christmas Day market holiday",
219
+ }
220
+
221
+
222
+ def _market_closure_reason(date_key: str) -> str | None:
223
+ target = datetime.strptime(date_key, "%Y-%m-%d").date()
224
+ return _market_holiday_map(target.year).get(target)
225
+
226
+
227
+ def _almanac_weekday_entry(date_key: str, daily: dict[str, dict], data_year: int | None):
228
+ entry = daily.get(date_key)
229
+ if entry:
230
+ return {
231
+ **entry,
232
+ "date": date_key,
233
+ "day": str(entry.get("day", "")).strip().upper()[:3],
234
+ "market_open": True,
235
+ "almanac_available": True,
236
+ "status": "open",
237
+ "status_reason": "",
238
+ }
239
+
240
+ closure_reason = _market_closure_reason(date_key)
241
+ parsed = datetime.strptime(date_key, "%Y-%m-%d")
242
+ if closure_reason:
243
+ status = "closed"
244
+ status_reason = closure_reason
245
+ market_open = False
246
+ else:
247
+ status = "no_data"
248
+ market_open = True
249
+ year_note = f" outside the {data_year} dataset" if data_year else ""
250
+ status_reason = f"Market open, but no Almanac entry is available for this date{year_note}."
251
+
252
+ return {
253
+ "date": date_key,
254
+ "day": parsed.strftime("%a").upper()[:3],
255
+ "d": None,
256
+ "s": None,
257
+ "n": None,
258
+ "d_dir": "",
259
+ "s_dir": "",
260
+ "n_dir": "",
261
+ "icon": None,
262
+ "notes": "",
263
+ "market_open": market_open,
264
+ "almanac_available": False,
265
+ "status": status,
266
+ "status_reason": status_reason,
267
+ }
268
+
269
+
270
  def _almanac_table_rows(payload, table_name):
271
  table = payload.get(table_name, {})
272
  if isinstance(table, dict):
 
344
  continue
345
  daily[date_key] = {
346
  "date": date_key,
347
+ "source_month": str(row.get("source_month", "")).strip(),
348
  "day": str(row.get("day_of_week", "")).strip().upper()[:3],
349
  "d": _almanac_float(row.get("dow_prob"), 0.0),
350
  "s": _almanac_float(row.get("sp500_prob"), 0.0),
 
820
 
821
  @app.route('/api/almanac/week')
822
  def almanac_week():
823
+ """Return the Monday-to-Friday calendar slice for the requested week."""
824
  data = _load_almanac_data()
825
  if "error" in data:
826
  return jsonify(data), 404
 
839
  except ValueError:
840
  return jsonify({"error": "Invalid start date. Expected YYYY-MM-DD"}), 400
841
 
842
+ calendar_dates = [
843
+ (datetime.strptime(week_start, "%Y-%m-%d") + timedelta(days=offset)).strftime("%Y-%m-%d")
844
+ for offset in range(5)
845
+ ]
846
+ week_dates = [date_key for date_key in calendar_dates if date_key in daily]
847
+ if not week_dates and not any(_market_closure_reason(date_key) for date_key in calendar_dates):
848
+ return jsonify({"error": f"No weekday entries found for week starting {week_start}"}), 404
849
 
850
  week_data = {date_key: daily[date_key] for date_key in week_dates}
851
+ data_year = data.get("meta", {}).get("year") if isinstance(data.get("meta"), dict) else None
852
+ week_entries = [_almanac_weekday_entry(date_key, daily, data_year) for date_key in calendar_dates]
853
+ first_available = next((entry for entry in week_entries if entry.get("almanac_available")), None)
854
+ month_key = (
855
+ str(first_available.get("source_month", "")).strip()
856
+ if first_available
857
+ else ""
858
+ ) or (str(first_available.get("date", week_start))[:7] if first_available else week_start[:7])
859
  month_info = data.get("months", {}).get(month_key, {})
860
 
861
  return jsonify(
862
  {
863
  "week_start": week_start,
864
  "week_end": week_end,
865
+ "weekdays": week_entries,
866
  "daily": week_data,
867
  "month_overview": month_info,
868
  }
 
931
  weekly = data.get("weekly") or {}
932
  week_dates = sorted(date_key for date_key in daily.keys() if week_start <= date_key <= week_end)
933
 
934
+ weekly_entry = weekly.get(week_start)
935
+
936
+ if weekly_entry is None:
937
+ for date_key in week_dates:
938
+ legacy_week_key = datetime.strptime(date_key, "%Y-%m-%d").strftime("%Y-W%W")
939
+ weekly_entry = weekly.get(legacy_week_key)
940
+ if weekly_entry is not None:
941
+ break
942
 
943
  if weekly_entry is None:
944
  return jsonify({"error": f"No weekly accuracy found for week starting {week_start}"}), 404
data/almanac_2026/accuracy_results.json CHANGED
@@ -1,14 +1,98 @@
1
  {
2
  "meta": {
3
- "last_updated": "2026-04-05T07:26:51.578106Z",
4
- "total_days_scored": 63,
5
  "data_range": {
6
- "from": "2026-01-02",
7
  "to": "2026-04-02"
8
  },
9
  "source": "Historic CSV backtest via scripts/seed_accuracy.py"
10
  },
11
  "daily": {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  "2026-01-02": {
13
  "actual": {
14
  "dji": 48382.39,
@@ -2657,30 +2741,32 @@
2657
  }
2658
  },
2659
  "weekly": {
2660
- "2026-W00": {
2661
- "hits": 2,
2662
- "total_calls": 3,
2663
- "accuracy": 66.7,
2664
  "dates": [
 
 
2665
  "2026-01-02"
2666
  ],
2667
  "dow": {
2668
- "hits": 1,
2669
- "total": 1,
2670
  "pct": 100.0
2671
  },
2672
  "sp500": {
2673
- "hits": 1,
2674
- "total": 1,
2675
  "pct": 100.0
2676
  },
2677
  "nasdaq": {
2678
- "hits": 0,
2679
- "total": 1,
2680
- "pct": 0.0
2681
  }
2682
  },
2683
- "2026-W01": {
2684
  "hits": 7,
2685
  "total_calls": 15,
2686
  "accuracy": 46.7,
@@ -2707,7 +2793,7 @@
2707
  "pct": 40.0
2708
  }
2709
  },
2710
- "2026-W02": {
2711
  "hits": 5,
2712
  "total_calls": 15,
2713
  "accuracy": 33.3,
@@ -2734,7 +2820,7 @@
2734
  "pct": 40.0
2735
  }
2736
  },
2737
- "2026-W03": {
2738
  "hits": 10,
2739
  "total_calls": 12,
2740
  "accuracy": 83.3,
@@ -2760,7 +2846,7 @@
2760
  "pct": 75.0
2761
  }
2762
  },
2763
- "2026-W04": {
2764
  "hits": 11,
2765
  "total_calls": 15,
2766
  "accuracy": 73.3,
@@ -2787,7 +2873,7 @@
2787
  "pct": 80.0
2788
  }
2789
  },
2790
- "2026-W05": {
2791
  "hits": 8,
2792
  "total_calls": 15,
2793
  "accuracy": 53.3,
@@ -2814,7 +2900,7 @@
2814
  "pct": 60.0
2815
  }
2816
  },
2817
- "2026-W06": {
2818
  "hits": 4,
2819
  "total_calls": 15,
2820
  "accuracy": 26.7,
@@ -2841,7 +2927,7 @@
2841
  "pct": 20.0
2842
  }
2843
  },
2844
- "2026-W07": {
2845
  "hits": 8,
2846
  "total_calls": 12,
2847
  "accuracy": 66.7,
@@ -2867,7 +2953,7 @@
2867
  "pct": 50.0
2868
  }
2869
  },
2870
- "2026-W08": {
2871
  "hits": 11,
2872
  "total_calls": 15,
2873
  "accuracy": 73.3,
@@ -2894,7 +2980,7 @@
2894
  "pct": 60.0
2895
  }
2896
  },
2897
- "2026-W09": {
2898
  "hits": 12,
2899
  "total_calls": 15,
2900
  "accuracy": 80.0,
@@ -2921,7 +3007,7 @@
2921
  "pct": 80.0
2922
  }
2923
  },
2924
- "2026-W10": {
2925
  "hits": 4,
2926
  "total_calls": 15,
2927
  "accuracy": 26.7,
@@ -2948,7 +3034,7 @@
2948
  "pct": 40.0
2949
  }
2950
  },
2951
- "2026-W11": {
2952
  "hits": 4,
2953
  "total_calls": 15,
2954
  "accuracy": 26.7,
@@ -2975,7 +3061,7 @@
2975
  "pct": 20.0
2976
  }
2977
  },
2978
- "2026-W12": {
2979
  "hits": 11,
2980
  "total_calls": 15,
2981
  "accuracy": 73.3,
@@ -3002,7 +3088,7 @@
3002
  "pct": 60.0
3003
  }
3004
  },
3005
- "2026-W13": {
3006
  "hits": 7,
3007
  "total_calls": 12,
3008
  "accuracy": 58.3,
@@ -3030,6 +3116,27 @@
3030
  }
3031
  },
3032
  "monthly": {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3033
  "2026-01": {
3034
  "hits": 35,
3035
  "total_calls": 60,
 
1
  {
2
  "meta": {
3
+ "last_updated": "2026-04-05T10:31:45.482959Z",
4
+ "total_days_scored": 65,
5
  "data_range": {
6
+ "from": "2025-12-30",
7
  "to": "2026-04-02"
8
  },
9
  "source": "Historic CSV backtest via scripts/seed_accuracy.py"
10
  },
11
  "daily": {
12
+ "2025-12-30": {
13
+ "actual": {
14
+ "dji": 48367.06,
15
+ "sp500": 6896.24,
16
+ "nasdaq": 23419.08
17
+ },
18
+ "prev_close": {
19
+ "dji": 48461.93,
20
+ "sp500": 6905.74,
21
+ "nasdaq": 23474.35
22
+ },
23
+ "pct_change": {
24
+ "dji": -0.001958,
25
+ "sp500": -0.001376,
26
+ "nasdaq": -0.002354
27
+ },
28
+ "almanac_scores": {
29
+ "d": 42.9,
30
+ "s": 42.9,
31
+ "n": 38.1
32
+ },
33
+ "results": {
34
+ "d": {
35
+ "verdict": "HIT",
36
+ "predicted": "DOWN",
37
+ "actual": "DOWN"
38
+ },
39
+ "s": {
40
+ "verdict": "HIT",
41
+ "predicted": "DOWN",
42
+ "actual": "DOWN"
43
+ },
44
+ "n": {
45
+ "verdict": "HIT",
46
+ "predicted": "DOWN",
47
+ "actual": "DOWN"
48
+ }
49
+ },
50
+ "hits": 3,
51
+ "total_calls": 3,
52
+ "context": ""
53
+ },
54
+ "2025-12-31": {
55
+ "actual": {
56
+ "dji": 48063.29,
57
+ "sp500": 6845.5,
58
+ "nasdaq": 23241.99
59
+ },
60
+ "prev_close": {
61
+ "dji": 48367.06,
62
+ "sp500": 6896.24,
63
+ "nasdaq": 23419.08
64
+ },
65
+ "pct_change": {
66
+ "dji": -0.006281,
67
+ "sp500": -0.007358,
68
+ "nasdaq": -0.007562
69
+ },
70
+ "almanac_scores": {
71
+ "d": 33.3,
72
+ "s": 28.6,
73
+ "n": 28.6
74
+ },
75
+ "results": {
76
+ "d": {
77
+ "verdict": "HIT",
78
+ "predicted": "DOWN",
79
+ "actual": "DOWN"
80
+ },
81
+ "s": {
82
+ "verdict": "HIT",
83
+ "predicted": "DOWN",
84
+ "actual": "DOWN"
85
+ },
86
+ "n": {
87
+ "verdict": "HIT",
88
+ "predicted": "DOWN",
89
+ "actual": "DOWN"
90
+ }
91
+ },
92
+ "hits": 3,
93
+ "total_calls": 3,
94
+ "context": "Last Trading Day of the Year, NASDAQ Down 19 of last 25"
95
+ },
96
  "2026-01-02": {
97
  "actual": {
98
  "dji": 48382.39,
 
2741
  }
2742
  },
2743
  "weekly": {
2744
+ "2025-12-29": {
2745
+ "hits": 8,
2746
+ "total_calls": 9,
2747
+ "accuracy": 88.9,
2748
  "dates": [
2749
+ "2025-12-30",
2750
+ "2025-12-31",
2751
  "2026-01-02"
2752
  ],
2753
  "dow": {
2754
+ "hits": 3,
2755
+ "total": 3,
2756
  "pct": 100.0
2757
  },
2758
  "sp500": {
2759
+ "hits": 3,
2760
+ "total": 3,
2761
  "pct": 100.0
2762
  },
2763
  "nasdaq": {
2764
+ "hits": 2,
2765
+ "total": 3,
2766
+ "pct": 66.7
2767
  }
2768
  },
2769
+ "2026-01-05": {
2770
  "hits": 7,
2771
  "total_calls": 15,
2772
  "accuracy": 46.7,
 
2793
  "pct": 40.0
2794
  }
2795
  },
2796
+ "2026-01-12": {
2797
  "hits": 5,
2798
  "total_calls": 15,
2799
  "accuracy": 33.3,
 
2820
  "pct": 40.0
2821
  }
2822
  },
2823
+ "2026-01-19": {
2824
  "hits": 10,
2825
  "total_calls": 12,
2826
  "accuracy": 83.3,
 
2846
  "pct": 75.0
2847
  }
2848
  },
2849
+ "2026-01-26": {
2850
  "hits": 11,
2851
  "total_calls": 15,
2852
  "accuracy": 73.3,
 
2873
  "pct": 80.0
2874
  }
2875
  },
2876
+ "2026-02-02": {
2877
  "hits": 8,
2878
  "total_calls": 15,
2879
  "accuracy": 53.3,
 
2900
  "pct": 60.0
2901
  }
2902
  },
2903
+ "2026-02-09": {
2904
  "hits": 4,
2905
  "total_calls": 15,
2906
  "accuracy": 26.7,
 
2927
  "pct": 20.0
2928
  }
2929
  },
2930
+ "2026-02-16": {
2931
  "hits": 8,
2932
  "total_calls": 12,
2933
  "accuracy": 66.7,
 
2953
  "pct": 50.0
2954
  }
2955
  },
2956
+ "2026-02-23": {
2957
  "hits": 11,
2958
  "total_calls": 15,
2959
  "accuracy": 73.3,
 
2980
  "pct": 60.0
2981
  }
2982
  },
2983
+ "2026-03-02": {
2984
  "hits": 12,
2985
  "total_calls": 15,
2986
  "accuracy": 80.0,
 
3007
  "pct": 80.0
3008
  }
3009
  },
3010
+ "2026-03-09": {
3011
  "hits": 4,
3012
  "total_calls": 15,
3013
  "accuracy": 26.7,
 
3034
  "pct": 40.0
3035
  }
3036
  },
3037
+ "2026-03-16": {
3038
  "hits": 4,
3039
  "total_calls": 15,
3040
  "accuracy": 26.7,
 
3061
  "pct": 20.0
3062
  }
3063
  },
3064
+ "2026-03-23": {
3065
  "hits": 11,
3066
  "total_calls": 15,
3067
  "accuracy": 73.3,
 
3088
  "pct": 60.0
3089
  }
3090
  },
3091
+ "2026-03-30": {
3092
  "hits": 7,
3093
  "total_calls": 12,
3094
  "accuracy": 58.3,
 
3116
  }
3117
  },
3118
  "monthly": {
3119
+ "2025-12": {
3120
+ "hits": 6,
3121
+ "total_calls": 6,
3122
+ "accuracy": 100.0,
3123
+ "dow": {
3124
+ "hits": 2,
3125
+ "total": 2,
3126
+ "pct": 100.0
3127
+ },
3128
+ "sp500": {
3129
+ "hits": 2,
3130
+ "total": 2,
3131
+ "pct": 100.0
3132
+ },
3133
+ "nasdaq": {
3134
+ "hits": 2,
3135
+ "total": 2,
3136
+ "pct": 100.0
3137
+ },
3138
+ "trading_days": 2
3139
+ },
3140
  "2026-01": {
3141
  "hits": 35,
3142
  "total_calls": 60,
data/almanac_2026/almanac_2026.json CHANGED
@@ -2,7 +2,7 @@
2
  "meta": {
3
  "source": "Stock Trader's Almanac 2026 (Wiley)",
4
  "year": 2026,
5
- "generated_at": "2026-04-04T14:53:52.484929Z"
6
  },
7
  "months": {
8
  "2026-01": {
@@ -343,9 +343,49 @@
343
  }
344
  },
345
  "daily": {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
346
  "2026-01-02": {
347
  "date": "2026-01-02",
348
  "day": "FRI",
 
349
  "d": 66.7,
350
  "s": 52.4,
351
  "n": 61.9,
@@ -358,6 +398,7 @@
358
  "2026-01-05": {
359
  "date": "2026-01-05",
360
  "day": "MON",
 
361
  "d": 61.9,
362
  "s": 47.6,
363
  "n": 38.1,
@@ -370,6 +411,7 @@
370
  "2026-01-06": {
371
  "date": "2026-01-06",
372
  "day": "TUE",
 
373
  "d": 47.6,
374
  "s": 52.4,
375
  "n": 47.6,
@@ -382,6 +424,7 @@
382
  "2026-01-07": {
383
  "date": "2026-01-07",
384
  "day": "WED",
 
385
  "d": 61.9,
386
  "s": 66.7,
387
  "n": 61.9,
@@ -394,6 +437,7 @@
394
  "2026-01-08": {
395
  "date": "2026-01-08",
396
  "day": "THU",
 
397
  "d": 42.9,
398
  "s": 52.4,
399
  "n": 71.4,
@@ -406,6 +450,7 @@
406
  "2026-01-09": {
407
  "date": "2026-01-09",
408
  "day": "FRI",
 
409
  "d": 52.4,
410
  "s": 57.1,
411
  "n": 66.7,
@@ -418,6 +463,7 @@
418
  "2026-01-12": {
419
  "date": "2026-01-12",
420
  "day": "MON",
 
421
  "d": 61.9,
422
  "s": 71.4,
423
  "n": 71.4,
@@ -430,6 +476,7 @@
430
  "2026-01-13": {
431
  "date": "2026-01-13",
432
  "day": "TUE",
 
433
  "d": 52.4,
434
  "s": 52.4,
435
  "n": 61.9,
@@ -442,6 +489,7 @@
442
  "2026-01-14": {
443
  "date": "2026-01-14",
444
  "day": "WED",
 
445
  "d": 47.6,
446
  "s": 52.4,
447
  "n": 47.6,
@@ -454,6 +502,7 @@
454
  "2026-01-15": {
455
  "date": "2026-01-15",
456
  "day": "THU",
 
457
  "d": 42.9,
458
  "s": 47.6,
459
  "n": 42.9,
@@ -466,6 +515,7 @@
466
  "2026-01-16": {
467
  "date": "2026-01-16",
468
  "day": "FRI",
 
469
  "d": 57.1,
470
  "s": 66.7,
471
  "n": 66.7,
@@ -478,6 +528,7 @@
478
  "2026-01-20": {
479
  "date": "2026-01-20",
480
  "day": "TUE",
 
481
  "d": 42.9,
482
  "s": 42.9,
483
  "n": 47.6,
@@ -490,6 +541,7 @@
490
  "2026-01-21": {
491
  "date": "2026-01-21",
492
  "day": "WED",
 
493
  "d": 52.4,
494
  "s": 61.9,
495
  "n": 47.6,
@@ -502,6 +554,7 @@
502
  "2026-01-22": {
503
  "date": "2026-01-22",
504
  "day": "THU",
 
505
  "d": 42.9,
506
  "s": 57.1,
507
  "n": 52.4,
@@ -514,6 +567,7 @@
514
  "2026-01-23": {
515
  "date": "2026-01-23",
516
  "day": "FRI",
 
517
  "d": 47.6,
518
  "s": 52.4,
519
  "n": 66.7,
@@ -526,6 +580,7 @@
526
  "2026-01-26": {
527
  "date": "2026-01-26",
528
  "day": "MON",
 
529
  "d": 57.1,
530
  "s": 61.9,
531
  "n": 57.1,
@@ -538,6 +593,7 @@
538
  "2026-01-27": {
539
  "date": "2026-01-27",
540
  "day": "TUE",
 
541
  "d": 57.1,
542
  "s": 47.6,
543
  "n": 61.9,
@@ -550,6 +606,7 @@
550
  "2026-01-28": {
551
  "date": "2026-01-28",
552
  "day": "WED",
 
553
  "d": 52.4,
554
  "s": 42.9,
555
  "n": 57.1,
@@ -562,6 +619,7 @@
562
  "2026-01-29": {
563
  "date": "2026-01-29",
564
  "day": "THU",
 
565
  "d": 47.6,
566
  "s": 47.6,
567
  "n": 42.9,
@@ -574,6 +632,7 @@
574
  "2026-01-30": {
575
  "date": "2026-01-30",
576
  "day": "FRI",
 
577
  "d": 38.1,
578
  "s": 42.9,
579
  "n": 52.4,
@@ -586,6 +645,7 @@
586
  "2026-02-02": {
587
  "date": "2026-02-02",
588
  "day": "MON",
 
589
  "d": 85.7,
590
  "s": 81.0,
591
  "n": 81.0,
@@ -598,6 +658,7 @@
598
  "2026-02-03": {
599
  "date": "2026-02-03",
600
  "day": "TUE",
 
601
  "d": 57.1,
602
  "s": 71.4,
603
  "n": 66.7,
@@ -610,6 +671,7 @@
610
  "2026-02-04": {
611
  "date": "2026-02-04",
612
  "day": "WED",
 
613
  "d": 47.6,
614
  "s": 38.1,
615
  "n": 33.3,
@@ -622,6 +684,7 @@
622
  "2026-02-05": {
623
  "date": "2026-02-05",
624
  "day": "THU",
 
625
  "d": 66.7,
626
  "s": 71.4,
627
  "n": 61.9,
@@ -634,6 +697,7 @@
634
  "2026-02-06": {
635
  "date": "2026-02-06",
636
  "day": "FRI",
 
637
  "d": 61.9,
638
  "s": 57.1,
639
  "n": 57.1,
@@ -646,6 +710,7 @@
646
  "2026-02-09": {
647
  "date": "2026-02-09",
648
  "day": "MON",
 
649
  "d": 47.6,
650
  "s": 61.9,
651
  "n": 61.9,
@@ -658,6 +723,7 @@
658
  "2026-02-10": {
659
  "date": "2026-02-10",
660
  "day": "TUE",
 
661
  "d": 52.4,
662
  "s": 57.1,
663
  "n": 61.9,
@@ -670,6 +736,7 @@
670
  "2026-02-11": {
671
  "date": "2026-02-11",
672
  "day": "WED",
 
673
  "d": 61.9,
674
  "s": 57.1,
675
  "n": 57.1,
@@ -682,6 +749,7 @@
682
  "2026-02-12": {
683
  "date": "2026-02-12",
684
  "day": "THU",
 
685
  "d": 57.1,
686
  "s": 71.4,
687
  "n": 71.4,
@@ -694,6 +762,7 @@
694
  "2026-02-13": {
695
  "date": "2026-02-13",
696
  "day": "FRI",
 
697
  "d": 47.6,
698
  "s": 61.9,
699
  "n": 81.0,
@@ -706,6 +775,7 @@
706
  "2026-02-17": {
707
  "date": "2026-02-17",
708
  "day": "TUE",
 
709
  "d": 71.4,
710
  "s": 71.4,
711
  "n": 71.4,
@@ -718,6 +788,7 @@
718
  "2026-02-18": {
719
  "date": "2026-02-18",
720
  "day": "WED",
 
721
  "d": 61.9,
722
  "s": 52.4,
723
  "n": 42.9,
@@ -730,6 +801,7 @@
730
  "2026-02-19": {
731
  "date": "2026-02-19",
732
  "day": "THU",
 
733
  "d": 42.9,
734
  "s": 38.1,
735
  "n": 38.1,
@@ -742,6 +814,7 @@
742
  "2026-02-20": {
743
  "date": "2026-02-20",
744
  "day": "FRI",
 
745
  "d": 38.1,
746
  "s": 33.3,
747
  "n": 33.3,
@@ -754,6 +827,7 @@
754
  "2026-02-23": {
755
  "date": "2026-02-23",
756
  "day": "MON",
 
757
  "d": 47.6,
758
  "s": 38.1,
759
  "n": 42.9,
@@ -766,6 +840,7 @@
766
  "2026-02-24": {
767
  "date": "2026-02-24",
768
  "day": "TUE",
 
769
  "d": 47.6,
770
  "s": 52.4,
771
  "n": 42.9,
@@ -778,6 +853,7 @@
778
  "2026-02-25": {
779
  "date": "2026-02-25",
780
  "day": "WED",
 
781
  "d": 57.1,
782
  "s": 61.9,
783
  "n": 76.2,
@@ -790,6 +866,7 @@
790
  "2026-02-26": {
791
  "date": "2026-02-26",
792
  "day": "THU",
 
793
  "d": 42.9,
794
  "s": 47.6,
795
  "n": 61.9,
@@ -802,6 +879,7 @@
802
  "2026-02-27": {
803
  "date": "2026-02-27",
804
  "day": "FRI",
 
805
  "d": 28.6,
806
  "s": 28.6,
807
  "n": 33.3,
@@ -814,6 +892,7 @@
814
  "2026-03-02": {
815
  "date": "2026-03-02",
816
  "day": "MON",
 
817
  "d": 66.7,
818
  "s": 66.7,
819
  "n": 61.9,
@@ -826,6 +905,7 @@
826
  "2026-03-03": {
827
  "date": "2026-03-03",
828
  "day": "TUE",
 
829
  "d": 33.3,
830
  "s": 38.1,
831
  "n": 42.9,
@@ -838,6 +918,7 @@
838
  "2026-03-04": {
839
  "date": "2026-03-04",
840
  "day": "WED",
 
841
  "d": 52.4,
842
  "s": 57.1,
843
  "n": 47.6,
@@ -850,6 +931,7 @@
850
  "2026-03-05": {
851
  "date": "2026-03-05",
852
  "day": "THU",
 
853
  "d": 47.6,
854
  "s": 52.4,
855
  "n": 38.1,
@@ -862,6 +944,7 @@
862
  "2026-03-06": {
863
  "date": "2026-03-06",
864
  "day": "FRI",
 
865
  "d": 47.6,
866
  "s": 47.6,
867
  "n": 33.3,
@@ -874,6 +957,7 @@
874
  "2026-03-09": {
875
  "date": "2026-03-09",
876
  "day": "MON",
 
877
  "d": 38.1,
878
  "s": 38.1,
879
  "n": 42.9,
@@ -886,6 +970,7 @@
886
  "2026-03-10": {
887
  "date": "2026-03-10",
888
  "day": "TUE",
 
889
  "d": 66.7,
890
  "s": 61.9,
891
  "n": 57.1,
@@ -898,6 +983,7 @@
898
  "2026-03-11": {
899
  "date": "2026-03-11",
900
  "day": "WED",
 
901
  "d": 47.6,
902
  "s": 57.1,
903
  "n": 42.9,
@@ -910,6 +996,7 @@
910
  "2026-03-12": {
911
  "date": "2026-03-12",
912
  "day": "THU",
 
913
  "d": 52.4,
914
  "s": 57.1,
915
  "n": 61.9,
@@ -922,6 +1009,7 @@
922
  "2026-03-13": {
923
  "date": "2026-03-13",
924
  "day": "FRI",
 
925
  "d": 66.7,
926
  "s": 42.9,
927
  "n": 47.6,
@@ -934,6 +1022,7 @@
934
  "2026-03-16": {
935
  "date": "2026-03-16",
936
  "day": "MON",
 
937
  "d": 61.9,
938
  "s": 47.6,
939
  "n": 47.6,
@@ -946,6 +1035,7 @@
946
  "2026-03-17": {
947
  "date": "2026-03-17",
948
  "day": "TUE",
 
949
  "d": 61.9,
950
  "s": 66.7,
951
  "n": 71.4,
@@ -958,6 +1048,7 @@
958
  "2026-03-18": {
959
  "date": "2026-03-18",
960
  "day": "WED",
 
961
  "d": 61.9,
962
  "s": 61.9,
963
  "n": 71.4,
@@ -970,6 +1061,7 @@
970
  "2026-03-19": {
971
  "date": "2026-03-19",
972
  "day": "THU",
 
973
  "d": 61.9,
974
  "s": 52.4,
975
  "n": 76.2,
@@ -982,6 +1074,7 @@
982
  "2026-03-20": {
983
  "date": "2026-03-20",
984
  "day": "FRI",
 
985
  "d": 52.4,
986
  "s": 52.4,
987
  "n": 61.9,
@@ -994,6 +1087,7 @@
994
  "2026-03-23": {
995
  "date": "2026-03-23",
996
  "day": "MON",
 
997
  "d": 42.9,
998
  "s": 38.1,
999
  "n": 42.9,
@@ -1006,6 +1100,7 @@
1006
  "2026-03-24": {
1007
  "date": "2026-03-24",
1008
  "day": "TUE",
 
1009
  "d": 42.9,
1010
  "s": 47.6,
1011
  "n": 52.4,
@@ -1018,6 +1113,7 @@
1018
  "2026-03-25": {
1019
  "date": "2026-03-25",
1020
  "day": "WED",
 
1021
  "d": 61.9,
1022
  "s": 57.1,
1023
  "n": 66.7,
@@ -1030,6 +1126,7 @@
1030
  "2026-03-26": {
1031
  "date": "2026-03-26",
1032
  "day": "THU",
 
1033
  "d": 47.6,
1034
  "s": 47.6,
1035
  "n": 38.1,
@@ -1042,6 +1139,7 @@
1042
  "2026-03-27": {
1043
  "date": "2026-03-27",
1044
  "day": "FRI",
 
1045
  "d": 47.6,
1046
  "s": 47.6,
1047
  "n": 47.6,
@@ -1054,6 +1152,7 @@
1054
  "2026-03-30": {
1055
  "date": "2026-03-30",
1056
  "day": "MON",
 
1057
  "d": 66.7,
1058
  "s": 61.9,
1059
  "n": 71.4,
@@ -1066,6 +1165,7 @@
1066
  "2026-03-31": {
1067
  "date": "2026-03-31",
1068
  "day": "TUE",
 
1069
  "d": 47.6,
1070
  "s": 47.6,
1071
  "n": 52.4,
@@ -1078,6 +1178,7 @@
1078
  "2026-04-01": {
1079
  "date": "2026-04-01",
1080
  "day": "WED",
 
1081
  "d": 66.7,
1082
  "s": 66.7,
1083
  "n": 61.9,
@@ -1090,6 +1191,7 @@
1090
  "2026-04-02": {
1091
  "date": "2026-04-02",
1092
  "day": "THU",
 
1093
  "d": 71.4,
1094
  "s": 76.2,
1095
  "n": 71.4,
@@ -1102,6 +1204,7 @@
1102
  "2026-04-06": {
1103
  "date": "2026-04-06",
1104
  "day": "MON",
 
1105
  "d": 47.6,
1106
  "s": 52.4,
1107
  "n": 57.1,
@@ -1114,6 +1217,7 @@
1114
  "2026-04-07": {
1115
  "date": "2026-04-07",
1116
  "day": "TUE",
 
1117
  "d": 57.1,
1118
  "s": 57.1,
1119
  "n": 52.4,
@@ -1126,6 +1230,7 @@
1126
  "2026-04-08": {
1127
  "date": "2026-04-08",
1128
  "day": "WED",
 
1129
  "d": 47.6,
1130
  "s": 47.6,
1131
  "n": 33.3,
@@ -1138,6 +1243,7 @@
1138
  "2026-04-09": {
1139
  "date": "2026-04-09",
1140
  "day": "THU",
 
1141
  "d": 66.7,
1142
  "s": 61.9,
1143
  "n": 66.7,
@@ -1150,6 +1256,7 @@
1150
  "2026-04-10": {
1151
  "date": "2026-04-10",
1152
  "day": "FRI",
 
1153
  "d": 47.6,
1154
  "s": 52.4,
1155
  "n": 47.6,
@@ -1162,6 +1269,7 @@
1162
  "2026-04-13": {
1163
  "date": "2026-04-13",
1164
  "day": "MON",
 
1165
  "d": 47.6,
1166
  "s": 57.1,
1167
  "n": 61.9,
@@ -1174,6 +1282,7 @@
1174
  "2026-04-14": {
1175
  "date": "2026-04-14",
1176
  "day": "TUE",
 
1177
  "d": 52.4,
1178
  "s": 57.1,
1179
  "n": 47.6,
@@ -1186,6 +1295,7 @@
1186
  "2026-04-15": {
1187
  "date": "2026-04-15",
1188
  "day": "WED",
 
1189
  "d": 61.9,
1190
  "s": 57.1,
1191
  "n": 42.9,
@@ -1198,6 +1308,7 @@
1198
  "2026-04-16": {
1199
  "date": "2026-04-16",
1200
  "day": "THU",
 
1201
  "d": 52.4,
1202
  "s": 57.1,
1203
  "n": 42.9,
@@ -1210,6 +1321,7 @@
1210
  "2026-04-17": {
1211
  "date": "2026-04-17",
1212
  "day": "FRI",
 
1213
  "d": 61.9,
1214
  "s": 66.7,
1215
  "n": 66.7,
@@ -1222,6 +1334,7 @@
1222
  "2026-04-20": {
1223
  "date": "2026-04-20",
1224
  "day": "MON",
 
1225
  "d": 47.6,
1226
  "s": 47.6,
1227
  "n": 33.3,
@@ -1234,6 +1347,7 @@
1234
  "2026-04-21": {
1235
  "date": "2026-04-21",
1236
  "day": "TUE",
 
1237
  "d": 66.7,
1238
  "s": 52.4,
1239
  "n": 57.1,
@@ -1246,6 +1360,7 @@
1246
  "2026-04-22": {
1247
  "date": "2026-04-22",
1248
  "day": "WED",
 
1249
  "d": 61.9,
1250
  "s": 66.7,
1251
  "n": 61.9,
@@ -1258,6 +1373,7 @@
1258
  "2026-04-23": {
1259
  "date": "2026-04-23",
1260
  "day": "THU",
 
1261
  "d": 66.7,
1262
  "s": 61.9,
1263
  "n": 52.4,
@@ -1270,6 +1386,7 @@
1270
  "2026-04-24": {
1271
  "date": "2026-04-24",
1272
  "day": "FRI",
 
1273
  "d": 52.4,
1274
  "s": 61.9,
1275
  "n": 61.9,
@@ -1282,6 +1399,7 @@
1282
  "2026-04-27": {
1283
  "date": "2026-04-27",
1284
  "day": "MON",
 
1285
  "d": 52.4,
1286
  "s": 47.6,
1287
  "n": 33.3,
@@ -1294,6 +1412,7 @@
1294
  "2026-04-28": {
1295
  "date": "2026-04-28",
1296
  "day": "TUE",
 
1297
  "d": 66.7,
1298
  "s": 57.1,
1299
  "n": 52.4,
@@ -1306,6 +1425,7 @@
1306
  "2026-04-29": {
1307
  "date": "2026-04-29",
1308
  "day": "WED",
 
1309
  "d": 71.4,
1310
  "s": 71.4,
1311
  "n": 81.0,
@@ -1318,6 +1438,7 @@
1318
  "2026-04-30": {
1319
  "date": "2026-04-30",
1320
  "day": "THU",
 
1321
  "d": 28.6,
1322
  "s": 33.3,
1323
  "n": 28.6,
@@ -1330,6 +1451,7 @@
1330
  "2026-05-01": {
1331
  "date": "2026-05-01",
1332
  "day": "FRI",
 
1333
  "d": 57.1,
1334
  "s": 61.9,
1335
  "n": 61.9,
@@ -1342,6 +1464,7 @@
1342
  "2026-05-04": {
1343
  "date": "2026-05-04",
1344
  "day": "MON",
 
1345
  "d": 66.7,
1346
  "s": 52.4,
1347
  "n": 57.1,
@@ -1354,6 +1477,7 @@
1354
  "2026-05-05": {
1355
  "date": "2026-05-05",
1356
  "day": "TUE",
 
1357
  "d": 52.4,
1358
  "s": 47.6,
1359
  "n": 42.9,
@@ -1366,6 +1490,7 @@
1366
  "2026-05-06": {
1367
  "date": "2026-05-06",
1368
  "day": "WED",
 
1369
  "d": 38.1,
1370
  "s": 42.9,
1371
  "n": 47.6,
@@ -1378,6 +1503,7 @@
1378
  "2026-05-07": {
1379
  "date": "2026-05-07",
1380
  "day": "THU",
 
1381
  "d": 66.7,
1382
  "s": 66.7,
1383
  "n": 57.1,
@@ -1390,6 +1516,7 @@
1390
  "2026-05-08": {
1391
  "date": "2026-05-08",
1392
  "day": "FRI",
 
1393
  "d": 66.7,
1394
  "s": 52.4,
1395
  "n": 66.7,
@@ -1402,6 +1529,7 @@
1402
  "2026-05-11": {
1403
  "date": "2026-05-11",
1404
  "day": "MON",
 
1405
  "d": 38.1,
1406
  "s": 47.6,
1407
  "n": 52.4,
@@ -1414,6 +1542,7 @@
1414
  "2026-05-12": {
1415
  "date": "2026-05-12",
1416
  "day": "TUE",
 
1417
  "d": 57.1,
1418
  "s": 57.1,
1419
  "n": 42.9,
@@ -1426,6 +1555,7 @@
1426
  "2026-05-13": {
1427
  "date": "2026-05-13",
1428
  "day": "WED",
 
1429
  "d": 28.6,
1430
  "s": 28.6,
1431
  "n": 52.4,
@@ -1438,6 +1568,7 @@
1438
  "2026-05-14": {
1439
  "date": "2026-05-14",
1440
  "day": "THU",
 
1441
  "d": 57.1,
1442
  "s": 47.6,
1443
  "n": 57.1,
@@ -1450,6 +1581,7 @@
1450
  "2026-05-15": {
1451
  "date": "2026-05-15",
1452
  "day": "FRI",
 
1453
  "d": 66.7,
1454
  "s": 57.1,
1455
  "n": 47.6,
@@ -1462,6 +1594,7 @@
1462
  "2026-05-18": {
1463
  "date": "2026-05-18",
1464
  "day": "MON",
 
1465
  "d": 47.6,
1466
  "s": 52.4,
1467
  "n": 57.1,
@@ -1474,6 +1607,7 @@
1474
  "2026-05-19": {
1475
  "date": "2026-05-19",
1476
  "day": "TUE",
 
1477
  "d": 38.1,
1478
  "s": 38.1,
1479
  "n": 38.1,
@@ -1486,6 +1620,7 @@
1486
  "2026-05-20": {
1487
  "date": "2026-05-20",
1488
  "day": "WED",
 
1489
  "d": 38.1,
1490
  "s": 42.9,
1491
  "n": 42.9,
@@ -1498,6 +1633,7 @@
1498
  "2026-05-21": {
1499
  "date": "2026-05-21",
1500
  "day": "THU",
 
1501
  "d": 47.6,
1502
  "s": 47.6,
1503
  "n": 47.6,
@@ -1510,6 +1646,7 @@
1510
  "2026-05-22": {
1511
  "date": "2026-05-22",
1512
  "day": "FRI",
 
1513
  "d": 47.6,
1514
  "s": 52.4,
1515
  "n": 47.6,
@@ -1522,6 +1659,7 @@
1522
  "2026-05-26": {
1523
  "date": "2026-05-26",
1524
  "day": "TUE",
 
1525
  "d": 57.1,
1526
  "s": 71.4,
1527
  "n": 71.4,
@@ -1534,6 +1672,7 @@
1534
  "2026-05-27": {
1535
  "date": "2026-05-27",
1536
  "day": "WED",
 
1537
  "d": 52.4,
1538
  "s": 61.9,
1539
  "n": 66.7,
@@ -1546,6 +1685,7 @@
1546
  "2026-05-28": {
1547
  "date": "2026-05-28",
1548
  "day": "THU",
 
1549
  "d": 66.7,
1550
  "s": 71.4,
1551
  "n": 66.7,
@@ -1558,6 +1698,7 @@
1558
  "2026-05-29": {
1559
  "date": "2026-05-29",
1560
  "day": "FRI",
 
1561
  "d": 28.6,
1562
  "s": 42.9,
1563
  "n": 42.9,
@@ -1570,6 +1711,7 @@
1570
  "2026-06-01": {
1571
  "date": "2026-06-01",
1572
  "day": "MON",
 
1573
  "d": 71.4,
1574
  "s": 66.7,
1575
  "n": 61.9,
@@ -1582,6 +1724,7 @@
1582
  "2026-06-02": {
1583
  "date": "2026-06-02",
1584
  "day": "TUE",
 
1585
  "d": 66.7,
1586
  "s": 76.2,
1587
  "n": 71.4,
@@ -1594,6 +1737,7 @@
1594
  "2026-06-03": {
1595
  "date": "2026-06-03",
1596
  "day": "WED",
 
1597
  "d": 33.3,
1598
  "s": 38.1,
1599
  "n": 42.9,
@@ -1606,6 +1750,7 @@
1606
  "2026-06-04": {
1607
  "date": "2026-06-04",
1608
  "day": "THU",
 
1609
  "d": 71.4,
1610
  "s": 61.9,
1611
  "n": 61.9,
@@ -1618,6 +1763,7 @@
1618
  "2026-06-05": {
1619
  "date": "2026-06-05",
1620
  "day": "FRI",
 
1621
  "d": 61.9,
1622
  "s": 38.1,
1623
  "n": 42.9,
@@ -1630,6 +1776,7 @@
1630
  "2026-06-08": {
1631
  "date": "2026-06-08",
1632
  "day": "MON",
 
1633
  "d": 71.4,
1634
  "s": 71.4,
1635
  "n": 61.9,
@@ -1642,6 +1789,7 @@
1642
  "2026-06-09": {
1643
  "date": "2026-06-09",
1644
  "day": "TUE",
 
1645
  "d": 38.1,
1646
  "s": 38.1,
1647
  "n": 38.1,
@@ -1654,6 +1802,7 @@
1654
  "2026-06-10": {
1655
  "date": "2026-06-10",
1656
  "day": "WED",
 
1657
  "d": 33.3,
1658
  "s": 38.1,
1659
  "n": 42.9,
@@ -1666,6 +1815,7 @@
1666
  "2026-06-11": {
1667
  "date": "2026-06-11",
1668
  "day": "THU",
 
1669
  "d": 57.1,
1670
  "s": 61.9,
1671
  "n": 57.1,
@@ -1678,6 +1828,7 @@
1678
  "2026-06-12": {
1679
  "date": "2026-06-12",
1680
  "day": "FRI",
 
1681
  "d": 52.4,
1682
  "s": 61.9,
1683
  "n": 71.4,
@@ -1690,6 +1841,7 @@
1690
  "2026-06-15": {
1691
  "date": "2026-06-15",
1692
  "day": "MON",
 
1693
  "d": 57.1,
1694
  "s": 66.7,
1695
  "n": 66.7,
@@ -1702,6 +1854,7 @@
1702
  "2026-06-16": {
1703
  "date": "2026-06-16",
1704
  "day": "TUE",
 
1705
  "d": 52.4,
1706
  "s": 52.4,
1707
  "n": 52.4,
@@ -1714,6 +1867,7 @@
1714
  "2026-06-17": {
1715
  "date": "2026-06-17",
1716
  "day": "WED",
 
1717
  "d": 52.4,
1718
  "s": 52.4,
1719
  "n": 61.9,
@@ -1726,6 +1880,7 @@
1726
  "2026-06-18": {
1727
  "date": "2026-06-18",
1728
  "day": "THU",
 
1729
  "d": 52.4,
1730
  "s": 52.4,
1731
  "n": 47.6,
@@ -1738,6 +1893,7 @@
1738
  "2026-06-22": {
1739
  "date": "2026-06-22",
1740
  "day": "MON",
 
1741
  "d": 38.1,
1742
  "s": 42.9,
1743
  "n": 47.6,
@@ -1750,6 +1906,7 @@
1750
  "2026-06-23": {
1751
  "date": "2026-06-23",
1752
  "day": "TUE",
 
1753
  "d": 47.6,
1754
  "s": 52.4,
1755
  "n": 47.6,
@@ -1762,6 +1919,7 @@
1762
  "2026-06-24": {
1763
  "date": "2026-06-24",
1764
  "day": "WED",
 
1765
  "d": 28.6,
1766
  "s": 23.8,
1767
  "n": 19.0,
@@ -1774,6 +1932,7 @@
1774
  "2026-06-25": {
1775
  "date": "2026-06-25",
1776
  "day": "THU",
 
1777
  "d": 47.6,
1778
  "s": 57.1,
1779
  "n": 57.1,
@@ -1786,6 +1945,7 @@
1786
  "2026-06-26": {
1787
  "date": "2026-06-26",
1788
  "day": "FRI",
 
1789
  "d": 47.6,
1790
  "s": 47.6,
1791
  "n": 61.9,
@@ -1798,6 +1958,7 @@
1798
  "2026-06-29": {
1799
  "date": "2026-06-29",
1800
  "day": "MON",
 
1801
  "d": 61.9,
1802
  "s": 61.9,
1803
  "n": 61.9,
@@ -1810,6 +1971,7 @@
1810
  "2026-06-30": {
1811
  "date": "2026-06-30",
1812
  "day": "TUE",
 
1813
  "d": 57.1,
1814
  "s": 57.1,
1815
  "n": 52.4,
@@ -1822,6 +1984,7 @@
1822
  "2026-07-01": {
1823
  "date": "2026-07-01",
1824
  "day": "WED",
 
1825
  "d": 81.0,
1826
  "s": 85.0,
1827
  "n": 85.7,
@@ -1834,6 +1997,7 @@
1834
  "2026-07-02": {
1835
  "date": "2026-07-02",
1836
  "day": "THU",
 
1837
  "d": 38.1,
1838
  "s": 47.6,
1839
  "n": 47.6,
@@ -1846,6 +2010,7 @@
1846
  "2026-07-06": {
1847
  "date": "2026-07-06",
1848
  "day": "MON",
 
1849
  "d": 57.1,
1850
  "s": 66.7,
1851
  "n": 66.7,
@@ -1858,6 +2023,7 @@
1858
  "2026-07-07": {
1859
  "date": "2026-07-07",
1860
  "day": "TUE",
 
1861
  "d": 57.1,
1862
  "s": 57.1,
1863
  "n": 61.9,
@@ -1870,6 +2036,7 @@
1870
  "2026-07-08": {
1871
  "date": "2026-07-08",
1872
  "day": "WED",
 
1873
  "d": 52.4,
1874
  "s": 57.1,
1875
  "n": 61.9,
@@ -1882,6 +2049,7 @@
1882
  "2026-07-09": {
1883
  "date": "2026-07-09",
1884
  "day": "THU",
 
1885
  "d": 61.9,
1886
  "s": 66.7,
1887
  "n": 76.2,
@@ -1894,6 +2062,7 @@
1894
  "2026-07-10": {
1895
  "date": "2026-07-10",
1896
  "day": "FRI",
 
1897
  "d": 57.1,
1898
  "s": 66.7,
1899
  "n": 66.7,
@@ -1906,6 +2075,7 @@
1906
  "2026-07-13": {
1907
  "date": "2026-07-13",
1908
  "day": "MON",
 
1909
  "d": 76.2,
1910
  "s": 66.7,
1911
  "n": 52.4,
@@ -1918,6 +2088,7 @@
1918
  "2026-07-14": {
1919
  "date": "2026-07-14",
1920
  "day": "TUE",
 
1921
  "d": 76.2,
1922
  "s": 66.7,
1923
  "n": 71.4,
@@ -1930,6 +2101,7 @@
1930
  "2026-07-15": {
1931
  "date": "2026-07-15",
1932
  "day": "WED",
 
1933
  "d": 71.4,
1934
  "s": 47.6,
1935
  "n": 57.1,
@@ -1942,6 +2114,7 @@
1942
  "2026-07-16": {
1943
  "date": "2026-07-16",
1944
  "day": "THU",
 
1945
  "d": 52.4,
1946
  "s": 52.4,
1947
  "n": 57.1,
@@ -1954,6 +2127,7 @@
1954
  "2026-07-17": {
1955
  "date": "2026-07-17",
1956
  "day": "FRI",
 
1957
  "d": 66.7,
1958
  "s": 61.9,
1959
  "n": 66.7,
@@ -1966,6 +2140,7 @@
1966
  "2026-07-20": {
1967
  "date": "2026-07-20",
1968
  "day": "MON",
 
1969
  "d": 76.2,
1970
  "s": 71.4,
1971
  "n": 71.4,
@@ -1978,6 +2153,7 @@
1978
  "2026-07-21": {
1979
  "date": "2026-07-21",
1980
  "day": "TUE",
 
1981
  "d": 28.6,
1982
  "s": 33.3,
1983
  "n": 19.0,
@@ -1990,6 +2166,7 @@
1990
  "2026-07-22": {
1991
  "date": "2026-07-22",
1992
  "day": "WED",
 
1993
  "d": 52.4,
1994
  "s": 47.6,
1995
  "n": 57.1,
@@ -2002,6 +2179,7 @@
2002
  "2026-07-23": {
2003
  "date": "2026-07-23",
2004
  "day": "THU",
 
2005
  "d": 52.4,
2006
  "s": 57.1,
2007
  "n": 52.4,
@@ -2014,6 +2192,7 @@
2014
  "2026-07-24": {
2015
  "date": "2026-07-24",
2016
  "day": "FRI",
 
2017
  "d": 38.1,
2018
  "s": 52.4,
2019
  "n": 47.6,
@@ -2026,6 +2205,7 @@
2026
  "2026-07-27": {
2027
  "date": "2026-07-27",
2028
  "day": "MON",
 
2029
  "d": 66.7,
2030
  "s": 57.1,
2031
  "n": 52.4,
@@ -2038,6 +2218,7 @@
2038
  "2026-07-28": {
2039
  "date": "2026-07-28",
2040
  "day": "TUE",
 
2041
  "d": 52.4,
2042
  "s": 47.6,
2043
  "n": 47.6,
@@ -2050,6 +2231,7 @@
2050
  "2026-07-29": {
2051
  "date": "2026-07-29",
2052
  "day": "WED",
 
2053
  "d": 42.9,
2054
  "s": 38.1,
2055
  "n": 42.9,
@@ -2062,6 +2244,7 @@
2062
  "2026-07-30": {
2063
  "date": "2026-07-30",
2064
  "day": "THU",
 
2065
  "d": 52.4,
2066
  "s": 61.9,
2067
  "n": 71.4,
@@ -2074,6 +2257,7 @@
2074
  "2026-07-31": {
2075
  "date": "2026-07-31",
2076
  "day": "FRI",
 
2077
  "d": 38.1,
2078
  "s": 42.9,
2079
  "n": 42.9,
@@ -2086,6 +2270,7 @@
2086
  "2026-08-03": {
2087
  "date": "2026-08-03",
2088
  "day": "MON",
 
2089
  "d": 38.1,
2090
  "s": 38.1,
2091
  "n": 52.4,
@@ -2098,6 +2283,7 @@
2098
  "2026-08-04": {
2099
  "date": "2026-08-04",
2100
  "day": "TUE",
 
2101
  "d": 42.9,
2102
  "s": 47.6,
2103
  "n": 42.9,
@@ -2110,6 +2296,7 @@
2110
  "2026-08-05": {
2111
  "date": "2026-08-05",
2112
  "day": "WED",
 
2113
  "d": 57.1,
2114
  "s": 52.4,
2115
  "n": 57.1,
@@ -2122,6 +2309,7 @@
2122
  "2026-08-06": {
2123
  "date": "2026-08-06",
2124
  "day": "THU",
 
2125
  "d": 47.6,
2126
  "s": 52.4,
2127
  "n": 57.1,
@@ -2134,6 +2322,7 @@
2134
  "2026-08-07": {
2135
  "date": "2026-08-07",
2136
  "day": "FRI",
 
2137
  "d": 52.4,
2138
  "s": 47.6,
2139
  "n": 38.1,
@@ -2146,6 +2335,7 @@
2146
  "2026-08-10": {
2147
  "date": "2026-08-10",
2148
  "day": "MON",
 
2149
  "d": 52.4,
2150
  "s": 52.4,
2151
  "n": 47.6,
@@ -2158,6 +2348,7 @@
2158
  "2026-08-11": {
2159
  "date": "2026-08-11",
2160
  "day": "TUE",
 
2161
  "d": 38.1,
2162
  "s": 42.9,
2163
  "n": 42.9,
@@ -2170,6 +2361,7 @@
2170
  "2026-08-12": {
2171
  "date": "2026-08-12",
2172
  "day": "WED",
 
2173
  "d": 33.3,
2174
  "s": 47.6,
2175
  "n": 42.9,
@@ -2182,6 +2374,7 @@
2182
  "2026-08-13": {
2183
  "date": "2026-08-13",
2184
  "day": "THU",
 
2185
  "d": 61.9,
2186
  "s": 47.6,
2187
  "n": 57.1,
@@ -2194,6 +2387,7 @@
2194
  "2026-08-14": {
2195
  "date": "2026-08-14",
2196
  "day": "FRI",
 
2197
  "d": 66.7,
2198
  "s": 57.1,
2199
  "n": 61.9,
@@ -2206,6 +2400,7 @@
2206
  "2026-08-17": {
2207
  "date": "2026-08-17",
2208
  "day": "MON",
 
2209
  "d": 57.1,
2210
  "s": 66.7,
2211
  "n": 57.1,
@@ -2218,6 +2413,7 @@
2218
  "2026-08-18": {
2219
  "date": "2026-08-18",
2220
  "day": "TUE",
 
2221
  "d": 52.4,
2222
  "s": 61.9,
2223
  "n": 52.4,
@@ -2230,6 +2426,7 @@
2230
  "2026-08-19": {
2231
  "date": "2026-08-19",
2232
  "day": "WED",
 
2233
  "d": 61.9,
2234
  "s": 61.9,
2235
  "n": 57.1,
@@ -2242,6 +2439,7 @@
2242
  "2026-08-20": {
2243
  "date": "2026-08-20",
2244
  "day": "THU",
 
2245
  "d": 52.4,
2246
  "s": 47.6,
2247
  "n": 47.6,
@@ -2254,6 +2452,7 @@
2254
  "2026-08-21": {
2255
  "date": "2026-08-21",
2256
  "day": "FRI",
 
2257
  "d": 47.6,
2258
  "s": 42.9,
2259
  "n": 42.9,
@@ -2266,6 +2465,7 @@
2266
  "2026-08-24": {
2267
  "date": "2026-08-24",
2268
  "day": "MON",
 
2269
  "d": 61.9,
2270
  "s": 57.1,
2271
  "n": 57.1,
@@ -2278,6 +2478,7 @@
2278
  "2026-08-25": {
2279
  "date": "2026-08-25",
2280
  "day": "TUE",
 
2281
  "d": 57.1,
2282
  "s": 57.1,
2283
  "n": 61.9,
@@ -2290,6 +2491,7 @@
2290
  "2026-08-26": {
2291
  "date": "2026-08-26",
2292
  "day": "WED",
 
2293
  "d": 47.6,
2294
  "s": 57.1,
2295
  "n": 57.1,
@@ -2302,6 +2504,7 @@
2302
  "2026-08-27": {
2303
  "date": "2026-08-27",
2304
  "day": "THU",
 
2305
  "d": 90.5,
2306
  "s": 90.5,
2307
  "n": 81.0,
@@ -2314,6 +2517,7 @@
2314
  "2026-08-28": {
2315
  "date": "2026-08-28",
2316
  "day": "FRI",
 
2317
  "d": 42.9,
2318
  "s": 42.9,
2319
  "n": 57.1,
@@ -2326,6 +2530,7 @@
2326
  "2026-08-31": {
2327
  "date": "2026-08-31",
2328
  "day": "MON",
 
2329
  "d": 47.6,
2330
  "s": 52.4,
2331
  "n": 52.4,
@@ -2338,6 +2543,7 @@
2338
  "2026-09-01": {
2339
  "date": "2026-09-01",
2340
  "day": "TUE",
 
2341
  "d": 42.9,
2342
  "s": 52.4,
2343
  "n": 52.4,
@@ -2350,6 +2556,7 @@
2350
  "2026-09-02": {
2351
  "date": "2026-09-02",
2352
  "day": "WED",
 
2353
  "d": 66.7,
2354
  "s": 42.9,
2355
  "n": 42.9,
@@ -2362,6 +2569,7 @@
2362
  "2026-09-03": {
2363
  "date": "2026-09-03",
2364
  "day": "THU",
 
2365
  "d": 52.4,
2366
  "s": 47.6,
2367
  "n": 52.4,
@@ -2374,6 +2582,7 @@
2374
  "2026-09-04": {
2375
  "date": "2026-09-04",
2376
  "day": "FRI",
 
2377
  "d": 47.6,
2378
  "s": 47.6,
2379
  "n": 52.4,
@@ -2386,6 +2595,7 @@
2386
  "2026-09-08": {
2387
  "date": "2026-09-08",
2388
  "day": "TUE",
 
2389
  "d": 57.1,
2390
  "s": 47.6,
2391
  "n": 52.4,
@@ -2398,6 +2608,7 @@
2398
  "2026-09-09": {
2399
  "date": "2026-09-09",
2400
  "day": "WED",
 
2401
  "d": 61.9,
2402
  "s": 71.4,
2403
  "n": 66.7,
@@ -2410,6 +2621,7 @@
2410
  "2026-09-10": {
2411
  "date": "2026-09-10",
2412
  "day": "THU",
 
2413
  "d": 81.0,
2414
  "s": 81.0,
2415
  "n": 71.4,
@@ -2422,6 +2634,7 @@
2422
  "2026-09-11": {
2423
  "date": "2026-09-11",
2424
  "day": "FRI",
 
2425
  "d": 66.7,
2426
  "s": 76.2,
2427
  "n": 66.7,
@@ -2434,6 +2647,7 @@
2434
  "2026-09-14": {
2435
  "date": "2026-09-14",
2436
  "day": "MON",
 
2437
  "d": 61.9,
2438
  "s": 57.1,
2439
  "n": 66.7,
@@ -2446,6 +2660,7 @@
2446
  "2026-09-15": {
2447
  "date": "2026-09-15",
2448
  "day": "TUE",
 
2449
  "d": 61.9,
2450
  "s": 57.1,
2451
  "n": 42.9,
@@ -2458,6 +2673,7 @@
2458
  "2026-09-16": {
2459
  "date": "2026-09-16",
2460
  "day": "WED",
 
2461
  "d": 76.2,
2462
  "s": 71.4,
2463
  "n": 81.0,
@@ -2470,6 +2686,7 @@
2470
  "2026-09-17": {
2471
  "date": "2026-09-17",
2472
  "day": "THU",
 
2473
  "d": 47.6,
2474
  "s": 47.6,
2475
  "n": 42.9,
@@ -2482,6 +2699,7 @@
2482
  "2026-09-18": {
2483
  "date": "2026-09-18",
2484
  "day": "FRI",
 
2485
  "d": 52.4,
2486
  "s": 47.6,
2487
  "n": 47.6,
@@ -2494,6 +2712,7 @@
2494
  "2026-09-21": {
2495
  "date": "2026-09-21",
2496
  "day": "MON",
 
2497
  "d": 42.9,
2498
  "s": 23.8,
2499
  "n": 38.1,
@@ -2506,6 +2725,7 @@
2506
  "2026-09-22": {
2507
  "date": "2026-09-22",
2508
  "day": "TUE",
 
2509
  "d": 38.1,
2510
  "s": 28.6,
2511
  "n": 28.6,
@@ -2518,6 +2738,7 @@
2518
  "2026-09-23": {
2519
  "date": "2026-09-23",
2520
  "day": "WED",
 
2521
  "d": 28.6,
2522
  "s": 28.6,
2523
  "n": 38.1,
@@ -2530,6 +2751,7 @@
2530
  "2026-09-24": {
2531
  "date": "2026-09-24",
2532
  "day": "THU",
 
2533
  "d": 47.6,
2534
  "s": 47.6,
2535
  "n": 52.4,
@@ -2542,6 +2764,7 @@
2542
  "2026-09-25": {
2543
  "date": "2026-09-25",
2544
  "day": "FRI",
 
2545
  "d": 47.6,
2546
  "s": 38.1,
2547
  "n": 52.4,
@@ -2554,6 +2777,7 @@
2554
  "2026-09-28": {
2555
  "date": "2026-09-28",
2556
  "day": "MON",
 
2557
  "d": 66.7,
2558
  "s": 71.4,
2559
  "n": 61.9,
@@ -2566,6 +2790,7 @@
2566
  "2026-09-29": {
2567
  "date": "2026-09-29",
2568
  "day": "TUE",
 
2569
  "d": 57.1,
2570
  "s": 52.4,
2571
  "n": 38.1,
@@ -2578,6 +2803,7 @@
2578
  "2026-09-30": {
2579
  "date": "2026-09-30",
2580
  "day": "WED",
 
2581
  "d": 42.9,
2582
  "s": 38.1,
2583
  "n": 52.4,
@@ -2590,6 +2816,7 @@
2590
  "2026-10-01": {
2591
  "date": "2026-10-01",
2592
  "day": "THU",
 
2593
  "d": 47.6,
2594
  "s": 57.1,
2595
  "n": 52.4,
@@ -2602,6 +2829,7 @@
2602
  "2026-10-02": {
2603
  "date": "2026-10-02",
2604
  "day": "FRI",
 
2605
  "d": 38.1,
2606
  "s": 42.9,
2607
  "n": 47.6,
@@ -2614,6 +2842,7 @@
2614
  "2026-10-05": {
2615
  "date": "2026-10-05",
2616
  "day": "MON",
 
2617
  "d": 66.7,
2618
  "s": 66.7,
2619
  "n": 71.4,
@@ -2626,6 +2855,7 @@
2626
  "2026-10-06": {
2627
  "date": "2026-10-06",
2628
  "day": "TUE",
 
2629
  "d": 61.9,
2630
  "s": 57.1,
2631
  "n": 52.4,
@@ -2638,6 +2868,7 @@
2638
  "2026-10-07": {
2639
  "date": "2026-10-07",
2640
  "day": "WED",
 
2641
  "d": 33.3,
2642
  "s": 33.3,
2643
  "n": 42.9,
@@ -2650,6 +2881,7 @@
2650
  "2026-10-08": {
2651
  "date": "2026-10-08",
2652
  "day": "THU",
 
2653
  "d": 52.4,
2654
  "s": 47.6,
2655
  "n": 52.4,
@@ -2662,6 +2894,7 @@
2662
  "2026-10-09": {
2663
  "date": "2026-10-09",
2664
  "day": "FRI",
 
2665
  "d": 66.7,
2666
  "s": 61.9,
2667
  "n": 61.9,
@@ -2674,6 +2907,7 @@
2674
  "2026-10-12": {
2675
  "date": "2026-10-12",
2676
  "day": "MON",
 
2677
  "d": 47.6,
2678
  "s": 47.6,
2679
  "n": 47.6,
@@ -2686,6 +2920,7 @@
2686
  "2026-10-13": {
2687
  "date": "2026-10-13",
2688
  "day": "TUE",
 
2689
  "d": 33.3,
2690
  "s": 42.9,
2691
  "n": 52.4,
@@ -2698,6 +2933,7 @@
2698
  "2026-10-14": {
2699
  "date": "2026-10-14",
2700
  "day": "WED",
 
2701
  "d": 61.9,
2702
  "s": 57.1,
2703
  "n": 57.1,
@@ -2710,6 +2946,7 @@
2710
  "2026-10-15": {
2711
  "date": "2026-10-15",
2712
  "day": "THU",
 
2713
  "d": 52.4,
2714
  "s": 57.1,
2715
  "n": 57.1,
@@ -2722,6 +2959,7 @@
2722
  "2026-10-16": {
2723
  "date": "2026-10-16",
2724
  "day": "FRI",
 
2725
  "d": 66.7,
2726
  "s": 71.4,
2727
  "n": 61.9,
@@ -2734,6 +2972,7 @@
2734
  "2026-10-19": {
2735
  "date": "2026-10-19",
2736
  "day": "MON",
 
2737
  "d": 52.4,
2738
  "s": 57.1,
2739
  "n": 57.1,
@@ -2746,6 +2985,7 @@
2746
  "2026-10-20": {
2747
  "date": "2026-10-20",
2748
  "day": "TUE",
 
2749
  "d": 47.6,
2750
  "s": 52.4,
2751
  "n": 42.9,
@@ -2758,6 +2998,7 @@
2758
  "2026-10-21": {
2759
  "date": "2026-10-21",
2760
  "day": "WED",
 
2761
  "d": 28.6,
2762
  "s": 38.1,
2763
  "n": 38.1,
@@ -2770,6 +3011,7 @@
2770
  "2026-10-22": {
2771
  "date": "2026-10-22",
2772
  "day": "THU",
 
2773
  "d": 52.4,
2774
  "s": 66.7,
2775
  "n": 71.4,
@@ -2782,6 +3024,7 @@
2782
  "2026-10-23": {
2783
  "date": "2026-10-23",
2784
  "day": "FRI",
 
2785
  "d": 57.1,
2786
  "s": 71.4,
2787
  "n": 66.7,
@@ -2794,6 +3037,7 @@
2794
  "2026-10-26": {
2795
  "date": "2026-10-26",
2796
  "day": "MON",
 
2797
  "d": 38.1,
2798
  "s": 33.3,
2799
  "n": 47.6,
@@ -2806,6 +3050,7 @@
2806
  "2026-10-27": {
2807
  "date": "2026-10-27",
2808
  "day": "TUE",
 
2809
  "d": 66.7,
2810
  "s": 57.1,
2811
  "n": 52.4,
@@ -2818,6 +3063,7 @@
2818
  "2026-10-28": {
2819
  "date": "2026-10-28",
2820
  "day": "WED",
 
2821
  "d": 38.1,
2822
  "s": 38.1,
2823
  "n": 57.1,
@@ -2830,6 +3076,7 @@
2830
  "2026-10-29": {
2831
  "date": "2026-10-29",
2832
  "day": "THU",
 
2833
  "d": 61.9,
2834
  "s": 66.7,
2835
  "n": 66.7,
@@ -2842,6 +3089,7 @@
2842
  "2026-10-30": {
2843
  "date": "2026-10-30",
2844
  "day": "FRI",
 
2845
  "d": 47.6,
2846
  "s": 52.4,
2847
  "n": 47.6,
@@ -2854,6 +3102,7 @@
2854
  "2026-11-02": {
2855
  "date": "2026-11-02",
2856
  "day": "MON",
 
2857
  "d": 61.9,
2858
  "s": 61.9,
2859
  "n": 61.9,
@@ -2866,6 +3115,7 @@
2866
  "2026-11-03": {
2867
  "date": "2026-11-03",
2868
  "day": "TUE",
 
2869
  "d": 61.9,
2870
  "s": 66.7,
2871
  "n": 61.9,
@@ -2878,6 +3128,7 @@
2878
  "2026-11-04": {
2879
  "date": "2026-11-04",
2880
  "day": "WED",
 
2881
  "d": 66.7,
2882
  "s": 61.9,
2883
  "n": 57.1,
@@ -2890,6 +3141,7 @@
2890
  "2026-11-05": {
2891
  "date": "2026-11-05",
2892
  "day": "THU",
 
2893
  "d": 71.4,
2894
  "s": 81.0,
2895
  "n": 71.4,
@@ -2902,6 +3154,7 @@
2902
  "2026-11-06": {
2903
  "date": "2026-11-06",
2904
  "day": "FRI",
 
2905
  "d": 76.2,
2906
  "s": 71.4,
2907
  "n": 76.2,
@@ -2914,6 +3167,7 @@
2914
  "2026-11-09": {
2915
  "date": "2026-11-09",
2916
  "day": "MON",
 
2917
  "d": 66.7,
2918
  "s": 61.9,
2919
  "n": 66.7,
@@ -2926,6 +3180,7 @@
2926
  "2026-11-10": {
2927
  "date": "2026-11-10",
2928
  "day": "TUE",
 
2929
  "d": 47.6,
2930
  "s": 33.3,
2931
  "n": 33.3,
@@ -2938,6 +3193,7 @@
2938
  "2026-11-11": {
2939
  "date": "2026-11-11",
2940
  "day": "WED",
 
2941
  "d": 38.1,
2942
  "s": 52.4,
2943
  "n": 57.1,
@@ -2950,6 +3206,7 @@
2950
  "2026-11-12": {
2951
  "date": "2026-11-12",
2952
  "day": "THU",
 
2953
  "d": 66.7,
2954
  "s": 61.9,
2955
  "n": 61.9,
@@ -2962,6 +3219,7 @@
2962
  "2026-11-13": {
2963
  "date": "2026-11-13",
2964
  "day": "FRI",
 
2965
  "d": 42.9,
2966
  "s": 42.9,
2967
  "n": 38.1,
@@ -2974,6 +3232,7 @@
2974
  "2026-11-16": {
2975
  "date": "2026-11-16",
2976
  "day": "MON",
 
2977
  "d": 66.7,
2978
  "s": 57.1,
2979
  "n": 57.1,
@@ -2986,6 +3245,7 @@
2986
  "2026-11-17": {
2987
  "date": "2026-11-17",
2988
  "day": "TUE",
 
2989
  "d": 57.1,
2990
  "s": 61.9,
2991
  "n": 66.7,
@@ -2998,6 +3258,7 @@
2998
  "2026-11-18": {
2999
  "date": "2026-11-18",
3000
  "day": "WED",
 
3001
  "d": 33.3,
3002
  "s": 42.9,
3003
  "n": 42.9,
@@ -3010,6 +3271,7 @@
3010
  "2026-11-19": {
3011
  "date": "2026-11-19",
3012
  "day": "THU",
 
3013
  "d": 52.4,
3014
  "s": 57.1,
3015
  "n": 57.1,
@@ -3022,6 +3284,7 @@
3022
  "2026-11-20": {
3023
  "date": "2026-11-20",
3024
  "day": "FRI",
 
3025
  "d": 61.9,
3026
  "s": 57.1,
3027
  "n": 66.7,
@@ -3034,6 +3297,7 @@
3034
  "2026-11-23": {
3035
  "date": "2026-11-23",
3036
  "day": "MON",
 
3037
  "d": 71.4,
3038
  "s": 66.7,
3039
  "n": 57.1,
@@ -3046,6 +3310,7 @@
3046
  "2026-11-24": {
3047
  "date": "2026-11-24",
3048
  "day": "TUE",
 
3049
  "d": 71.4,
3050
  "s": 61.9,
3051
  "n": 66.7,
@@ -3058,6 +3323,7 @@
3058
  "2026-11-25": {
3059
  "date": "2026-11-25",
3060
  "day": "WED",
 
3061
  "d": 66.7,
3062
  "s": 61.9,
3063
  "n": 66.7,
@@ -3070,6 +3336,7 @@
3070
  "2026-11-27": {
3071
  "date": "2026-11-27",
3072
  "day": "FRI",
 
3073
  "d": 61.9,
3074
  "s": 61.9,
3075
  "n": 57.1,
@@ -3082,6 +3349,7 @@
3082
  "2026-11-30": {
3083
  "date": "2026-11-30",
3084
  "day": "MON",
 
3085
  "d": 57.1,
3086
  "s": 52.4,
3087
  "n": 47.6,
@@ -3094,6 +3362,7 @@
3094
  "2026-12-01": {
3095
  "date": "2026-12-01",
3096
  "day": "TUE",
 
3097
  "d": 42.9,
3098
  "s": 42.9,
3099
  "n": 52.4,
@@ -3106,6 +3375,7 @@
3106
  "2026-12-02": {
3107
  "date": "2026-12-02",
3108
  "day": "WED",
 
3109
  "d": 38.1,
3110
  "s": 47.6,
3111
  "n": 52.4,
@@ -3118,6 +3388,7 @@
3118
  "2026-12-03": {
3119
  "date": "2026-12-03",
3120
  "day": "THU",
 
3121
  "d": 57.1,
3122
  "s": 52.4,
3123
  "n": 66.7,
@@ -3130,6 +3401,7 @@
3130
  "2026-12-04": {
3131
  "date": "2026-12-04",
3132
  "day": "FRI",
 
3133
  "d": 47.6,
3134
  "s": 47.6,
3135
  "n": 57.1,
@@ -3142,6 +3414,7 @@
3142
  "2026-12-07": {
3143
  "date": "2026-12-07",
3144
  "day": "MON",
 
3145
  "d": 66.7,
3146
  "s": 61.9,
3147
  "n": 57.1,
@@ -3154,6 +3427,7 @@
3154
  "2026-12-08": {
3155
  "date": "2026-12-08",
3156
  "day": "TUE",
 
3157
  "d": 61.9,
3158
  "s": 61.9,
3159
  "n": 66.7,
@@ -3166,6 +3440,7 @@
3166
  "2026-12-09": {
3167
  "date": "2026-12-09",
3168
  "day": "WED",
 
3169
  "d": 47.6,
3170
  "s": 52.4,
3171
  "n": 57.1,
@@ -3178,6 +3453,7 @@
3178
  "2026-12-10": {
3179
  "date": "2026-12-10",
3180
  "day": "THU",
 
3181
  "d": 57.1,
3182
  "s": 61.9,
3183
  "n": 57.1,
@@ -3190,6 +3466,7 @@
3190
  "2026-12-11": {
3191
  "date": "2026-12-11",
3192
  "day": "FRI",
 
3193
  "d": 61.9,
3194
  "s": 52.4,
3195
  "n": 42.9,
@@ -3202,6 +3479,7 @@
3202
  "2026-12-14": {
3203
  "date": "2026-12-14",
3204
  "day": "MON",
 
3205
  "d": 47.6,
3206
  "s": 42.9,
3207
  "n": 52.4,
@@ -3214,6 +3492,7 @@
3214
  "2026-12-15": {
3215
  "date": "2026-12-15",
3216
  "day": "TUE",
 
3217
  "d": 61.9,
3218
  "s": 61.9,
3219
  "n": 66.7,
@@ -3226,6 +3505,7 @@
3226
  "2026-12-16": {
3227
  "date": "2026-12-16",
3228
  "day": "WED",
 
3229
  "d": 42.9,
3230
  "s": 52.4,
3231
  "n": 52.4,
@@ -3238,6 +3518,7 @@
3238
  "2026-12-17": {
3239
  "date": "2026-12-17",
3240
  "day": "THU",
 
3241
  "d": 28.6,
3242
  "s": 33.3,
3243
  "n": 38.1,
@@ -3250,6 +3531,7 @@
3250
  "2026-12-18": {
3251
  "date": "2026-12-18",
3252
  "day": "FRI",
 
3253
  "d": 52.4,
3254
  "s": 47.6,
3255
  "n": 42.9,
@@ -3262,6 +3544,7 @@
3262
  "2026-12-21": {
3263
  "date": "2026-12-21",
3264
  "day": "MON",
 
3265
  "d": 71.4,
3266
  "s": 61.9,
3267
  "n": 61.9,
@@ -3274,6 +3557,7 @@
3274
  "2026-12-22": {
3275
  "date": "2026-12-22",
3276
  "day": "TUE",
 
3277
  "d": 66.7,
3278
  "s": 66.7,
3279
  "n": 66.7,
@@ -3286,6 +3570,7 @@
3286
  "2026-12-23": {
3287
  "date": "2026-12-23",
3288
  "day": "WED",
 
3289
  "d": 71.4,
3290
  "s": 66.7,
3291
  "n": 57.1,
@@ -3298,6 +3583,7 @@
3298
  "2026-12-24": {
3299
  "date": "2026-12-24",
3300
  "day": "THU",
 
3301
  "d": 52.4,
3302
  "s": 61.9,
3303
  "n": 76.2,
@@ -3310,6 +3596,7 @@
3310
  "2026-12-28": {
3311
  "date": "2026-12-28",
3312
  "day": "MON",
 
3313
  "d": 76.2,
3314
  "s": 66.7,
3315
  "n": 61.9,
@@ -3322,6 +3609,7 @@
3322
  "2026-12-29": {
3323
  "date": "2026-12-29",
3324
  "day": "TUE",
 
3325
  "d": 42.9,
3326
  "s": 47.6,
3327
  "n": 38.1,
@@ -3334,6 +3622,7 @@
3334
  "2026-12-30": {
3335
  "date": "2026-12-30",
3336
  "day": "WED",
 
3337
  "d": 42.9,
3338
  "s": 42.9,
3339
  "n": 38.1,
@@ -3346,6 +3635,7 @@
3346
  "2026-12-31": {
3347
  "date": "2026-12-31",
3348
  "day": "THU",
 
3349
  "d": 33.3,
3350
  "s": 28.6,
3351
  "n": 28.6,
 
2
  "meta": {
3
  "source": "Stock Trader's Almanac 2026 (Wiley)",
4
  "year": 2026,
5
+ "generated_at": "2026-04-05T10:29:48.765585Z"
6
  },
7
  "months": {
8
  "2026-01": {
 
343
  }
344
  },
345
  "daily": {
346
+ "2025-12-29": {
347
+ "date": "2025-12-29",
348
+ "day": "MON",
349
+ "source_month": "2026-01",
350
+ "d": 42.9,
351
+ "s": 47.6,
352
+ "n": 38.1,
353
+ "d_dir": "S",
354
+ "s_dir": "S",
355
+ "n_dir": "N",
356
+ "icon": null,
357
+ "notes": ""
358
+ },
359
+ "2025-12-30": {
360
+ "date": "2025-12-30",
361
+ "day": "TUE",
362
+ "source_month": "2026-01",
363
+ "d": 42.9,
364
+ "s": 42.9,
365
+ "n": 38.1,
366
+ "d_dir": "S",
367
+ "s_dir": "S",
368
+ "n_dir": "N",
369
+ "icon": null,
370
+ "notes": ""
371
+ },
372
+ "2025-12-31": {
373
+ "date": "2025-12-31",
374
+ "day": "WED",
375
+ "source_month": "2026-01",
376
+ "d": 33.3,
377
+ "s": 28.6,
378
+ "n": 28.6,
379
+ "d_dir": "N",
380
+ "s_dir": "N",
381
+ "n_dir": "N",
382
+ "icon": "bear",
383
+ "notes": "Last Trading Day of the Year, NASDAQ Down 19 of last 25"
384
+ },
385
  "2026-01-02": {
386
  "date": "2026-01-02",
387
  "day": "FRI",
388
+ "source_month": "2026-01",
389
  "d": 66.7,
390
  "s": 52.4,
391
  "n": 61.9,
 
398
  "2026-01-05": {
399
  "date": "2026-01-05",
400
  "day": "MON",
401
+ "source_month": "2026-01",
402
  "d": 61.9,
403
  "s": 47.6,
404
  "n": 38.1,
 
411
  "2026-01-06": {
412
  "date": "2026-01-06",
413
  "day": "TUE",
414
+ "source_month": "2026-01",
415
  "d": 47.6,
416
  "s": 52.4,
417
  "n": 47.6,
 
424
  "2026-01-07": {
425
  "date": "2026-01-07",
426
  "day": "WED",
427
+ "source_month": "2026-01",
428
  "d": 61.9,
429
  "s": 66.7,
430
  "n": 61.9,
 
437
  "2026-01-08": {
438
  "date": "2026-01-08",
439
  "day": "THU",
440
+ "source_month": "2026-01",
441
  "d": 42.9,
442
  "s": 52.4,
443
  "n": 71.4,
 
450
  "2026-01-09": {
451
  "date": "2026-01-09",
452
  "day": "FRI",
453
+ "source_month": "2026-01",
454
  "d": 52.4,
455
  "s": 57.1,
456
  "n": 66.7,
 
463
  "2026-01-12": {
464
  "date": "2026-01-12",
465
  "day": "MON",
466
+ "source_month": "2026-01",
467
  "d": 61.9,
468
  "s": 71.4,
469
  "n": 71.4,
 
476
  "2026-01-13": {
477
  "date": "2026-01-13",
478
  "day": "TUE",
479
+ "source_month": "2026-01",
480
  "d": 52.4,
481
  "s": 52.4,
482
  "n": 61.9,
 
489
  "2026-01-14": {
490
  "date": "2026-01-14",
491
  "day": "WED",
492
+ "source_month": "2026-01",
493
  "d": 47.6,
494
  "s": 52.4,
495
  "n": 47.6,
 
502
  "2026-01-15": {
503
  "date": "2026-01-15",
504
  "day": "THU",
505
+ "source_month": "2026-01",
506
  "d": 42.9,
507
  "s": 47.6,
508
  "n": 42.9,
 
515
  "2026-01-16": {
516
  "date": "2026-01-16",
517
  "day": "FRI",
518
+ "source_month": "2026-01",
519
  "d": 57.1,
520
  "s": 66.7,
521
  "n": 66.7,
 
528
  "2026-01-20": {
529
  "date": "2026-01-20",
530
  "day": "TUE",
531
+ "source_month": "2026-01",
532
  "d": 42.9,
533
  "s": 42.9,
534
  "n": 47.6,
 
541
  "2026-01-21": {
542
  "date": "2026-01-21",
543
  "day": "WED",
544
+ "source_month": "2026-01",
545
  "d": 52.4,
546
  "s": 61.9,
547
  "n": 47.6,
 
554
  "2026-01-22": {
555
  "date": "2026-01-22",
556
  "day": "THU",
557
+ "source_month": "2026-01",
558
  "d": 42.9,
559
  "s": 57.1,
560
  "n": 52.4,
 
567
  "2026-01-23": {
568
  "date": "2026-01-23",
569
  "day": "FRI",
570
+ "source_month": "2026-01",
571
  "d": 47.6,
572
  "s": 52.4,
573
  "n": 66.7,
 
580
  "2026-01-26": {
581
  "date": "2026-01-26",
582
  "day": "MON",
583
+ "source_month": "2026-01",
584
  "d": 57.1,
585
  "s": 61.9,
586
  "n": 57.1,
 
593
  "2026-01-27": {
594
  "date": "2026-01-27",
595
  "day": "TUE",
596
+ "source_month": "2026-01",
597
  "d": 57.1,
598
  "s": 47.6,
599
  "n": 61.9,
 
606
  "2026-01-28": {
607
  "date": "2026-01-28",
608
  "day": "WED",
609
+ "source_month": "2026-01",
610
  "d": 52.4,
611
  "s": 42.9,
612
  "n": 57.1,
 
619
  "2026-01-29": {
620
  "date": "2026-01-29",
621
  "day": "THU",
622
+ "source_month": "2026-01",
623
  "d": 47.6,
624
  "s": 47.6,
625
  "n": 42.9,
 
632
  "2026-01-30": {
633
  "date": "2026-01-30",
634
  "day": "FRI",
635
+ "source_month": "2026-01",
636
  "d": 38.1,
637
  "s": 42.9,
638
  "n": 52.4,
 
645
  "2026-02-02": {
646
  "date": "2026-02-02",
647
  "day": "MON",
648
+ "source_month": "2026-02",
649
  "d": 85.7,
650
  "s": 81.0,
651
  "n": 81.0,
 
658
  "2026-02-03": {
659
  "date": "2026-02-03",
660
  "day": "TUE",
661
+ "source_month": "2026-02",
662
  "d": 57.1,
663
  "s": 71.4,
664
  "n": 66.7,
 
671
  "2026-02-04": {
672
  "date": "2026-02-04",
673
  "day": "WED",
674
+ "source_month": "2026-02",
675
  "d": 47.6,
676
  "s": 38.1,
677
  "n": 33.3,
 
684
  "2026-02-05": {
685
  "date": "2026-02-05",
686
  "day": "THU",
687
+ "source_month": "2026-02",
688
  "d": 66.7,
689
  "s": 71.4,
690
  "n": 61.9,
 
697
  "2026-02-06": {
698
  "date": "2026-02-06",
699
  "day": "FRI",
700
+ "source_month": "2026-02",
701
  "d": 61.9,
702
  "s": 57.1,
703
  "n": 57.1,
 
710
  "2026-02-09": {
711
  "date": "2026-02-09",
712
  "day": "MON",
713
+ "source_month": "2026-02",
714
  "d": 47.6,
715
  "s": 61.9,
716
  "n": 61.9,
 
723
  "2026-02-10": {
724
  "date": "2026-02-10",
725
  "day": "TUE",
726
+ "source_month": "2026-02",
727
  "d": 52.4,
728
  "s": 57.1,
729
  "n": 61.9,
 
736
  "2026-02-11": {
737
  "date": "2026-02-11",
738
  "day": "WED",
739
+ "source_month": "2026-02",
740
  "d": 61.9,
741
  "s": 57.1,
742
  "n": 57.1,
 
749
  "2026-02-12": {
750
  "date": "2026-02-12",
751
  "day": "THU",
752
+ "source_month": "2026-02",
753
  "d": 57.1,
754
  "s": 71.4,
755
  "n": 71.4,
 
762
  "2026-02-13": {
763
  "date": "2026-02-13",
764
  "day": "FRI",
765
+ "source_month": "2026-02",
766
  "d": 47.6,
767
  "s": 61.9,
768
  "n": 81.0,
 
775
  "2026-02-17": {
776
  "date": "2026-02-17",
777
  "day": "TUE",
778
+ "source_month": "2026-02",
779
  "d": 71.4,
780
  "s": 71.4,
781
  "n": 71.4,
 
788
  "2026-02-18": {
789
  "date": "2026-02-18",
790
  "day": "WED",
791
+ "source_month": "2026-02",
792
  "d": 61.9,
793
  "s": 52.4,
794
  "n": 42.9,
 
801
  "2026-02-19": {
802
  "date": "2026-02-19",
803
  "day": "THU",
804
+ "source_month": "2026-02",
805
  "d": 42.9,
806
  "s": 38.1,
807
  "n": 38.1,
 
814
  "2026-02-20": {
815
  "date": "2026-02-20",
816
  "day": "FRI",
817
+ "source_month": "2026-02",
818
  "d": 38.1,
819
  "s": 33.3,
820
  "n": 33.3,
 
827
  "2026-02-23": {
828
  "date": "2026-02-23",
829
  "day": "MON",
830
+ "source_month": "2026-02",
831
  "d": 47.6,
832
  "s": 38.1,
833
  "n": 42.9,
 
840
  "2026-02-24": {
841
  "date": "2026-02-24",
842
  "day": "TUE",
843
+ "source_month": "2026-02",
844
  "d": 47.6,
845
  "s": 52.4,
846
  "n": 42.9,
 
853
  "2026-02-25": {
854
  "date": "2026-02-25",
855
  "day": "WED",
856
+ "source_month": "2026-02",
857
  "d": 57.1,
858
  "s": 61.9,
859
  "n": 76.2,
 
866
  "2026-02-26": {
867
  "date": "2026-02-26",
868
  "day": "THU",
869
+ "source_month": "2026-02",
870
  "d": 42.9,
871
  "s": 47.6,
872
  "n": 61.9,
 
879
  "2026-02-27": {
880
  "date": "2026-02-27",
881
  "day": "FRI",
882
+ "source_month": "2026-02",
883
  "d": 28.6,
884
  "s": 28.6,
885
  "n": 33.3,
 
892
  "2026-03-02": {
893
  "date": "2026-03-02",
894
  "day": "MON",
895
+ "source_month": "2026-03",
896
  "d": 66.7,
897
  "s": 66.7,
898
  "n": 61.9,
 
905
  "2026-03-03": {
906
  "date": "2026-03-03",
907
  "day": "TUE",
908
+ "source_month": "2026-03",
909
  "d": 33.3,
910
  "s": 38.1,
911
  "n": 42.9,
 
918
  "2026-03-04": {
919
  "date": "2026-03-04",
920
  "day": "WED",
921
+ "source_month": "2026-03",
922
  "d": 52.4,
923
  "s": 57.1,
924
  "n": 47.6,
 
931
  "2026-03-05": {
932
  "date": "2026-03-05",
933
  "day": "THU",
934
+ "source_month": "2026-03",
935
  "d": 47.6,
936
  "s": 52.4,
937
  "n": 38.1,
 
944
  "2026-03-06": {
945
  "date": "2026-03-06",
946
  "day": "FRI",
947
+ "source_month": "2026-03",
948
  "d": 47.6,
949
  "s": 47.6,
950
  "n": 33.3,
 
957
  "2026-03-09": {
958
  "date": "2026-03-09",
959
  "day": "MON",
960
+ "source_month": "2026-03",
961
  "d": 38.1,
962
  "s": 38.1,
963
  "n": 42.9,
 
970
  "2026-03-10": {
971
  "date": "2026-03-10",
972
  "day": "TUE",
973
+ "source_month": "2026-03",
974
  "d": 66.7,
975
  "s": 61.9,
976
  "n": 57.1,
 
983
  "2026-03-11": {
984
  "date": "2026-03-11",
985
  "day": "WED",
986
+ "source_month": "2026-03",
987
  "d": 47.6,
988
  "s": 57.1,
989
  "n": 42.9,
 
996
  "2026-03-12": {
997
  "date": "2026-03-12",
998
  "day": "THU",
999
+ "source_month": "2026-03",
1000
  "d": 52.4,
1001
  "s": 57.1,
1002
  "n": 61.9,
 
1009
  "2026-03-13": {
1010
  "date": "2026-03-13",
1011
  "day": "FRI",
1012
+ "source_month": "2026-03",
1013
  "d": 66.7,
1014
  "s": 42.9,
1015
  "n": 47.6,
 
1022
  "2026-03-16": {
1023
  "date": "2026-03-16",
1024
  "day": "MON",
1025
+ "source_month": "2026-03",
1026
  "d": 61.9,
1027
  "s": 47.6,
1028
  "n": 47.6,
 
1035
  "2026-03-17": {
1036
  "date": "2026-03-17",
1037
  "day": "TUE",
1038
+ "source_month": "2026-03",
1039
  "d": 61.9,
1040
  "s": 66.7,
1041
  "n": 71.4,
 
1048
  "2026-03-18": {
1049
  "date": "2026-03-18",
1050
  "day": "WED",
1051
+ "source_month": "2026-03",
1052
  "d": 61.9,
1053
  "s": 61.9,
1054
  "n": 71.4,
 
1061
  "2026-03-19": {
1062
  "date": "2026-03-19",
1063
  "day": "THU",
1064
+ "source_month": "2026-03",
1065
  "d": 61.9,
1066
  "s": 52.4,
1067
  "n": 76.2,
 
1074
  "2026-03-20": {
1075
  "date": "2026-03-20",
1076
  "day": "FRI",
1077
+ "source_month": "2026-03",
1078
  "d": 52.4,
1079
  "s": 52.4,
1080
  "n": 61.9,
 
1087
  "2026-03-23": {
1088
  "date": "2026-03-23",
1089
  "day": "MON",
1090
+ "source_month": "2026-03",
1091
  "d": 42.9,
1092
  "s": 38.1,
1093
  "n": 42.9,
 
1100
  "2026-03-24": {
1101
  "date": "2026-03-24",
1102
  "day": "TUE",
1103
+ "source_month": "2026-03",
1104
  "d": 42.9,
1105
  "s": 47.6,
1106
  "n": 52.4,
 
1113
  "2026-03-25": {
1114
  "date": "2026-03-25",
1115
  "day": "WED",
1116
+ "source_month": "2026-03",
1117
  "d": 61.9,
1118
  "s": 57.1,
1119
  "n": 66.7,
 
1126
  "2026-03-26": {
1127
  "date": "2026-03-26",
1128
  "day": "THU",
1129
+ "source_month": "2026-03",
1130
  "d": 47.6,
1131
  "s": 47.6,
1132
  "n": 38.1,
 
1139
  "2026-03-27": {
1140
  "date": "2026-03-27",
1141
  "day": "FRI",
1142
+ "source_month": "2026-03",
1143
  "d": 47.6,
1144
  "s": 47.6,
1145
  "n": 47.6,
 
1152
  "2026-03-30": {
1153
  "date": "2026-03-30",
1154
  "day": "MON",
1155
+ "source_month": "2026-04",
1156
  "d": 66.7,
1157
  "s": 61.9,
1158
  "n": 71.4,
 
1165
  "2026-03-31": {
1166
  "date": "2026-03-31",
1167
  "day": "TUE",
1168
+ "source_month": "2026-04",
1169
  "d": 47.6,
1170
  "s": 47.6,
1171
  "n": 52.4,
 
1178
  "2026-04-01": {
1179
  "date": "2026-04-01",
1180
  "day": "WED",
1181
+ "source_month": "2026-04",
1182
  "d": 66.7,
1183
  "s": 66.7,
1184
  "n": 61.9,
 
1191
  "2026-04-02": {
1192
  "date": "2026-04-02",
1193
  "day": "THU",
1194
+ "source_month": "2026-04",
1195
  "d": 71.4,
1196
  "s": 76.2,
1197
  "n": 71.4,
 
1204
  "2026-04-06": {
1205
  "date": "2026-04-06",
1206
  "day": "MON",
1207
+ "source_month": "2026-04",
1208
  "d": 47.6,
1209
  "s": 52.4,
1210
  "n": 57.1,
 
1217
  "2026-04-07": {
1218
  "date": "2026-04-07",
1219
  "day": "TUE",
1220
+ "source_month": "2026-04",
1221
  "d": 57.1,
1222
  "s": 57.1,
1223
  "n": 52.4,
 
1230
  "2026-04-08": {
1231
  "date": "2026-04-08",
1232
  "day": "WED",
1233
+ "source_month": "2026-04",
1234
  "d": 47.6,
1235
  "s": 47.6,
1236
  "n": 33.3,
 
1243
  "2026-04-09": {
1244
  "date": "2026-04-09",
1245
  "day": "THU",
1246
+ "source_month": "2026-04",
1247
  "d": 66.7,
1248
  "s": 61.9,
1249
  "n": 66.7,
 
1256
  "2026-04-10": {
1257
  "date": "2026-04-10",
1258
  "day": "FRI",
1259
+ "source_month": "2026-04",
1260
  "d": 47.6,
1261
  "s": 52.4,
1262
  "n": 47.6,
 
1269
  "2026-04-13": {
1270
  "date": "2026-04-13",
1271
  "day": "MON",
1272
+ "source_month": "2026-04",
1273
  "d": 47.6,
1274
  "s": 57.1,
1275
  "n": 61.9,
 
1282
  "2026-04-14": {
1283
  "date": "2026-04-14",
1284
  "day": "TUE",
1285
+ "source_month": "2026-04",
1286
  "d": 52.4,
1287
  "s": 57.1,
1288
  "n": 47.6,
 
1295
  "2026-04-15": {
1296
  "date": "2026-04-15",
1297
  "day": "WED",
1298
+ "source_month": "2026-04",
1299
  "d": 61.9,
1300
  "s": 57.1,
1301
  "n": 42.9,
 
1308
  "2026-04-16": {
1309
  "date": "2026-04-16",
1310
  "day": "THU",
1311
+ "source_month": "2026-04",
1312
  "d": 52.4,
1313
  "s": 57.1,
1314
  "n": 42.9,
 
1321
  "2026-04-17": {
1322
  "date": "2026-04-17",
1323
  "day": "FRI",
1324
+ "source_month": "2026-04",
1325
  "d": 61.9,
1326
  "s": 66.7,
1327
  "n": 66.7,
 
1334
  "2026-04-20": {
1335
  "date": "2026-04-20",
1336
  "day": "MON",
1337
+ "source_month": "2026-04",
1338
  "d": 47.6,
1339
  "s": 47.6,
1340
  "n": 33.3,
 
1347
  "2026-04-21": {
1348
  "date": "2026-04-21",
1349
  "day": "TUE",
1350
+ "source_month": "2026-04",
1351
  "d": 66.7,
1352
  "s": 52.4,
1353
  "n": 57.1,
 
1360
  "2026-04-22": {
1361
  "date": "2026-04-22",
1362
  "day": "WED",
1363
+ "source_month": "2026-04",
1364
  "d": 61.9,
1365
  "s": 66.7,
1366
  "n": 61.9,
 
1373
  "2026-04-23": {
1374
  "date": "2026-04-23",
1375
  "day": "THU",
1376
+ "source_month": "2026-04",
1377
  "d": 66.7,
1378
  "s": 61.9,
1379
  "n": 52.4,
 
1386
  "2026-04-24": {
1387
  "date": "2026-04-24",
1388
  "day": "FRI",
1389
+ "source_month": "2026-04",
1390
  "d": 52.4,
1391
  "s": 61.9,
1392
  "n": 61.9,
 
1399
  "2026-04-27": {
1400
  "date": "2026-04-27",
1401
  "day": "MON",
1402
+ "source_month": "2026-05",
1403
  "d": 52.4,
1404
  "s": 47.6,
1405
  "n": 33.3,
 
1412
  "2026-04-28": {
1413
  "date": "2026-04-28",
1414
  "day": "TUE",
1415
+ "source_month": "2026-05",
1416
  "d": 66.7,
1417
  "s": 57.1,
1418
  "n": 52.4,
 
1425
  "2026-04-29": {
1426
  "date": "2026-04-29",
1427
  "day": "WED",
1428
+ "source_month": "2026-05",
1429
  "d": 71.4,
1430
  "s": 71.4,
1431
  "n": 81.0,
 
1438
  "2026-04-30": {
1439
  "date": "2026-04-30",
1440
  "day": "THU",
1441
+ "source_month": "2026-05",
1442
  "d": 28.6,
1443
  "s": 33.3,
1444
  "n": 28.6,
 
1451
  "2026-05-01": {
1452
  "date": "2026-05-01",
1453
  "day": "FRI",
1454
+ "source_month": "2026-05",
1455
  "d": 57.1,
1456
  "s": 61.9,
1457
  "n": 61.9,
 
1464
  "2026-05-04": {
1465
  "date": "2026-05-04",
1466
  "day": "MON",
1467
+ "source_month": "2026-05",
1468
  "d": 66.7,
1469
  "s": 52.4,
1470
  "n": 57.1,
 
1477
  "2026-05-05": {
1478
  "date": "2026-05-05",
1479
  "day": "TUE",
1480
+ "source_month": "2026-05",
1481
  "d": 52.4,
1482
  "s": 47.6,
1483
  "n": 42.9,
 
1490
  "2026-05-06": {
1491
  "date": "2026-05-06",
1492
  "day": "WED",
1493
+ "source_month": "2026-05",
1494
  "d": 38.1,
1495
  "s": 42.9,
1496
  "n": 47.6,
 
1503
  "2026-05-07": {
1504
  "date": "2026-05-07",
1505
  "day": "THU",
1506
+ "source_month": "2026-05",
1507
  "d": 66.7,
1508
  "s": 66.7,
1509
  "n": 57.1,
 
1516
  "2026-05-08": {
1517
  "date": "2026-05-08",
1518
  "day": "FRI",
1519
+ "source_month": "2026-05",
1520
  "d": 66.7,
1521
  "s": 52.4,
1522
  "n": 66.7,
 
1529
  "2026-05-11": {
1530
  "date": "2026-05-11",
1531
  "day": "MON",
1532
+ "source_month": "2026-05",
1533
  "d": 38.1,
1534
  "s": 47.6,
1535
  "n": 52.4,
 
1542
  "2026-05-12": {
1543
  "date": "2026-05-12",
1544
  "day": "TUE",
1545
+ "source_month": "2026-05",
1546
  "d": 57.1,
1547
  "s": 57.1,
1548
  "n": 42.9,
 
1555
  "2026-05-13": {
1556
  "date": "2026-05-13",
1557
  "day": "WED",
1558
+ "source_month": "2026-05",
1559
  "d": 28.6,
1560
  "s": 28.6,
1561
  "n": 52.4,
 
1568
  "2026-05-14": {
1569
  "date": "2026-05-14",
1570
  "day": "THU",
1571
+ "source_month": "2026-05",
1572
  "d": 57.1,
1573
  "s": 47.6,
1574
  "n": 57.1,
 
1581
  "2026-05-15": {
1582
  "date": "2026-05-15",
1583
  "day": "FRI",
1584
+ "source_month": "2026-05",
1585
  "d": 66.7,
1586
  "s": 57.1,
1587
  "n": 47.6,
 
1594
  "2026-05-18": {
1595
  "date": "2026-05-18",
1596
  "day": "MON",
1597
+ "source_month": "2026-05",
1598
  "d": 47.6,
1599
  "s": 52.4,
1600
  "n": 57.1,
 
1607
  "2026-05-19": {
1608
  "date": "2026-05-19",
1609
  "day": "TUE",
1610
+ "source_month": "2026-05",
1611
  "d": 38.1,
1612
  "s": 38.1,
1613
  "n": 38.1,
 
1620
  "2026-05-20": {
1621
  "date": "2026-05-20",
1622
  "day": "WED",
1623
+ "source_month": "2026-05",
1624
  "d": 38.1,
1625
  "s": 42.9,
1626
  "n": 42.9,
 
1633
  "2026-05-21": {
1634
  "date": "2026-05-21",
1635
  "day": "THU",
1636
+ "source_month": "2026-05",
1637
  "d": 47.6,
1638
  "s": 47.6,
1639
  "n": 47.6,
 
1646
  "2026-05-22": {
1647
  "date": "2026-05-22",
1648
  "day": "FRI",
1649
+ "source_month": "2026-05",
1650
  "d": 47.6,
1651
  "s": 52.4,
1652
  "n": 47.6,
 
1659
  "2026-05-26": {
1660
  "date": "2026-05-26",
1661
  "day": "TUE",
1662
+ "source_month": "2026-05",
1663
  "d": 57.1,
1664
  "s": 71.4,
1665
  "n": 71.4,
 
1672
  "2026-05-27": {
1673
  "date": "2026-05-27",
1674
  "day": "WED",
1675
+ "source_month": "2026-05",
1676
  "d": 52.4,
1677
  "s": 61.9,
1678
  "n": 66.7,
 
1685
  "2026-05-28": {
1686
  "date": "2026-05-28",
1687
  "day": "THU",
1688
+ "source_month": "2026-05",
1689
  "d": 66.7,
1690
  "s": 71.4,
1691
  "n": 66.7,
 
1698
  "2026-05-29": {
1699
  "date": "2026-05-29",
1700
  "day": "FRI",
1701
+ "source_month": "2026-05",
1702
  "d": 28.6,
1703
  "s": 42.9,
1704
  "n": 42.9,
 
1711
  "2026-06-01": {
1712
  "date": "2026-06-01",
1713
  "day": "MON",
1714
+ "source_month": "2026-06",
1715
  "d": 71.4,
1716
  "s": 66.7,
1717
  "n": 61.9,
 
1724
  "2026-06-02": {
1725
  "date": "2026-06-02",
1726
  "day": "TUE",
1727
+ "source_month": "2026-06",
1728
  "d": 66.7,
1729
  "s": 76.2,
1730
  "n": 71.4,
 
1737
  "2026-06-03": {
1738
  "date": "2026-06-03",
1739
  "day": "WED",
1740
+ "source_month": "2026-06",
1741
  "d": 33.3,
1742
  "s": 38.1,
1743
  "n": 42.9,
 
1750
  "2026-06-04": {
1751
  "date": "2026-06-04",
1752
  "day": "THU",
1753
+ "source_month": "2026-06",
1754
  "d": 71.4,
1755
  "s": 61.9,
1756
  "n": 61.9,
 
1763
  "2026-06-05": {
1764
  "date": "2026-06-05",
1765
  "day": "FRI",
1766
+ "source_month": "2026-06",
1767
  "d": 61.9,
1768
  "s": 38.1,
1769
  "n": 42.9,
 
1776
  "2026-06-08": {
1777
  "date": "2026-06-08",
1778
  "day": "MON",
1779
+ "source_month": "2026-06",
1780
  "d": 71.4,
1781
  "s": 71.4,
1782
  "n": 61.9,
 
1789
  "2026-06-09": {
1790
  "date": "2026-06-09",
1791
  "day": "TUE",
1792
+ "source_month": "2026-06",
1793
  "d": 38.1,
1794
  "s": 38.1,
1795
  "n": 38.1,
 
1802
  "2026-06-10": {
1803
  "date": "2026-06-10",
1804
  "day": "WED",
1805
+ "source_month": "2026-06",
1806
  "d": 33.3,
1807
  "s": 38.1,
1808
  "n": 42.9,
 
1815
  "2026-06-11": {
1816
  "date": "2026-06-11",
1817
  "day": "THU",
1818
+ "source_month": "2026-06",
1819
  "d": 57.1,
1820
  "s": 61.9,
1821
  "n": 57.1,
 
1828
  "2026-06-12": {
1829
  "date": "2026-06-12",
1830
  "day": "FRI",
1831
+ "source_month": "2026-06",
1832
  "d": 52.4,
1833
  "s": 61.9,
1834
  "n": 71.4,
 
1841
  "2026-06-15": {
1842
  "date": "2026-06-15",
1843
  "day": "MON",
1844
+ "source_month": "2026-06",
1845
  "d": 57.1,
1846
  "s": 66.7,
1847
  "n": 66.7,
 
1854
  "2026-06-16": {
1855
  "date": "2026-06-16",
1856
  "day": "TUE",
1857
+ "source_month": "2026-06",
1858
  "d": 52.4,
1859
  "s": 52.4,
1860
  "n": 52.4,
 
1867
  "2026-06-17": {
1868
  "date": "2026-06-17",
1869
  "day": "WED",
1870
+ "source_month": "2026-06",
1871
  "d": 52.4,
1872
  "s": 52.4,
1873
  "n": 61.9,
 
1880
  "2026-06-18": {
1881
  "date": "2026-06-18",
1882
  "day": "THU",
1883
+ "source_month": "2026-06",
1884
  "d": 52.4,
1885
  "s": 52.4,
1886
  "n": 47.6,
 
1893
  "2026-06-22": {
1894
  "date": "2026-06-22",
1895
  "day": "MON",
1896
+ "source_month": "2026-06",
1897
  "d": 38.1,
1898
  "s": 42.9,
1899
  "n": 47.6,
 
1906
  "2026-06-23": {
1907
  "date": "2026-06-23",
1908
  "day": "TUE",
1909
+ "source_month": "2026-06",
1910
  "d": 47.6,
1911
  "s": 52.4,
1912
  "n": 47.6,
 
1919
  "2026-06-24": {
1920
  "date": "2026-06-24",
1921
  "day": "WED",
1922
+ "source_month": "2026-06",
1923
  "d": 28.6,
1924
  "s": 23.8,
1925
  "n": 19.0,
 
1932
  "2026-06-25": {
1933
  "date": "2026-06-25",
1934
  "day": "THU",
1935
+ "source_month": "2026-06",
1936
  "d": 47.6,
1937
  "s": 57.1,
1938
  "n": 57.1,
 
1945
  "2026-06-26": {
1946
  "date": "2026-06-26",
1947
  "day": "FRI",
1948
+ "source_month": "2026-06",
1949
  "d": 47.6,
1950
  "s": 47.6,
1951
  "n": 61.9,
 
1958
  "2026-06-29": {
1959
  "date": "2026-06-29",
1960
  "day": "MON",
1961
+ "source_month": "2026-07",
1962
  "d": 61.9,
1963
  "s": 61.9,
1964
  "n": 61.9,
 
1971
  "2026-06-30": {
1972
  "date": "2026-06-30",
1973
  "day": "TUE",
1974
+ "source_month": "2026-07",
1975
  "d": 57.1,
1976
  "s": 57.1,
1977
  "n": 52.4,
 
1984
  "2026-07-01": {
1985
  "date": "2026-07-01",
1986
  "day": "WED",
1987
+ "source_month": "2026-07",
1988
  "d": 81.0,
1989
  "s": 85.0,
1990
  "n": 85.7,
 
1997
  "2026-07-02": {
1998
  "date": "2026-07-02",
1999
  "day": "THU",
2000
+ "source_month": "2026-07",
2001
  "d": 38.1,
2002
  "s": 47.6,
2003
  "n": 47.6,
 
2010
  "2026-07-06": {
2011
  "date": "2026-07-06",
2012
  "day": "MON",
2013
+ "source_month": "2026-07",
2014
  "d": 57.1,
2015
  "s": 66.7,
2016
  "n": 66.7,
 
2023
  "2026-07-07": {
2024
  "date": "2026-07-07",
2025
  "day": "TUE",
2026
+ "source_month": "2026-07",
2027
  "d": 57.1,
2028
  "s": 57.1,
2029
  "n": 61.9,
 
2036
  "2026-07-08": {
2037
  "date": "2026-07-08",
2038
  "day": "WED",
2039
+ "source_month": "2026-07",
2040
  "d": 52.4,
2041
  "s": 57.1,
2042
  "n": 61.9,
 
2049
  "2026-07-09": {
2050
  "date": "2026-07-09",
2051
  "day": "THU",
2052
+ "source_month": "2026-07",
2053
  "d": 61.9,
2054
  "s": 66.7,
2055
  "n": 76.2,
 
2062
  "2026-07-10": {
2063
  "date": "2026-07-10",
2064
  "day": "FRI",
2065
+ "source_month": "2026-07",
2066
  "d": 57.1,
2067
  "s": 66.7,
2068
  "n": 66.7,
 
2075
  "2026-07-13": {
2076
  "date": "2026-07-13",
2077
  "day": "MON",
2078
+ "source_month": "2026-07",
2079
  "d": 76.2,
2080
  "s": 66.7,
2081
  "n": 52.4,
 
2088
  "2026-07-14": {
2089
  "date": "2026-07-14",
2090
  "day": "TUE",
2091
+ "source_month": "2026-07",
2092
  "d": 76.2,
2093
  "s": 66.7,
2094
  "n": 71.4,
 
2101
  "2026-07-15": {
2102
  "date": "2026-07-15",
2103
  "day": "WED",
2104
+ "source_month": "2026-07",
2105
  "d": 71.4,
2106
  "s": 47.6,
2107
  "n": 57.1,
 
2114
  "2026-07-16": {
2115
  "date": "2026-07-16",
2116
  "day": "THU",
2117
+ "source_month": "2026-07",
2118
  "d": 52.4,
2119
  "s": 52.4,
2120
  "n": 57.1,
 
2127
  "2026-07-17": {
2128
  "date": "2026-07-17",
2129
  "day": "FRI",
2130
+ "source_month": "2026-07",
2131
  "d": 66.7,
2132
  "s": 61.9,
2133
  "n": 66.7,
 
2140
  "2026-07-20": {
2141
  "date": "2026-07-20",
2142
  "day": "MON",
2143
+ "source_month": "2026-07",
2144
  "d": 76.2,
2145
  "s": 71.4,
2146
  "n": 71.4,
 
2153
  "2026-07-21": {
2154
  "date": "2026-07-21",
2155
  "day": "TUE",
2156
+ "source_month": "2026-07",
2157
  "d": 28.6,
2158
  "s": 33.3,
2159
  "n": 19.0,
 
2166
  "2026-07-22": {
2167
  "date": "2026-07-22",
2168
  "day": "WED",
2169
+ "source_month": "2026-07",
2170
  "d": 52.4,
2171
  "s": 47.6,
2172
  "n": 57.1,
 
2179
  "2026-07-23": {
2180
  "date": "2026-07-23",
2181
  "day": "THU",
2182
+ "source_month": "2026-07",
2183
  "d": 52.4,
2184
  "s": 57.1,
2185
  "n": 52.4,
 
2192
  "2026-07-24": {
2193
  "date": "2026-07-24",
2194
  "day": "FRI",
2195
+ "source_month": "2026-07",
2196
  "d": 38.1,
2197
  "s": 52.4,
2198
  "n": 47.6,
 
2205
  "2026-07-27": {
2206
  "date": "2026-07-27",
2207
  "day": "MON",
2208
+ "source_month": "2026-08",
2209
  "d": 66.7,
2210
  "s": 57.1,
2211
  "n": 52.4,
 
2218
  "2026-07-28": {
2219
  "date": "2026-07-28",
2220
  "day": "TUE",
2221
+ "source_month": "2026-08",
2222
  "d": 52.4,
2223
  "s": 47.6,
2224
  "n": 47.6,
 
2231
  "2026-07-29": {
2232
  "date": "2026-07-29",
2233
  "day": "WED",
2234
+ "source_month": "2026-08",
2235
  "d": 42.9,
2236
  "s": 38.1,
2237
  "n": 42.9,
 
2244
  "2026-07-30": {
2245
  "date": "2026-07-30",
2246
  "day": "THU",
2247
+ "source_month": "2026-08",
2248
  "d": 52.4,
2249
  "s": 61.9,
2250
  "n": 71.4,
 
2257
  "2026-07-31": {
2258
  "date": "2026-07-31",
2259
  "day": "FRI",
2260
+ "source_month": "2026-08",
2261
  "d": 38.1,
2262
  "s": 42.9,
2263
  "n": 42.9,
 
2270
  "2026-08-03": {
2271
  "date": "2026-08-03",
2272
  "day": "MON",
2273
+ "source_month": "2026-08",
2274
  "d": 38.1,
2275
  "s": 38.1,
2276
  "n": 52.4,
 
2283
  "2026-08-04": {
2284
  "date": "2026-08-04",
2285
  "day": "TUE",
2286
+ "source_month": "2026-08",
2287
  "d": 42.9,
2288
  "s": 47.6,
2289
  "n": 42.9,
 
2296
  "2026-08-05": {
2297
  "date": "2026-08-05",
2298
  "day": "WED",
2299
+ "source_month": "2026-08",
2300
  "d": 57.1,
2301
  "s": 52.4,
2302
  "n": 57.1,
 
2309
  "2026-08-06": {
2310
  "date": "2026-08-06",
2311
  "day": "THU",
2312
+ "source_month": "2026-08",
2313
  "d": 47.6,
2314
  "s": 52.4,
2315
  "n": 57.1,
 
2322
  "2026-08-07": {
2323
  "date": "2026-08-07",
2324
  "day": "FRI",
2325
+ "source_month": "2026-08",
2326
  "d": 52.4,
2327
  "s": 47.6,
2328
  "n": 38.1,
 
2335
  "2026-08-10": {
2336
  "date": "2026-08-10",
2337
  "day": "MON",
2338
+ "source_month": "2026-08",
2339
  "d": 52.4,
2340
  "s": 52.4,
2341
  "n": 47.6,
 
2348
  "2026-08-11": {
2349
  "date": "2026-08-11",
2350
  "day": "TUE",
2351
+ "source_month": "2026-08",
2352
  "d": 38.1,
2353
  "s": 42.9,
2354
  "n": 42.9,
 
2361
  "2026-08-12": {
2362
  "date": "2026-08-12",
2363
  "day": "WED",
2364
+ "source_month": "2026-08",
2365
  "d": 33.3,
2366
  "s": 47.6,
2367
  "n": 42.9,
 
2374
  "2026-08-13": {
2375
  "date": "2026-08-13",
2376
  "day": "THU",
2377
+ "source_month": "2026-08",
2378
  "d": 61.9,
2379
  "s": 47.6,
2380
  "n": 57.1,
 
2387
  "2026-08-14": {
2388
  "date": "2026-08-14",
2389
  "day": "FRI",
2390
+ "source_month": "2026-08",
2391
  "d": 66.7,
2392
  "s": 57.1,
2393
  "n": 61.9,
 
2400
  "2026-08-17": {
2401
  "date": "2026-08-17",
2402
  "day": "MON",
2403
+ "source_month": "2026-08",
2404
  "d": 57.1,
2405
  "s": 66.7,
2406
  "n": 57.1,
 
2413
  "2026-08-18": {
2414
  "date": "2026-08-18",
2415
  "day": "TUE",
2416
+ "source_month": "2026-08",
2417
  "d": 52.4,
2418
  "s": 61.9,
2419
  "n": 52.4,
 
2426
  "2026-08-19": {
2427
  "date": "2026-08-19",
2428
  "day": "WED",
2429
+ "source_month": "2026-08",
2430
  "d": 61.9,
2431
  "s": 61.9,
2432
  "n": 57.1,
 
2439
  "2026-08-20": {
2440
  "date": "2026-08-20",
2441
  "day": "THU",
2442
+ "source_month": "2026-08",
2443
  "d": 52.4,
2444
  "s": 47.6,
2445
  "n": 47.6,
 
2452
  "2026-08-21": {
2453
  "date": "2026-08-21",
2454
  "day": "FRI",
2455
+ "source_month": "2026-08",
2456
  "d": 47.6,
2457
  "s": 42.9,
2458
  "n": 42.9,
 
2465
  "2026-08-24": {
2466
  "date": "2026-08-24",
2467
  "day": "MON",
2468
+ "source_month": "2026-08",
2469
  "d": 61.9,
2470
  "s": 57.1,
2471
  "n": 57.1,
 
2478
  "2026-08-25": {
2479
  "date": "2026-08-25",
2480
  "day": "TUE",
2481
+ "source_month": "2026-08",
2482
  "d": 57.1,
2483
  "s": 57.1,
2484
  "n": 61.9,
 
2491
  "2026-08-26": {
2492
  "date": "2026-08-26",
2493
  "day": "WED",
2494
+ "source_month": "2026-08",
2495
  "d": 47.6,
2496
  "s": 57.1,
2497
  "n": 57.1,
 
2504
  "2026-08-27": {
2505
  "date": "2026-08-27",
2506
  "day": "THU",
2507
+ "source_month": "2026-08",
2508
  "d": 90.5,
2509
  "s": 90.5,
2510
  "n": 81.0,
 
2517
  "2026-08-28": {
2518
  "date": "2026-08-28",
2519
  "day": "FRI",
2520
+ "source_month": "2026-08",
2521
  "d": 42.9,
2522
  "s": 42.9,
2523
  "n": 57.1,
 
2530
  "2026-08-31": {
2531
  "date": "2026-08-31",
2532
  "day": "MON",
2533
+ "source_month": "2026-09",
2534
  "d": 47.6,
2535
  "s": 52.4,
2536
  "n": 52.4,
 
2543
  "2026-09-01": {
2544
  "date": "2026-09-01",
2545
  "day": "TUE",
2546
+ "source_month": "2026-09",
2547
  "d": 42.9,
2548
  "s": 52.4,
2549
  "n": 52.4,
 
2556
  "2026-09-02": {
2557
  "date": "2026-09-02",
2558
  "day": "WED",
2559
+ "source_month": "2026-09",
2560
  "d": 66.7,
2561
  "s": 42.9,
2562
  "n": 42.9,
 
2569
  "2026-09-03": {
2570
  "date": "2026-09-03",
2571
  "day": "THU",
2572
+ "source_month": "2026-09",
2573
  "d": 52.4,
2574
  "s": 47.6,
2575
  "n": 52.4,
 
2582
  "2026-09-04": {
2583
  "date": "2026-09-04",
2584
  "day": "FRI",
2585
+ "source_month": "2026-09",
2586
  "d": 47.6,
2587
  "s": 47.6,
2588
  "n": 52.4,
 
2595
  "2026-09-08": {
2596
  "date": "2026-09-08",
2597
  "day": "TUE",
2598
+ "source_month": "2026-09",
2599
  "d": 57.1,
2600
  "s": 47.6,
2601
  "n": 52.4,
 
2608
  "2026-09-09": {
2609
  "date": "2026-09-09",
2610
  "day": "WED",
2611
+ "source_month": "2026-09",
2612
  "d": 61.9,
2613
  "s": 71.4,
2614
  "n": 66.7,
 
2621
  "2026-09-10": {
2622
  "date": "2026-09-10",
2623
  "day": "THU",
2624
+ "source_month": "2026-09",
2625
  "d": 81.0,
2626
  "s": 81.0,
2627
  "n": 71.4,
 
2634
  "2026-09-11": {
2635
  "date": "2026-09-11",
2636
  "day": "FRI",
2637
+ "source_month": "2026-09",
2638
  "d": 66.7,
2639
  "s": 76.2,
2640
  "n": 66.7,
 
2647
  "2026-09-14": {
2648
  "date": "2026-09-14",
2649
  "day": "MON",
2650
+ "source_month": "2026-09",
2651
  "d": 61.9,
2652
  "s": 57.1,
2653
  "n": 66.7,
 
2660
  "2026-09-15": {
2661
  "date": "2026-09-15",
2662
  "day": "TUE",
2663
+ "source_month": "2026-09",
2664
  "d": 61.9,
2665
  "s": 57.1,
2666
  "n": 42.9,
 
2673
  "2026-09-16": {
2674
  "date": "2026-09-16",
2675
  "day": "WED",
2676
+ "source_month": "2026-09",
2677
  "d": 76.2,
2678
  "s": 71.4,
2679
  "n": 81.0,
 
2686
  "2026-09-17": {
2687
  "date": "2026-09-17",
2688
  "day": "THU",
2689
+ "source_month": "2026-09",
2690
  "d": 47.6,
2691
  "s": 47.6,
2692
  "n": 42.9,
 
2699
  "2026-09-18": {
2700
  "date": "2026-09-18",
2701
  "day": "FRI",
2702
+ "source_month": "2026-09",
2703
  "d": 52.4,
2704
  "s": 47.6,
2705
  "n": 47.6,
 
2712
  "2026-09-21": {
2713
  "date": "2026-09-21",
2714
  "day": "MON",
2715
+ "source_month": "2026-09",
2716
  "d": 42.9,
2717
  "s": 23.8,
2718
  "n": 38.1,
 
2725
  "2026-09-22": {
2726
  "date": "2026-09-22",
2727
  "day": "TUE",
2728
+ "source_month": "2026-09",
2729
  "d": 38.1,
2730
  "s": 28.6,
2731
  "n": 28.6,
 
2738
  "2026-09-23": {
2739
  "date": "2026-09-23",
2740
  "day": "WED",
2741
+ "source_month": "2026-09",
2742
  "d": 28.6,
2743
  "s": 28.6,
2744
  "n": 38.1,
 
2751
  "2026-09-24": {
2752
  "date": "2026-09-24",
2753
  "day": "THU",
2754
+ "source_month": "2026-09",
2755
  "d": 47.6,
2756
  "s": 47.6,
2757
  "n": 52.4,
 
2764
  "2026-09-25": {
2765
  "date": "2026-09-25",
2766
  "day": "FRI",
2767
+ "source_month": "2026-09",
2768
  "d": 47.6,
2769
  "s": 38.1,
2770
  "n": 52.4,
 
2777
  "2026-09-28": {
2778
  "date": "2026-09-28",
2779
  "day": "MON",
2780
+ "source_month": "2026-10",
2781
  "d": 66.7,
2782
  "s": 71.4,
2783
  "n": 61.9,
 
2790
  "2026-09-29": {
2791
  "date": "2026-09-29",
2792
  "day": "TUE",
2793
+ "source_month": "2026-10",
2794
  "d": 57.1,
2795
  "s": 52.4,
2796
  "n": 38.1,
 
2803
  "2026-09-30": {
2804
  "date": "2026-09-30",
2805
  "day": "WED",
2806
+ "source_month": "2026-10",
2807
  "d": 42.9,
2808
  "s": 38.1,
2809
  "n": 52.4,
 
2816
  "2026-10-01": {
2817
  "date": "2026-10-01",
2818
  "day": "THU",
2819
+ "source_month": "2026-10",
2820
  "d": 47.6,
2821
  "s": 57.1,
2822
  "n": 52.4,
 
2829
  "2026-10-02": {
2830
  "date": "2026-10-02",
2831
  "day": "FRI",
2832
+ "source_month": "2026-10",
2833
  "d": 38.1,
2834
  "s": 42.9,
2835
  "n": 47.6,
 
2842
  "2026-10-05": {
2843
  "date": "2026-10-05",
2844
  "day": "MON",
2845
+ "source_month": "2026-10",
2846
  "d": 66.7,
2847
  "s": 66.7,
2848
  "n": 71.4,
 
2855
  "2026-10-06": {
2856
  "date": "2026-10-06",
2857
  "day": "TUE",
2858
+ "source_month": "2026-10",
2859
  "d": 61.9,
2860
  "s": 57.1,
2861
  "n": 52.4,
 
2868
  "2026-10-07": {
2869
  "date": "2026-10-07",
2870
  "day": "WED",
2871
+ "source_month": "2026-10",
2872
  "d": 33.3,
2873
  "s": 33.3,
2874
  "n": 42.9,
 
2881
  "2026-10-08": {
2882
  "date": "2026-10-08",
2883
  "day": "THU",
2884
+ "source_month": "2026-10",
2885
  "d": 52.4,
2886
  "s": 47.6,
2887
  "n": 52.4,
 
2894
  "2026-10-09": {
2895
  "date": "2026-10-09",
2896
  "day": "FRI",
2897
+ "source_month": "2026-10",
2898
  "d": 66.7,
2899
  "s": 61.9,
2900
  "n": 61.9,
 
2907
  "2026-10-12": {
2908
  "date": "2026-10-12",
2909
  "day": "MON",
2910
+ "source_month": "2026-10",
2911
  "d": 47.6,
2912
  "s": 47.6,
2913
  "n": 47.6,
 
2920
  "2026-10-13": {
2921
  "date": "2026-10-13",
2922
  "day": "TUE",
2923
+ "source_month": "2026-10",
2924
  "d": 33.3,
2925
  "s": 42.9,
2926
  "n": 52.4,
 
2933
  "2026-10-14": {
2934
  "date": "2026-10-14",
2935
  "day": "WED",
2936
+ "source_month": "2026-10",
2937
  "d": 61.9,
2938
  "s": 57.1,
2939
  "n": 57.1,
 
2946
  "2026-10-15": {
2947
  "date": "2026-10-15",
2948
  "day": "THU",
2949
+ "source_month": "2026-10",
2950
  "d": 52.4,
2951
  "s": 57.1,
2952
  "n": 57.1,
 
2959
  "2026-10-16": {
2960
  "date": "2026-10-16",
2961
  "day": "FRI",
2962
+ "source_month": "2026-10",
2963
  "d": 66.7,
2964
  "s": 71.4,
2965
  "n": 61.9,
 
2972
  "2026-10-19": {
2973
  "date": "2026-10-19",
2974
  "day": "MON",
2975
+ "source_month": "2026-10",
2976
  "d": 52.4,
2977
  "s": 57.1,
2978
  "n": 57.1,
 
2985
  "2026-10-20": {
2986
  "date": "2026-10-20",
2987
  "day": "TUE",
2988
+ "source_month": "2026-10",
2989
  "d": 47.6,
2990
  "s": 52.4,
2991
  "n": 42.9,
 
2998
  "2026-10-21": {
2999
  "date": "2026-10-21",
3000
  "day": "WED",
3001
+ "source_month": "2026-10",
3002
  "d": 28.6,
3003
  "s": 38.1,
3004
  "n": 38.1,
 
3011
  "2026-10-22": {
3012
  "date": "2026-10-22",
3013
  "day": "THU",
3014
+ "source_month": "2026-10",
3015
  "d": 52.4,
3016
  "s": 66.7,
3017
  "n": 71.4,
 
3024
  "2026-10-23": {
3025
  "date": "2026-10-23",
3026
  "day": "FRI",
3027
+ "source_month": "2026-10",
3028
  "d": 57.1,
3029
  "s": 71.4,
3030
  "n": 66.7,
 
3037
  "2026-10-26": {
3038
  "date": "2026-10-26",
3039
  "day": "MON",
3040
+ "source_month": "2026-11",
3041
  "d": 38.1,
3042
  "s": 33.3,
3043
  "n": 47.6,
 
3050
  "2026-10-27": {
3051
  "date": "2026-10-27",
3052
  "day": "TUE",
3053
+ "source_month": "2026-11",
3054
  "d": 66.7,
3055
  "s": 57.1,
3056
  "n": 52.4,
 
3063
  "2026-10-28": {
3064
  "date": "2026-10-28",
3065
  "day": "WED",
3066
+ "source_month": "2026-11",
3067
  "d": 38.1,
3068
  "s": 38.1,
3069
  "n": 57.1,
 
3076
  "2026-10-29": {
3077
  "date": "2026-10-29",
3078
  "day": "THU",
3079
+ "source_month": "2026-11",
3080
  "d": 61.9,
3081
  "s": 66.7,
3082
  "n": 66.7,
 
3089
  "2026-10-30": {
3090
  "date": "2026-10-30",
3091
  "day": "FRI",
3092
+ "source_month": "2026-11",
3093
  "d": 47.6,
3094
  "s": 52.4,
3095
  "n": 47.6,
 
3102
  "2026-11-02": {
3103
  "date": "2026-11-02",
3104
  "day": "MON",
3105
+ "source_month": "2026-11",
3106
  "d": 61.9,
3107
  "s": 61.9,
3108
  "n": 61.9,
 
3115
  "2026-11-03": {
3116
  "date": "2026-11-03",
3117
  "day": "TUE",
3118
+ "source_month": "2026-11",
3119
  "d": 61.9,
3120
  "s": 66.7,
3121
  "n": 61.9,
 
3128
  "2026-11-04": {
3129
  "date": "2026-11-04",
3130
  "day": "WED",
3131
+ "source_month": "2026-11",
3132
  "d": 66.7,
3133
  "s": 61.9,
3134
  "n": 57.1,
 
3141
  "2026-11-05": {
3142
  "date": "2026-11-05",
3143
  "day": "THU",
3144
+ "source_month": "2026-11",
3145
  "d": 71.4,
3146
  "s": 81.0,
3147
  "n": 71.4,
 
3154
  "2026-11-06": {
3155
  "date": "2026-11-06",
3156
  "day": "FRI",
3157
+ "source_month": "2026-11",
3158
  "d": 76.2,
3159
  "s": 71.4,
3160
  "n": 76.2,
 
3167
  "2026-11-09": {
3168
  "date": "2026-11-09",
3169
  "day": "MON",
3170
+ "source_month": "2026-11",
3171
  "d": 66.7,
3172
  "s": 61.9,
3173
  "n": 66.7,
 
3180
  "2026-11-10": {
3181
  "date": "2026-11-10",
3182
  "day": "TUE",
3183
+ "source_month": "2026-11",
3184
  "d": 47.6,
3185
  "s": 33.3,
3186
  "n": 33.3,
 
3193
  "2026-11-11": {
3194
  "date": "2026-11-11",
3195
  "day": "WED",
3196
+ "source_month": "2026-11",
3197
  "d": 38.1,
3198
  "s": 52.4,
3199
  "n": 57.1,
 
3206
  "2026-11-12": {
3207
  "date": "2026-11-12",
3208
  "day": "THU",
3209
+ "source_month": "2026-11",
3210
  "d": 66.7,
3211
  "s": 61.9,
3212
  "n": 61.9,
 
3219
  "2026-11-13": {
3220
  "date": "2026-11-13",
3221
  "day": "FRI",
3222
+ "source_month": "2026-11",
3223
  "d": 42.9,
3224
  "s": 42.9,
3225
  "n": 38.1,
 
3232
  "2026-11-16": {
3233
  "date": "2026-11-16",
3234
  "day": "MON",
3235
+ "source_month": "2026-11",
3236
  "d": 66.7,
3237
  "s": 57.1,
3238
  "n": 57.1,
 
3245
  "2026-11-17": {
3246
  "date": "2026-11-17",
3247
  "day": "TUE",
3248
+ "source_month": "2026-11",
3249
  "d": 57.1,
3250
  "s": 61.9,
3251
  "n": 66.7,
 
3258
  "2026-11-18": {
3259
  "date": "2026-11-18",
3260
  "day": "WED",
3261
+ "source_month": "2026-11",
3262
  "d": 33.3,
3263
  "s": 42.9,
3264
  "n": 42.9,
 
3271
  "2026-11-19": {
3272
  "date": "2026-11-19",
3273
  "day": "THU",
3274
+ "source_month": "2026-11",
3275
  "d": 52.4,
3276
  "s": 57.1,
3277
  "n": 57.1,
 
3284
  "2026-11-20": {
3285
  "date": "2026-11-20",
3286
  "day": "FRI",
3287
+ "source_month": "2026-11",
3288
  "d": 61.9,
3289
  "s": 57.1,
3290
  "n": 66.7,
 
3297
  "2026-11-23": {
3298
  "date": "2026-11-23",
3299
  "day": "MON",
3300
+ "source_month": "2026-11",
3301
  "d": 71.4,
3302
  "s": 66.7,
3303
  "n": 57.1,
 
3310
  "2026-11-24": {
3311
  "date": "2026-11-24",
3312
  "day": "TUE",
3313
+ "source_month": "2026-11",
3314
  "d": 71.4,
3315
  "s": 61.9,
3316
  "n": 66.7,
 
3323
  "2026-11-25": {
3324
  "date": "2026-11-25",
3325
  "day": "WED",
3326
+ "source_month": "2026-11",
3327
  "d": 66.7,
3328
  "s": 61.9,
3329
  "n": 66.7,
 
3336
  "2026-11-27": {
3337
  "date": "2026-11-27",
3338
  "day": "FRI",
3339
+ "source_month": "2026-11",
3340
  "d": 61.9,
3341
  "s": 61.9,
3342
  "n": 57.1,
 
3349
  "2026-11-30": {
3350
  "date": "2026-11-30",
3351
  "day": "MON",
3352
+ "source_month": "2026-12",
3353
  "d": 57.1,
3354
  "s": 52.4,
3355
  "n": 47.6,
 
3362
  "2026-12-01": {
3363
  "date": "2026-12-01",
3364
  "day": "TUE",
3365
+ "source_month": "2026-12",
3366
  "d": 42.9,
3367
  "s": 42.9,
3368
  "n": 52.4,
 
3375
  "2026-12-02": {
3376
  "date": "2026-12-02",
3377
  "day": "WED",
3378
+ "source_month": "2026-12",
3379
  "d": 38.1,
3380
  "s": 47.6,
3381
  "n": 52.4,
 
3388
  "2026-12-03": {
3389
  "date": "2026-12-03",
3390
  "day": "THU",
3391
+ "source_month": "2026-12",
3392
  "d": 57.1,
3393
  "s": 52.4,
3394
  "n": 66.7,
 
3401
  "2026-12-04": {
3402
  "date": "2026-12-04",
3403
  "day": "FRI",
3404
+ "source_month": "2026-12",
3405
  "d": 47.6,
3406
  "s": 47.6,
3407
  "n": 57.1,
 
3414
  "2026-12-07": {
3415
  "date": "2026-12-07",
3416
  "day": "MON",
3417
+ "source_month": "2026-12",
3418
  "d": 66.7,
3419
  "s": 61.9,
3420
  "n": 57.1,
 
3427
  "2026-12-08": {
3428
  "date": "2026-12-08",
3429
  "day": "TUE",
3430
+ "source_month": "2026-12",
3431
  "d": 61.9,
3432
  "s": 61.9,
3433
  "n": 66.7,
 
3440
  "2026-12-09": {
3441
  "date": "2026-12-09",
3442
  "day": "WED",
3443
+ "source_month": "2026-12",
3444
  "d": 47.6,
3445
  "s": 52.4,
3446
  "n": 57.1,
 
3453
  "2026-12-10": {
3454
  "date": "2026-12-10",
3455
  "day": "THU",
3456
+ "source_month": "2026-12",
3457
  "d": 57.1,
3458
  "s": 61.9,
3459
  "n": 57.1,
 
3466
  "2026-12-11": {
3467
  "date": "2026-12-11",
3468
  "day": "FRI",
3469
+ "source_month": "2026-12",
3470
  "d": 61.9,
3471
  "s": 52.4,
3472
  "n": 42.9,
 
3479
  "2026-12-14": {
3480
  "date": "2026-12-14",
3481
  "day": "MON",
3482
+ "source_month": "2026-12",
3483
  "d": 47.6,
3484
  "s": 42.9,
3485
  "n": 52.4,
 
3492
  "2026-12-15": {
3493
  "date": "2026-12-15",
3494
  "day": "TUE",
3495
+ "source_month": "2026-12",
3496
  "d": 61.9,
3497
  "s": 61.9,
3498
  "n": 66.7,
 
3505
  "2026-12-16": {
3506
  "date": "2026-12-16",
3507
  "day": "WED",
3508
+ "source_month": "2026-12",
3509
  "d": 42.9,
3510
  "s": 52.4,
3511
  "n": 52.4,
 
3518
  "2026-12-17": {
3519
  "date": "2026-12-17",
3520
  "day": "THU",
3521
+ "source_month": "2026-12",
3522
  "d": 28.6,
3523
  "s": 33.3,
3524
  "n": 38.1,
 
3531
  "2026-12-18": {
3532
  "date": "2026-12-18",
3533
  "day": "FRI",
3534
+ "source_month": "2026-12",
3535
  "d": 52.4,
3536
  "s": 47.6,
3537
  "n": 42.9,
 
3544
  "2026-12-21": {
3545
  "date": "2026-12-21",
3546
  "day": "MON",
3547
+ "source_month": "2026-12",
3548
  "d": 71.4,
3549
  "s": 61.9,
3550
  "n": 61.9,
 
3557
  "2026-12-22": {
3558
  "date": "2026-12-22",
3559
  "day": "TUE",
3560
+ "source_month": "2026-12",
3561
  "d": 66.7,
3562
  "s": 66.7,
3563
  "n": 66.7,
 
3570
  "2026-12-23": {
3571
  "date": "2026-12-23",
3572
  "day": "WED",
3573
+ "source_month": "2026-12",
3574
  "d": 71.4,
3575
  "s": 66.7,
3576
  "n": 57.1,
 
3583
  "2026-12-24": {
3584
  "date": "2026-12-24",
3585
  "day": "THU",
3586
+ "source_month": "2026-12",
3587
  "d": 52.4,
3588
  "s": 61.9,
3589
  "n": 76.2,
 
3596
  "2026-12-28": {
3597
  "date": "2026-12-28",
3598
  "day": "MON",
3599
+ "source_month": "2026-12",
3600
  "d": 76.2,
3601
  "s": 66.7,
3602
  "n": 61.9,
 
3609
  "2026-12-29": {
3610
  "date": "2026-12-29",
3611
  "day": "TUE",
3612
+ "source_month": "2026-12",
3613
  "d": 42.9,
3614
  "s": 47.6,
3615
  "n": 38.1,
 
3622
  "2026-12-30": {
3623
  "date": "2026-12-30",
3624
  "day": "WED",
3625
+ "source_month": "2026-12",
3626
  "d": 42.9,
3627
  "s": 42.9,
3628
  "n": 38.1,
 
3635
  "2026-12-31": {
3636
  "date": "2026-12-31",
3637
  "day": "THU",
3638
+ "source_month": "2026-12",
3639
  "d": 33.3,
3640
  "s": 28.6,
3641
  "n": 28.6,
data/almanac_2026/almanac_2026_db_dump.json CHANGED
@@ -3,7 +3,7 @@
3
  "format": "almanac-json-db-v1",
4
  "source": "Stock Trader's Almanac 2026 (Wiley)",
5
  "year": 2026,
6
- "generated_at": "2026-04-04T14:53:52.484929Z",
7
  "tables": [
8
  "metadata",
9
  "months",
@@ -30,7 +30,7 @@
30
  },
31
  {
32
  "key": "generated_at",
33
- "value": "2026-04-04T14:53:52.484929Z"
34
  },
35
  {
36
  "key": "format",
@@ -509,10 +509,50 @@
509
  "icon",
510
  "notes"
511
  ],
512
- "row_count": 251,
513
  "rows": [
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
514
  {
515
  "date": "2026-01-02",
 
516
  "day_of_week": "FRI",
517
  "dow_prob": 66.7,
518
  "sp500_prob": 52.4,
@@ -525,6 +565,7 @@
525
  },
526
  {
527
  "date": "2026-01-05",
 
528
  "day_of_week": "MON",
529
  "dow_prob": 61.9,
530
  "sp500_prob": 47.6,
@@ -537,6 +578,7 @@
537
  },
538
  {
539
  "date": "2026-01-06",
 
540
  "day_of_week": "TUE",
541
  "dow_prob": 47.6,
542
  "sp500_prob": 52.4,
@@ -549,6 +591,7 @@
549
  },
550
  {
551
  "date": "2026-01-07",
 
552
  "day_of_week": "WED",
553
  "dow_prob": 61.9,
554
  "sp500_prob": 66.7,
@@ -561,6 +604,7 @@
561
  },
562
  {
563
  "date": "2026-01-08",
 
564
  "day_of_week": "THU",
565
  "dow_prob": 42.9,
566
  "sp500_prob": 52.4,
@@ -573,6 +617,7 @@
573
  },
574
  {
575
  "date": "2026-01-09",
 
576
  "day_of_week": "FRI",
577
  "dow_prob": 52.4,
578
  "sp500_prob": 57.1,
@@ -585,6 +630,7 @@
585
  },
586
  {
587
  "date": "2026-01-12",
 
588
  "day_of_week": "MON",
589
  "dow_prob": 61.9,
590
  "sp500_prob": 71.4,
@@ -597,6 +643,7 @@
597
  },
598
  {
599
  "date": "2026-01-13",
 
600
  "day_of_week": "TUE",
601
  "dow_prob": 52.4,
602
  "sp500_prob": 52.4,
@@ -609,6 +656,7 @@
609
  },
610
  {
611
  "date": "2026-01-14",
 
612
  "day_of_week": "WED",
613
  "dow_prob": 47.6,
614
  "sp500_prob": 52.4,
@@ -621,6 +669,7 @@
621
  },
622
  {
623
  "date": "2026-01-15",
 
624
  "day_of_week": "THU",
625
  "dow_prob": 42.9,
626
  "sp500_prob": 47.6,
@@ -633,6 +682,7 @@
633
  },
634
  {
635
  "date": "2026-01-16",
 
636
  "day_of_week": "FRI",
637
  "dow_prob": 57.1,
638
  "sp500_prob": 66.7,
@@ -645,6 +695,7 @@
645
  },
646
  {
647
  "date": "2026-01-20",
 
648
  "day_of_week": "TUE",
649
  "dow_prob": 42.9,
650
  "sp500_prob": 42.9,
@@ -657,6 +708,7 @@
657
  },
658
  {
659
  "date": "2026-01-21",
 
660
  "day_of_week": "WED",
661
  "dow_prob": 52.4,
662
  "sp500_prob": 61.9,
@@ -669,6 +721,7 @@
669
  },
670
  {
671
  "date": "2026-01-22",
 
672
  "day_of_week": "THU",
673
  "dow_prob": 42.9,
674
  "sp500_prob": 57.1,
@@ -681,6 +734,7 @@
681
  },
682
  {
683
  "date": "2026-01-23",
 
684
  "day_of_week": "FRI",
685
  "dow_prob": 47.6,
686
  "sp500_prob": 52.4,
@@ -693,6 +747,7 @@
693
  },
694
  {
695
  "date": "2026-01-26",
 
696
  "day_of_week": "MON",
697
  "dow_prob": 57.1,
698
  "sp500_prob": 61.9,
@@ -705,6 +760,7 @@
705
  },
706
  {
707
  "date": "2026-01-27",
 
708
  "day_of_week": "TUE",
709
  "dow_prob": 57.1,
710
  "sp500_prob": 47.6,
@@ -717,6 +773,7 @@
717
  },
718
  {
719
  "date": "2026-01-28",
 
720
  "day_of_week": "WED",
721
  "dow_prob": 52.4,
722
  "sp500_prob": 42.9,
@@ -729,6 +786,7 @@
729
  },
730
  {
731
  "date": "2026-01-29",
 
732
  "day_of_week": "THU",
733
  "dow_prob": 47.6,
734
  "sp500_prob": 47.6,
@@ -741,6 +799,7 @@
741
  },
742
  {
743
  "date": "2026-01-30",
 
744
  "day_of_week": "FRI",
745
  "dow_prob": 38.1,
746
  "sp500_prob": 42.9,
@@ -753,6 +812,7 @@
753
  },
754
  {
755
  "date": "2026-02-02",
 
756
  "day_of_week": "MON",
757
  "dow_prob": 85.7,
758
  "sp500_prob": 81.0,
@@ -765,6 +825,7 @@
765
  },
766
  {
767
  "date": "2026-02-03",
 
768
  "day_of_week": "TUE",
769
  "dow_prob": 57.1,
770
  "sp500_prob": 71.4,
@@ -777,6 +838,7 @@
777
  },
778
  {
779
  "date": "2026-02-04",
 
780
  "day_of_week": "WED",
781
  "dow_prob": 47.6,
782
  "sp500_prob": 38.1,
@@ -789,6 +851,7 @@
789
  },
790
  {
791
  "date": "2026-02-05",
 
792
  "day_of_week": "THU",
793
  "dow_prob": 66.7,
794
  "sp500_prob": 71.4,
@@ -801,6 +864,7 @@
801
  },
802
  {
803
  "date": "2026-02-06",
 
804
  "day_of_week": "FRI",
805
  "dow_prob": 61.9,
806
  "sp500_prob": 57.1,
@@ -813,6 +877,7 @@
813
  },
814
  {
815
  "date": "2026-02-09",
 
816
  "day_of_week": "MON",
817
  "dow_prob": 47.6,
818
  "sp500_prob": 61.9,
@@ -825,6 +890,7 @@
825
  },
826
  {
827
  "date": "2026-02-10",
 
828
  "day_of_week": "TUE",
829
  "dow_prob": 52.4,
830
  "sp500_prob": 57.1,
@@ -837,6 +903,7 @@
837
  },
838
  {
839
  "date": "2026-02-11",
 
840
  "day_of_week": "WED",
841
  "dow_prob": 61.9,
842
  "sp500_prob": 57.1,
@@ -849,6 +916,7 @@
849
  },
850
  {
851
  "date": "2026-02-12",
 
852
  "day_of_week": "THU",
853
  "dow_prob": 57.1,
854
  "sp500_prob": 71.4,
@@ -861,6 +929,7 @@
861
  },
862
  {
863
  "date": "2026-02-13",
 
864
  "day_of_week": "FRI",
865
  "dow_prob": 47.6,
866
  "sp500_prob": 61.9,
@@ -873,6 +942,7 @@
873
  },
874
  {
875
  "date": "2026-02-17",
 
876
  "day_of_week": "TUE",
877
  "dow_prob": 71.4,
878
  "sp500_prob": 71.4,
@@ -885,6 +955,7 @@
885
  },
886
  {
887
  "date": "2026-02-18",
 
888
  "day_of_week": "WED",
889
  "dow_prob": 61.9,
890
  "sp500_prob": 52.4,
@@ -897,6 +968,7 @@
897
  },
898
  {
899
  "date": "2026-02-19",
 
900
  "day_of_week": "THU",
901
  "dow_prob": 42.9,
902
  "sp500_prob": 38.1,
@@ -909,6 +981,7 @@
909
  },
910
  {
911
  "date": "2026-02-20",
 
912
  "day_of_week": "FRI",
913
  "dow_prob": 38.1,
914
  "sp500_prob": 33.3,
@@ -921,6 +994,7 @@
921
  },
922
  {
923
  "date": "2026-02-23",
 
924
  "day_of_week": "MON",
925
  "dow_prob": 47.6,
926
  "sp500_prob": 38.1,
@@ -933,6 +1007,7 @@
933
  },
934
  {
935
  "date": "2026-02-24",
 
936
  "day_of_week": "TUE",
937
  "dow_prob": 47.6,
938
  "sp500_prob": 52.4,
@@ -945,6 +1020,7 @@
945
  },
946
  {
947
  "date": "2026-02-25",
 
948
  "day_of_week": "WED",
949
  "dow_prob": 57.1,
950
  "sp500_prob": 61.9,
@@ -957,6 +1033,7 @@
957
  },
958
  {
959
  "date": "2026-02-26",
 
960
  "day_of_week": "THU",
961
  "dow_prob": 42.9,
962
  "sp500_prob": 47.6,
@@ -969,6 +1046,7 @@
969
  },
970
  {
971
  "date": "2026-02-27",
 
972
  "day_of_week": "FRI",
973
  "dow_prob": 28.6,
974
  "sp500_prob": 28.6,
@@ -981,6 +1059,7 @@
981
  },
982
  {
983
  "date": "2026-03-02",
 
984
  "day_of_week": "MON",
985
  "dow_prob": 66.7,
986
  "sp500_prob": 66.7,
@@ -993,6 +1072,7 @@
993
  },
994
  {
995
  "date": "2026-03-03",
 
996
  "day_of_week": "TUE",
997
  "dow_prob": 33.3,
998
  "sp500_prob": 38.1,
@@ -1005,6 +1085,7 @@
1005
  },
1006
  {
1007
  "date": "2026-03-04",
 
1008
  "day_of_week": "WED",
1009
  "dow_prob": 52.4,
1010
  "sp500_prob": 57.1,
@@ -1017,6 +1098,7 @@
1017
  },
1018
  {
1019
  "date": "2026-03-05",
 
1020
  "day_of_week": "THU",
1021
  "dow_prob": 47.6,
1022
  "sp500_prob": 52.4,
@@ -1029,6 +1111,7 @@
1029
  },
1030
  {
1031
  "date": "2026-03-06",
 
1032
  "day_of_week": "FRI",
1033
  "dow_prob": 47.6,
1034
  "sp500_prob": 47.6,
@@ -1041,6 +1124,7 @@
1041
  },
1042
  {
1043
  "date": "2026-03-09",
 
1044
  "day_of_week": "MON",
1045
  "dow_prob": 38.1,
1046
  "sp500_prob": 38.1,
@@ -1053,6 +1137,7 @@
1053
  },
1054
  {
1055
  "date": "2026-03-10",
 
1056
  "day_of_week": "TUE",
1057
  "dow_prob": 66.7,
1058
  "sp500_prob": 61.9,
@@ -1065,6 +1150,7 @@
1065
  },
1066
  {
1067
  "date": "2026-03-11",
 
1068
  "day_of_week": "WED",
1069
  "dow_prob": 47.6,
1070
  "sp500_prob": 57.1,
@@ -1077,6 +1163,7 @@
1077
  },
1078
  {
1079
  "date": "2026-03-12",
 
1080
  "day_of_week": "THU",
1081
  "dow_prob": 52.4,
1082
  "sp500_prob": 57.1,
@@ -1089,6 +1176,7 @@
1089
  },
1090
  {
1091
  "date": "2026-03-13",
 
1092
  "day_of_week": "FRI",
1093
  "dow_prob": 66.7,
1094
  "sp500_prob": 42.9,
@@ -1101,6 +1189,7 @@
1101
  },
1102
  {
1103
  "date": "2026-03-16",
 
1104
  "day_of_week": "MON",
1105
  "dow_prob": 61.9,
1106
  "sp500_prob": 47.6,
@@ -1113,6 +1202,7 @@
1113
  },
1114
  {
1115
  "date": "2026-03-17",
 
1116
  "day_of_week": "TUE",
1117
  "dow_prob": 61.9,
1118
  "sp500_prob": 66.7,
@@ -1125,6 +1215,7 @@
1125
  },
1126
  {
1127
  "date": "2026-03-18",
 
1128
  "day_of_week": "WED",
1129
  "dow_prob": 61.9,
1130
  "sp500_prob": 61.9,
@@ -1137,6 +1228,7 @@
1137
  },
1138
  {
1139
  "date": "2026-03-19",
 
1140
  "day_of_week": "THU",
1141
  "dow_prob": 61.9,
1142
  "sp500_prob": 52.4,
@@ -1149,6 +1241,7 @@
1149
  },
1150
  {
1151
  "date": "2026-03-20",
 
1152
  "day_of_week": "FRI",
1153
  "dow_prob": 52.4,
1154
  "sp500_prob": 52.4,
@@ -1161,6 +1254,7 @@
1161
  },
1162
  {
1163
  "date": "2026-03-23",
 
1164
  "day_of_week": "MON",
1165
  "dow_prob": 42.9,
1166
  "sp500_prob": 38.1,
@@ -1173,6 +1267,7 @@
1173
  },
1174
  {
1175
  "date": "2026-03-24",
 
1176
  "day_of_week": "TUE",
1177
  "dow_prob": 42.9,
1178
  "sp500_prob": 47.6,
@@ -1185,6 +1280,7 @@
1185
  },
1186
  {
1187
  "date": "2026-03-25",
 
1188
  "day_of_week": "WED",
1189
  "dow_prob": 61.9,
1190
  "sp500_prob": 57.1,
@@ -1197,6 +1293,7 @@
1197
  },
1198
  {
1199
  "date": "2026-03-26",
 
1200
  "day_of_week": "THU",
1201
  "dow_prob": 47.6,
1202
  "sp500_prob": 47.6,
@@ -1209,6 +1306,7 @@
1209
  },
1210
  {
1211
  "date": "2026-03-27",
 
1212
  "day_of_week": "FRI",
1213
  "dow_prob": 47.6,
1214
  "sp500_prob": 47.6,
@@ -1221,6 +1319,7 @@
1221
  },
1222
  {
1223
  "date": "2026-03-30",
 
1224
  "day_of_week": "MON",
1225
  "dow_prob": 66.7,
1226
  "sp500_prob": 61.9,
@@ -1233,6 +1332,7 @@
1233
  },
1234
  {
1235
  "date": "2026-03-31",
 
1236
  "day_of_week": "TUE",
1237
  "dow_prob": 47.6,
1238
  "sp500_prob": 47.6,
@@ -1245,6 +1345,7 @@
1245
  },
1246
  {
1247
  "date": "2026-04-01",
 
1248
  "day_of_week": "WED",
1249
  "dow_prob": 66.7,
1250
  "sp500_prob": 66.7,
@@ -1257,6 +1358,7 @@
1257
  },
1258
  {
1259
  "date": "2026-04-02",
 
1260
  "day_of_week": "THU",
1261
  "dow_prob": 71.4,
1262
  "sp500_prob": 76.2,
@@ -1269,6 +1371,7 @@
1269
  },
1270
  {
1271
  "date": "2026-04-06",
 
1272
  "day_of_week": "MON",
1273
  "dow_prob": 47.6,
1274
  "sp500_prob": 52.4,
@@ -1281,6 +1384,7 @@
1281
  },
1282
  {
1283
  "date": "2026-04-07",
 
1284
  "day_of_week": "TUE",
1285
  "dow_prob": 57.1,
1286
  "sp500_prob": 57.1,
@@ -1293,6 +1397,7 @@
1293
  },
1294
  {
1295
  "date": "2026-04-08",
 
1296
  "day_of_week": "WED",
1297
  "dow_prob": 47.6,
1298
  "sp500_prob": 47.6,
@@ -1305,6 +1410,7 @@
1305
  },
1306
  {
1307
  "date": "2026-04-09",
 
1308
  "day_of_week": "THU",
1309
  "dow_prob": 66.7,
1310
  "sp500_prob": 61.9,
@@ -1317,6 +1423,7 @@
1317
  },
1318
  {
1319
  "date": "2026-04-10",
 
1320
  "day_of_week": "FRI",
1321
  "dow_prob": 47.6,
1322
  "sp500_prob": 52.4,
@@ -1329,6 +1436,7 @@
1329
  },
1330
  {
1331
  "date": "2026-04-13",
 
1332
  "day_of_week": "MON",
1333
  "dow_prob": 47.6,
1334
  "sp500_prob": 57.1,
@@ -1341,6 +1449,7 @@
1341
  },
1342
  {
1343
  "date": "2026-04-14",
 
1344
  "day_of_week": "TUE",
1345
  "dow_prob": 52.4,
1346
  "sp500_prob": 57.1,
@@ -1353,6 +1462,7 @@
1353
  },
1354
  {
1355
  "date": "2026-04-15",
 
1356
  "day_of_week": "WED",
1357
  "dow_prob": 61.9,
1358
  "sp500_prob": 57.1,
@@ -1365,6 +1475,7 @@
1365
  },
1366
  {
1367
  "date": "2026-04-16",
 
1368
  "day_of_week": "THU",
1369
  "dow_prob": 52.4,
1370
  "sp500_prob": 57.1,
@@ -1377,6 +1488,7 @@
1377
  },
1378
  {
1379
  "date": "2026-04-17",
 
1380
  "day_of_week": "FRI",
1381
  "dow_prob": 61.9,
1382
  "sp500_prob": 66.7,
@@ -1389,6 +1501,7 @@
1389
  },
1390
  {
1391
  "date": "2026-04-20",
 
1392
  "day_of_week": "MON",
1393
  "dow_prob": 47.6,
1394
  "sp500_prob": 47.6,
@@ -1401,6 +1514,7 @@
1401
  },
1402
  {
1403
  "date": "2026-04-21",
 
1404
  "day_of_week": "TUE",
1405
  "dow_prob": 66.7,
1406
  "sp500_prob": 52.4,
@@ -1413,6 +1527,7 @@
1413
  },
1414
  {
1415
  "date": "2026-04-22",
 
1416
  "day_of_week": "WED",
1417
  "dow_prob": 61.9,
1418
  "sp500_prob": 66.7,
@@ -1425,6 +1540,7 @@
1425
  },
1426
  {
1427
  "date": "2026-04-23",
 
1428
  "day_of_week": "THU",
1429
  "dow_prob": 66.7,
1430
  "sp500_prob": 61.9,
@@ -1437,6 +1553,7 @@
1437
  },
1438
  {
1439
  "date": "2026-04-24",
 
1440
  "day_of_week": "FRI",
1441
  "dow_prob": 52.4,
1442
  "sp500_prob": 61.9,
@@ -1449,6 +1566,7 @@
1449
  },
1450
  {
1451
  "date": "2026-04-27",
 
1452
  "day_of_week": "MON",
1453
  "dow_prob": 52.4,
1454
  "sp500_prob": 47.6,
@@ -1461,6 +1579,7 @@
1461
  },
1462
  {
1463
  "date": "2026-04-28",
 
1464
  "day_of_week": "TUE",
1465
  "dow_prob": 66.7,
1466
  "sp500_prob": 57.1,
@@ -1473,6 +1592,7 @@
1473
  },
1474
  {
1475
  "date": "2026-04-29",
 
1476
  "day_of_week": "WED",
1477
  "dow_prob": 71.4,
1478
  "sp500_prob": 71.4,
@@ -1485,6 +1605,7 @@
1485
  },
1486
  {
1487
  "date": "2026-04-30",
 
1488
  "day_of_week": "THU",
1489
  "dow_prob": 28.6,
1490
  "sp500_prob": 33.3,
@@ -1497,6 +1618,7 @@
1497
  },
1498
  {
1499
  "date": "2026-05-01",
 
1500
  "day_of_week": "FRI",
1501
  "dow_prob": 57.1,
1502
  "sp500_prob": 61.9,
@@ -1509,6 +1631,7 @@
1509
  },
1510
  {
1511
  "date": "2026-05-04",
 
1512
  "day_of_week": "MON",
1513
  "dow_prob": 66.7,
1514
  "sp500_prob": 52.4,
@@ -1521,6 +1644,7 @@
1521
  },
1522
  {
1523
  "date": "2026-05-05",
 
1524
  "day_of_week": "TUE",
1525
  "dow_prob": 52.4,
1526
  "sp500_prob": 47.6,
@@ -1533,6 +1657,7 @@
1533
  },
1534
  {
1535
  "date": "2026-05-06",
 
1536
  "day_of_week": "WED",
1537
  "dow_prob": 38.1,
1538
  "sp500_prob": 42.9,
@@ -1545,6 +1670,7 @@
1545
  },
1546
  {
1547
  "date": "2026-05-07",
 
1548
  "day_of_week": "THU",
1549
  "dow_prob": 66.7,
1550
  "sp500_prob": 66.7,
@@ -1557,6 +1683,7 @@
1557
  },
1558
  {
1559
  "date": "2026-05-08",
 
1560
  "day_of_week": "FRI",
1561
  "dow_prob": 66.7,
1562
  "sp500_prob": 52.4,
@@ -1569,6 +1696,7 @@
1569
  },
1570
  {
1571
  "date": "2026-05-11",
 
1572
  "day_of_week": "MON",
1573
  "dow_prob": 38.1,
1574
  "sp500_prob": 47.6,
@@ -1581,6 +1709,7 @@
1581
  },
1582
  {
1583
  "date": "2026-05-12",
 
1584
  "day_of_week": "TUE",
1585
  "dow_prob": 57.1,
1586
  "sp500_prob": 57.1,
@@ -1593,6 +1722,7 @@
1593
  },
1594
  {
1595
  "date": "2026-05-13",
 
1596
  "day_of_week": "WED",
1597
  "dow_prob": 28.6,
1598
  "sp500_prob": 28.6,
@@ -1605,6 +1735,7 @@
1605
  },
1606
  {
1607
  "date": "2026-05-14",
 
1608
  "day_of_week": "THU",
1609
  "dow_prob": 57.1,
1610
  "sp500_prob": 47.6,
@@ -1617,6 +1748,7 @@
1617
  },
1618
  {
1619
  "date": "2026-05-15",
 
1620
  "day_of_week": "FRI",
1621
  "dow_prob": 66.7,
1622
  "sp500_prob": 57.1,
@@ -1629,6 +1761,7 @@
1629
  },
1630
  {
1631
  "date": "2026-05-18",
 
1632
  "day_of_week": "MON",
1633
  "dow_prob": 47.6,
1634
  "sp500_prob": 52.4,
@@ -1641,6 +1774,7 @@
1641
  },
1642
  {
1643
  "date": "2026-05-19",
 
1644
  "day_of_week": "TUE",
1645
  "dow_prob": 38.1,
1646
  "sp500_prob": 38.1,
@@ -1653,6 +1787,7 @@
1653
  },
1654
  {
1655
  "date": "2026-05-20",
 
1656
  "day_of_week": "WED",
1657
  "dow_prob": 38.1,
1658
  "sp500_prob": 42.9,
@@ -1665,6 +1800,7 @@
1665
  },
1666
  {
1667
  "date": "2026-05-21",
 
1668
  "day_of_week": "THU",
1669
  "dow_prob": 47.6,
1670
  "sp500_prob": 47.6,
@@ -1677,6 +1813,7 @@
1677
  },
1678
  {
1679
  "date": "2026-05-22",
 
1680
  "day_of_week": "FRI",
1681
  "dow_prob": 47.6,
1682
  "sp500_prob": 52.4,
@@ -1689,6 +1826,7 @@
1689
  },
1690
  {
1691
  "date": "2026-05-26",
 
1692
  "day_of_week": "TUE",
1693
  "dow_prob": 57.1,
1694
  "sp500_prob": 71.4,
@@ -1701,6 +1839,7 @@
1701
  },
1702
  {
1703
  "date": "2026-05-27",
 
1704
  "day_of_week": "WED",
1705
  "dow_prob": 52.4,
1706
  "sp500_prob": 61.9,
@@ -1713,6 +1852,7 @@
1713
  },
1714
  {
1715
  "date": "2026-05-28",
 
1716
  "day_of_week": "THU",
1717
  "dow_prob": 66.7,
1718
  "sp500_prob": 71.4,
@@ -1725,6 +1865,7 @@
1725
  },
1726
  {
1727
  "date": "2026-05-29",
 
1728
  "day_of_week": "FRI",
1729
  "dow_prob": 28.6,
1730
  "sp500_prob": 42.9,
@@ -1737,6 +1878,7 @@
1737
  },
1738
  {
1739
  "date": "2026-06-01",
 
1740
  "day_of_week": "MON",
1741
  "dow_prob": 71.4,
1742
  "sp500_prob": 66.7,
@@ -1749,6 +1891,7 @@
1749
  },
1750
  {
1751
  "date": "2026-06-02",
 
1752
  "day_of_week": "TUE",
1753
  "dow_prob": 66.7,
1754
  "sp500_prob": 76.2,
@@ -1761,6 +1904,7 @@
1761
  },
1762
  {
1763
  "date": "2026-06-03",
 
1764
  "day_of_week": "WED",
1765
  "dow_prob": 33.3,
1766
  "sp500_prob": 38.1,
@@ -1773,6 +1917,7 @@
1773
  },
1774
  {
1775
  "date": "2026-06-04",
 
1776
  "day_of_week": "THU",
1777
  "dow_prob": 71.4,
1778
  "sp500_prob": 61.9,
@@ -1785,6 +1930,7 @@
1785
  },
1786
  {
1787
  "date": "2026-06-05",
 
1788
  "day_of_week": "FRI",
1789
  "dow_prob": 61.9,
1790
  "sp500_prob": 38.1,
@@ -1797,6 +1943,7 @@
1797
  },
1798
  {
1799
  "date": "2026-06-08",
 
1800
  "day_of_week": "MON",
1801
  "dow_prob": 71.4,
1802
  "sp500_prob": 71.4,
@@ -1809,6 +1956,7 @@
1809
  },
1810
  {
1811
  "date": "2026-06-09",
 
1812
  "day_of_week": "TUE",
1813
  "dow_prob": 38.1,
1814
  "sp500_prob": 38.1,
@@ -1821,6 +1969,7 @@
1821
  },
1822
  {
1823
  "date": "2026-06-10",
 
1824
  "day_of_week": "WED",
1825
  "dow_prob": 33.3,
1826
  "sp500_prob": 38.1,
@@ -1833,6 +1982,7 @@
1833
  },
1834
  {
1835
  "date": "2026-06-11",
 
1836
  "day_of_week": "THU",
1837
  "dow_prob": 57.1,
1838
  "sp500_prob": 61.9,
@@ -1845,6 +1995,7 @@
1845
  },
1846
  {
1847
  "date": "2026-06-12",
 
1848
  "day_of_week": "FRI",
1849
  "dow_prob": 52.4,
1850
  "sp500_prob": 61.9,
@@ -1857,6 +2008,7 @@
1857
  },
1858
  {
1859
  "date": "2026-06-15",
 
1860
  "day_of_week": "MON",
1861
  "dow_prob": 57.1,
1862
  "sp500_prob": 66.7,
@@ -1869,6 +2021,7 @@
1869
  },
1870
  {
1871
  "date": "2026-06-16",
 
1872
  "day_of_week": "TUE",
1873
  "dow_prob": 52.4,
1874
  "sp500_prob": 52.4,
@@ -1881,6 +2034,7 @@
1881
  },
1882
  {
1883
  "date": "2026-06-17",
 
1884
  "day_of_week": "WED",
1885
  "dow_prob": 52.4,
1886
  "sp500_prob": 52.4,
@@ -1893,6 +2047,7 @@
1893
  },
1894
  {
1895
  "date": "2026-06-18",
 
1896
  "day_of_week": "THU",
1897
  "dow_prob": 52.4,
1898
  "sp500_prob": 52.4,
@@ -1905,6 +2060,7 @@
1905
  },
1906
  {
1907
  "date": "2026-06-22",
 
1908
  "day_of_week": "MON",
1909
  "dow_prob": 38.1,
1910
  "sp500_prob": 42.9,
@@ -1917,6 +2073,7 @@
1917
  },
1918
  {
1919
  "date": "2026-06-23",
 
1920
  "day_of_week": "TUE",
1921
  "dow_prob": 47.6,
1922
  "sp500_prob": 52.4,
@@ -1929,6 +2086,7 @@
1929
  },
1930
  {
1931
  "date": "2026-06-24",
 
1932
  "day_of_week": "WED",
1933
  "dow_prob": 28.6,
1934
  "sp500_prob": 23.8,
@@ -1941,6 +2099,7 @@
1941
  },
1942
  {
1943
  "date": "2026-06-25",
 
1944
  "day_of_week": "THU",
1945
  "dow_prob": 47.6,
1946
  "sp500_prob": 57.1,
@@ -1953,6 +2112,7 @@
1953
  },
1954
  {
1955
  "date": "2026-06-26",
 
1956
  "day_of_week": "FRI",
1957
  "dow_prob": 47.6,
1958
  "sp500_prob": 47.6,
@@ -1965,6 +2125,7 @@
1965
  },
1966
  {
1967
  "date": "2026-06-29",
 
1968
  "day_of_week": "MON",
1969
  "dow_prob": 61.9,
1970
  "sp500_prob": 61.9,
@@ -1977,6 +2138,7 @@
1977
  },
1978
  {
1979
  "date": "2026-06-30",
 
1980
  "day_of_week": "TUE",
1981
  "dow_prob": 57.1,
1982
  "sp500_prob": 57.1,
@@ -1989,6 +2151,7 @@
1989
  },
1990
  {
1991
  "date": "2026-07-01",
 
1992
  "day_of_week": "WED",
1993
  "dow_prob": 81.0,
1994
  "sp500_prob": 85.0,
@@ -2001,6 +2164,7 @@
2001
  },
2002
  {
2003
  "date": "2026-07-02",
 
2004
  "day_of_week": "THU",
2005
  "dow_prob": 38.1,
2006
  "sp500_prob": 47.6,
@@ -2013,6 +2177,7 @@
2013
  },
2014
  {
2015
  "date": "2026-07-06",
 
2016
  "day_of_week": "MON",
2017
  "dow_prob": 57.1,
2018
  "sp500_prob": 66.7,
@@ -2025,6 +2190,7 @@
2025
  },
2026
  {
2027
  "date": "2026-07-07",
 
2028
  "day_of_week": "TUE",
2029
  "dow_prob": 57.1,
2030
  "sp500_prob": 57.1,
@@ -2037,6 +2203,7 @@
2037
  },
2038
  {
2039
  "date": "2026-07-08",
 
2040
  "day_of_week": "WED",
2041
  "dow_prob": 52.4,
2042
  "sp500_prob": 57.1,
@@ -2049,6 +2216,7 @@
2049
  },
2050
  {
2051
  "date": "2026-07-09",
 
2052
  "day_of_week": "THU",
2053
  "dow_prob": 61.9,
2054
  "sp500_prob": 66.7,
@@ -2061,6 +2229,7 @@
2061
  },
2062
  {
2063
  "date": "2026-07-10",
 
2064
  "day_of_week": "FRI",
2065
  "dow_prob": 57.1,
2066
  "sp500_prob": 66.7,
@@ -2073,6 +2242,7 @@
2073
  },
2074
  {
2075
  "date": "2026-07-13",
 
2076
  "day_of_week": "MON",
2077
  "dow_prob": 76.2,
2078
  "sp500_prob": 66.7,
@@ -2085,6 +2255,7 @@
2085
  },
2086
  {
2087
  "date": "2026-07-14",
 
2088
  "day_of_week": "TUE",
2089
  "dow_prob": 76.2,
2090
  "sp500_prob": 66.7,
@@ -2097,6 +2268,7 @@
2097
  },
2098
  {
2099
  "date": "2026-07-15",
 
2100
  "day_of_week": "WED",
2101
  "dow_prob": 71.4,
2102
  "sp500_prob": 47.6,
@@ -2109,6 +2281,7 @@
2109
  },
2110
  {
2111
  "date": "2026-07-16",
 
2112
  "day_of_week": "THU",
2113
  "dow_prob": 52.4,
2114
  "sp500_prob": 52.4,
@@ -2121,6 +2294,7 @@
2121
  },
2122
  {
2123
  "date": "2026-07-17",
 
2124
  "day_of_week": "FRI",
2125
  "dow_prob": 66.7,
2126
  "sp500_prob": 61.9,
@@ -2133,6 +2307,7 @@
2133
  },
2134
  {
2135
  "date": "2026-07-20",
 
2136
  "day_of_week": "MON",
2137
  "dow_prob": 76.2,
2138
  "sp500_prob": 71.4,
@@ -2145,6 +2320,7 @@
2145
  },
2146
  {
2147
  "date": "2026-07-21",
 
2148
  "day_of_week": "TUE",
2149
  "dow_prob": 28.6,
2150
  "sp500_prob": 33.3,
@@ -2157,6 +2333,7 @@
2157
  },
2158
  {
2159
  "date": "2026-07-22",
 
2160
  "day_of_week": "WED",
2161
  "dow_prob": 52.4,
2162
  "sp500_prob": 47.6,
@@ -2169,6 +2346,7 @@
2169
  },
2170
  {
2171
  "date": "2026-07-23",
 
2172
  "day_of_week": "THU",
2173
  "dow_prob": 52.4,
2174
  "sp500_prob": 57.1,
@@ -2181,6 +2359,7 @@
2181
  },
2182
  {
2183
  "date": "2026-07-24",
 
2184
  "day_of_week": "FRI",
2185
  "dow_prob": 38.1,
2186
  "sp500_prob": 52.4,
@@ -2193,6 +2372,7 @@
2193
  },
2194
  {
2195
  "date": "2026-07-27",
 
2196
  "day_of_week": "MON",
2197
  "dow_prob": 66.7,
2198
  "sp500_prob": 57.1,
@@ -2205,6 +2385,7 @@
2205
  },
2206
  {
2207
  "date": "2026-07-28",
 
2208
  "day_of_week": "TUE",
2209
  "dow_prob": 52.4,
2210
  "sp500_prob": 47.6,
@@ -2217,6 +2398,7 @@
2217
  },
2218
  {
2219
  "date": "2026-07-29",
 
2220
  "day_of_week": "WED",
2221
  "dow_prob": 42.9,
2222
  "sp500_prob": 38.1,
@@ -2229,6 +2411,7 @@
2229
  },
2230
  {
2231
  "date": "2026-07-30",
 
2232
  "day_of_week": "THU",
2233
  "dow_prob": 52.4,
2234
  "sp500_prob": 61.9,
@@ -2241,6 +2424,7 @@
2241
  },
2242
  {
2243
  "date": "2026-07-31",
 
2244
  "day_of_week": "FRI",
2245
  "dow_prob": 38.1,
2246
  "sp500_prob": 42.9,
@@ -2253,6 +2437,7 @@
2253
  },
2254
  {
2255
  "date": "2026-08-03",
 
2256
  "day_of_week": "MON",
2257
  "dow_prob": 38.1,
2258
  "sp500_prob": 38.1,
@@ -2265,6 +2450,7 @@
2265
  },
2266
  {
2267
  "date": "2026-08-04",
 
2268
  "day_of_week": "TUE",
2269
  "dow_prob": 42.9,
2270
  "sp500_prob": 47.6,
@@ -2277,6 +2463,7 @@
2277
  },
2278
  {
2279
  "date": "2026-08-05",
 
2280
  "day_of_week": "WED",
2281
  "dow_prob": 57.1,
2282
  "sp500_prob": 52.4,
@@ -2289,6 +2476,7 @@
2289
  },
2290
  {
2291
  "date": "2026-08-06",
 
2292
  "day_of_week": "THU",
2293
  "dow_prob": 47.6,
2294
  "sp500_prob": 52.4,
@@ -2301,6 +2489,7 @@
2301
  },
2302
  {
2303
  "date": "2026-08-07",
 
2304
  "day_of_week": "FRI",
2305
  "dow_prob": 52.4,
2306
  "sp500_prob": 47.6,
@@ -2313,6 +2502,7 @@
2313
  },
2314
  {
2315
  "date": "2026-08-10",
 
2316
  "day_of_week": "MON",
2317
  "dow_prob": 52.4,
2318
  "sp500_prob": 52.4,
@@ -2325,6 +2515,7 @@
2325
  },
2326
  {
2327
  "date": "2026-08-11",
 
2328
  "day_of_week": "TUE",
2329
  "dow_prob": 38.1,
2330
  "sp500_prob": 42.9,
@@ -2337,6 +2528,7 @@
2337
  },
2338
  {
2339
  "date": "2026-08-12",
 
2340
  "day_of_week": "WED",
2341
  "dow_prob": 33.3,
2342
  "sp500_prob": 47.6,
@@ -2349,6 +2541,7 @@
2349
  },
2350
  {
2351
  "date": "2026-08-13",
 
2352
  "day_of_week": "THU",
2353
  "dow_prob": 61.9,
2354
  "sp500_prob": 47.6,
@@ -2361,6 +2554,7 @@
2361
  },
2362
  {
2363
  "date": "2026-08-14",
 
2364
  "day_of_week": "FRI",
2365
  "dow_prob": 66.7,
2366
  "sp500_prob": 57.1,
@@ -2373,6 +2567,7 @@
2373
  },
2374
  {
2375
  "date": "2026-08-17",
 
2376
  "day_of_week": "MON",
2377
  "dow_prob": 57.1,
2378
  "sp500_prob": 66.7,
@@ -2385,6 +2580,7 @@
2385
  },
2386
  {
2387
  "date": "2026-08-18",
 
2388
  "day_of_week": "TUE",
2389
  "dow_prob": 52.4,
2390
  "sp500_prob": 61.9,
@@ -2397,6 +2593,7 @@
2397
  },
2398
  {
2399
  "date": "2026-08-19",
 
2400
  "day_of_week": "WED",
2401
  "dow_prob": 61.9,
2402
  "sp500_prob": 61.9,
@@ -2409,6 +2606,7 @@
2409
  },
2410
  {
2411
  "date": "2026-08-20",
 
2412
  "day_of_week": "THU",
2413
  "dow_prob": 52.4,
2414
  "sp500_prob": 47.6,
@@ -2421,6 +2619,7 @@
2421
  },
2422
  {
2423
  "date": "2026-08-21",
 
2424
  "day_of_week": "FRI",
2425
  "dow_prob": 47.6,
2426
  "sp500_prob": 42.9,
@@ -2433,6 +2632,7 @@
2433
  },
2434
  {
2435
  "date": "2026-08-24",
 
2436
  "day_of_week": "MON",
2437
  "dow_prob": 61.9,
2438
  "sp500_prob": 57.1,
@@ -2445,6 +2645,7 @@
2445
  },
2446
  {
2447
  "date": "2026-08-25",
 
2448
  "day_of_week": "TUE",
2449
  "dow_prob": 57.1,
2450
  "sp500_prob": 57.1,
@@ -2457,6 +2658,7 @@
2457
  },
2458
  {
2459
  "date": "2026-08-26",
 
2460
  "day_of_week": "WED",
2461
  "dow_prob": 47.6,
2462
  "sp500_prob": 57.1,
@@ -2469,6 +2671,7 @@
2469
  },
2470
  {
2471
  "date": "2026-08-27",
 
2472
  "day_of_week": "THU",
2473
  "dow_prob": 90.5,
2474
  "sp500_prob": 90.5,
@@ -2481,6 +2684,7 @@
2481
  },
2482
  {
2483
  "date": "2026-08-28",
 
2484
  "day_of_week": "FRI",
2485
  "dow_prob": 42.9,
2486
  "sp500_prob": 42.9,
@@ -2493,6 +2697,7 @@
2493
  },
2494
  {
2495
  "date": "2026-08-31",
 
2496
  "day_of_week": "MON",
2497
  "dow_prob": 47.6,
2498
  "sp500_prob": 52.4,
@@ -2505,6 +2710,7 @@
2505
  },
2506
  {
2507
  "date": "2026-09-01",
 
2508
  "day_of_week": "TUE",
2509
  "dow_prob": 42.9,
2510
  "sp500_prob": 52.4,
@@ -2517,6 +2723,7 @@
2517
  },
2518
  {
2519
  "date": "2026-09-02",
 
2520
  "day_of_week": "WED",
2521
  "dow_prob": 66.7,
2522
  "sp500_prob": 42.9,
@@ -2529,6 +2736,7 @@
2529
  },
2530
  {
2531
  "date": "2026-09-03",
 
2532
  "day_of_week": "THU",
2533
  "dow_prob": 52.4,
2534
  "sp500_prob": 47.6,
@@ -2541,6 +2749,7 @@
2541
  },
2542
  {
2543
  "date": "2026-09-04",
 
2544
  "day_of_week": "FRI",
2545
  "dow_prob": 47.6,
2546
  "sp500_prob": 47.6,
@@ -2553,6 +2762,7 @@
2553
  },
2554
  {
2555
  "date": "2026-09-08",
 
2556
  "day_of_week": "TUE",
2557
  "dow_prob": 57.1,
2558
  "sp500_prob": 47.6,
@@ -2565,6 +2775,7 @@
2565
  },
2566
  {
2567
  "date": "2026-09-09",
 
2568
  "day_of_week": "WED",
2569
  "dow_prob": 61.9,
2570
  "sp500_prob": 71.4,
@@ -2577,6 +2788,7 @@
2577
  },
2578
  {
2579
  "date": "2026-09-10",
 
2580
  "day_of_week": "THU",
2581
  "dow_prob": 81.0,
2582
  "sp500_prob": 81.0,
@@ -2589,6 +2801,7 @@
2589
  },
2590
  {
2591
  "date": "2026-09-11",
 
2592
  "day_of_week": "FRI",
2593
  "dow_prob": 66.7,
2594
  "sp500_prob": 76.2,
@@ -2601,6 +2814,7 @@
2601
  },
2602
  {
2603
  "date": "2026-09-14",
 
2604
  "day_of_week": "MON",
2605
  "dow_prob": 61.9,
2606
  "sp500_prob": 57.1,
@@ -2613,6 +2827,7 @@
2613
  },
2614
  {
2615
  "date": "2026-09-15",
 
2616
  "day_of_week": "TUE",
2617
  "dow_prob": 61.9,
2618
  "sp500_prob": 57.1,
@@ -2625,6 +2840,7 @@
2625
  },
2626
  {
2627
  "date": "2026-09-16",
 
2628
  "day_of_week": "WED",
2629
  "dow_prob": 76.2,
2630
  "sp500_prob": 71.4,
@@ -2637,6 +2853,7 @@
2637
  },
2638
  {
2639
  "date": "2026-09-17",
 
2640
  "day_of_week": "THU",
2641
  "dow_prob": 47.6,
2642
  "sp500_prob": 47.6,
@@ -2649,6 +2866,7 @@
2649
  },
2650
  {
2651
  "date": "2026-09-18",
 
2652
  "day_of_week": "FRI",
2653
  "dow_prob": 52.4,
2654
  "sp500_prob": 47.6,
@@ -2661,6 +2879,7 @@
2661
  },
2662
  {
2663
  "date": "2026-09-21",
 
2664
  "day_of_week": "MON",
2665
  "dow_prob": 42.9,
2666
  "sp500_prob": 23.8,
@@ -2673,6 +2892,7 @@
2673
  },
2674
  {
2675
  "date": "2026-09-22",
 
2676
  "day_of_week": "TUE",
2677
  "dow_prob": 38.1,
2678
  "sp500_prob": 28.6,
@@ -2685,6 +2905,7 @@
2685
  },
2686
  {
2687
  "date": "2026-09-23",
 
2688
  "day_of_week": "WED",
2689
  "dow_prob": 28.6,
2690
  "sp500_prob": 28.6,
@@ -2697,6 +2918,7 @@
2697
  },
2698
  {
2699
  "date": "2026-09-24",
 
2700
  "day_of_week": "THU",
2701
  "dow_prob": 47.6,
2702
  "sp500_prob": 47.6,
@@ -2709,6 +2931,7 @@
2709
  },
2710
  {
2711
  "date": "2026-09-25",
 
2712
  "day_of_week": "FRI",
2713
  "dow_prob": 47.6,
2714
  "sp500_prob": 38.1,
@@ -2721,6 +2944,7 @@
2721
  },
2722
  {
2723
  "date": "2026-09-28",
 
2724
  "day_of_week": "MON",
2725
  "dow_prob": 66.7,
2726
  "sp500_prob": 71.4,
@@ -2733,6 +2957,7 @@
2733
  },
2734
  {
2735
  "date": "2026-09-29",
 
2736
  "day_of_week": "TUE",
2737
  "dow_prob": 57.1,
2738
  "sp500_prob": 52.4,
@@ -2745,6 +2970,7 @@
2745
  },
2746
  {
2747
  "date": "2026-09-30",
 
2748
  "day_of_week": "WED",
2749
  "dow_prob": 42.9,
2750
  "sp500_prob": 38.1,
@@ -2757,6 +2983,7 @@
2757
  },
2758
  {
2759
  "date": "2026-10-01",
 
2760
  "day_of_week": "THU",
2761
  "dow_prob": 47.6,
2762
  "sp500_prob": 57.1,
@@ -2769,6 +2996,7 @@
2769
  },
2770
  {
2771
  "date": "2026-10-02",
 
2772
  "day_of_week": "FRI",
2773
  "dow_prob": 38.1,
2774
  "sp500_prob": 42.9,
@@ -2781,6 +3009,7 @@
2781
  },
2782
  {
2783
  "date": "2026-10-05",
 
2784
  "day_of_week": "MON",
2785
  "dow_prob": 66.7,
2786
  "sp500_prob": 66.7,
@@ -2793,6 +3022,7 @@
2793
  },
2794
  {
2795
  "date": "2026-10-06",
 
2796
  "day_of_week": "TUE",
2797
  "dow_prob": 61.9,
2798
  "sp500_prob": 57.1,
@@ -2805,6 +3035,7 @@
2805
  },
2806
  {
2807
  "date": "2026-10-07",
 
2808
  "day_of_week": "WED",
2809
  "dow_prob": 33.3,
2810
  "sp500_prob": 33.3,
@@ -2817,6 +3048,7 @@
2817
  },
2818
  {
2819
  "date": "2026-10-08",
 
2820
  "day_of_week": "THU",
2821
  "dow_prob": 52.4,
2822
  "sp500_prob": 47.6,
@@ -2829,6 +3061,7 @@
2829
  },
2830
  {
2831
  "date": "2026-10-09",
 
2832
  "day_of_week": "FRI",
2833
  "dow_prob": 66.7,
2834
  "sp500_prob": 61.9,
@@ -2841,6 +3074,7 @@
2841
  },
2842
  {
2843
  "date": "2026-10-12",
 
2844
  "day_of_week": "MON",
2845
  "dow_prob": 47.6,
2846
  "sp500_prob": 47.6,
@@ -2853,6 +3087,7 @@
2853
  },
2854
  {
2855
  "date": "2026-10-13",
 
2856
  "day_of_week": "TUE",
2857
  "dow_prob": 33.3,
2858
  "sp500_prob": 42.9,
@@ -2865,6 +3100,7 @@
2865
  },
2866
  {
2867
  "date": "2026-10-14",
 
2868
  "day_of_week": "WED",
2869
  "dow_prob": 61.9,
2870
  "sp500_prob": 57.1,
@@ -2877,6 +3113,7 @@
2877
  },
2878
  {
2879
  "date": "2026-10-15",
 
2880
  "day_of_week": "THU",
2881
  "dow_prob": 52.4,
2882
  "sp500_prob": 57.1,
@@ -2889,6 +3126,7 @@
2889
  },
2890
  {
2891
  "date": "2026-10-16",
 
2892
  "day_of_week": "FRI",
2893
  "dow_prob": 66.7,
2894
  "sp500_prob": 71.4,
@@ -2901,6 +3139,7 @@
2901
  },
2902
  {
2903
  "date": "2026-10-19",
 
2904
  "day_of_week": "MON",
2905
  "dow_prob": 52.4,
2906
  "sp500_prob": 57.1,
@@ -2913,6 +3152,7 @@
2913
  },
2914
  {
2915
  "date": "2026-10-20",
 
2916
  "day_of_week": "TUE",
2917
  "dow_prob": 47.6,
2918
  "sp500_prob": 52.4,
@@ -2925,6 +3165,7 @@
2925
  },
2926
  {
2927
  "date": "2026-10-21",
 
2928
  "day_of_week": "WED",
2929
  "dow_prob": 28.6,
2930
  "sp500_prob": 38.1,
@@ -2937,6 +3178,7 @@
2937
  },
2938
  {
2939
  "date": "2026-10-22",
 
2940
  "day_of_week": "THU",
2941
  "dow_prob": 52.4,
2942
  "sp500_prob": 66.7,
@@ -2949,6 +3191,7 @@
2949
  },
2950
  {
2951
  "date": "2026-10-23",
 
2952
  "day_of_week": "FRI",
2953
  "dow_prob": 57.1,
2954
  "sp500_prob": 71.4,
@@ -2961,6 +3204,7 @@
2961
  },
2962
  {
2963
  "date": "2026-10-26",
 
2964
  "day_of_week": "MON",
2965
  "dow_prob": 38.1,
2966
  "sp500_prob": 33.3,
@@ -2973,6 +3217,7 @@
2973
  },
2974
  {
2975
  "date": "2026-10-27",
 
2976
  "day_of_week": "TUE",
2977
  "dow_prob": 66.7,
2978
  "sp500_prob": 57.1,
@@ -2985,6 +3230,7 @@
2985
  },
2986
  {
2987
  "date": "2026-10-28",
 
2988
  "day_of_week": "WED",
2989
  "dow_prob": 38.1,
2990
  "sp500_prob": 38.1,
@@ -2997,6 +3243,7 @@
2997
  },
2998
  {
2999
  "date": "2026-10-29",
 
3000
  "day_of_week": "THU",
3001
  "dow_prob": 61.9,
3002
  "sp500_prob": 66.7,
@@ -3009,6 +3256,7 @@
3009
  },
3010
  {
3011
  "date": "2026-10-30",
 
3012
  "day_of_week": "FRI",
3013
  "dow_prob": 47.6,
3014
  "sp500_prob": 52.4,
@@ -3021,6 +3269,7 @@
3021
  },
3022
  {
3023
  "date": "2026-11-02",
 
3024
  "day_of_week": "MON",
3025
  "dow_prob": 61.9,
3026
  "sp500_prob": 61.9,
@@ -3033,6 +3282,7 @@
3033
  },
3034
  {
3035
  "date": "2026-11-03",
 
3036
  "day_of_week": "TUE",
3037
  "dow_prob": 61.9,
3038
  "sp500_prob": 66.7,
@@ -3045,6 +3295,7 @@
3045
  },
3046
  {
3047
  "date": "2026-11-04",
 
3048
  "day_of_week": "WED",
3049
  "dow_prob": 66.7,
3050
  "sp500_prob": 61.9,
@@ -3057,6 +3308,7 @@
3057
  },
3058
  {
3059
  "date": "2026-11-05",
 
3060
  "day_of_week": "THU",
3061
  "dow_prob": 71.4,
3062
  "sp500_prob": 81.0,
@@ -3069,6 +3321,7 @@
3069
  },
3070
  {
3071
  "date": "2026-11-06",
 
3072
  "day_of_week": "FRI",
3073
  "dow_prob": 76.2,
3074
  "sp500_prob": 71.4,
@@ -3081,6 +3334,7 @@
3081
  },
3082
  {
3083
  "date": "2026-11-09",
 
3084
  "day_of_week": "MON",
3085
  "dow_prob": 66.7,
3086
  "sp500_prob": 61.9,
@@ -3093,6 +3347,7 @@
3093
  },
3094
  {
3095
  "date": "2026-11-10",
 
3096
  "day_of_week": "TUE",
3097
  "dow_prob": 47.6,
3098
  "sp500_prob": 33.3,
@@ -3105,6 +3360,7 @@
3105
  },
3106
  {
3107
  "date": "2026-11-11",
 
3108
  "day_of_week": "WED",
3109
  "dow_prob": 38.1,
3110
  "sp500_prob": 52.4,
@@ -3117,6 +3373,7 @@
3117
  },
3118
  {
3119
  "date": "2026-11-12",
 
3120
  "day_of_week": "THU",
3121
  "dow_prob": 66.7,
3122
  "sp500_prob": 61.9,
@@ -3129,6 +3386,7 @@
3129
  },
3130
  {
3131
  "date": "2026-11-13",
 
3132
  "day_of_week": "FRI",
3133
  "dow_prob": 42.9,
3134
  "sp500_prob": 42.9,
@@ -3141,6 +3399,7 @@
3141
  },
3142
  {
3143
  "date": "2026-11-16",
 
3144
  "day_of_week": "MON",
3145
  "dow_prob": 66.7,
3146
  "sp500_prob": 57.1,
@@ -3153,6 +3412,7 @@
3153
  },
3154
  {
3155
  "date": "2026-11-17",
 
3156
  "day_of_week": "TUE",
3157
  "dow_prob": 57.1,
3158
  "sp500_prob": 61.9,
@@ -3165,6 +3425,7 @@
3165
  },
3166
  {
3167
  "date": "2026-11-18",
 
3168
  "day_of_week": "WED",
3169
  "dow_prob": 33.3,
3170
  "sp500_prob": 42.9,
@@ -3177,6 +3438,7 @@
3177
  },
3178
  {
3179
  "date": "2026-11-19",
 
3180
  "day_of_week": "THU",
3181
  "dow_prob": 52.4,
3182
  "sp500_prob": 57.1,
@@ -3189,6 +3451,7 @@
3189
  },
3190
  {
3191
  "date": "2026-11-20",
 
3192
  "day_of_week": "FRI",
3193
  "dow_prob": 61.9,
3194
  "sp500_prob": 57.1,
@@ -3201,6 +3464,7 @@
3201
  },
3202
  {
3203
  "date": "2026-11-23",
 
3204
  "day_of_week": "MON",
3205
  "dow_prob": 71.4,
3206
  "sp500_prob": 66.7,
@@ -3213,6 +3477,7 @@
3213
  },
3214
  {
3215
  "date": "2026-11-24",
 
3216
  "day_of_week": "TUE",
3217
  "dow_prob": 71.4,
3218
  "sp500_prob": 61.9,
@@ -3225,6 +3490,7 @@
3225
  },
3226
  {
3227
  "date": "2026-11-25",
 
3228
  "day_of_week": "WED",
3229
  "dow_prob": 66.7,
3230
  "sp500_prob": 61.9,
@@ -3237,6 +3503,7 @@
3237
  },
3238
  {
3239
  "date": "2026-11-27",
 
3240
  "day_of_week": "FRI",
3241
  "dow_prob": 61.9,
3242
  "sp500_prob": 61.9,
@@ -3249,6 +3516,7 @@
3249
  },
3250
  {
3251
  "date": "2026-11-30",
 
3252
  "day_of_week": "MON",
3253
  "dow_prob": 57.1,
3254
  "sp500_prob": 52.4,
@@ -3261,6 +3529,7 @@
3261
  },
3262
  {
3263
  "date": "2026-12-01",
 
3264
  "day_of_week": "TUE",
3265
  "dow_prob": 42.9,
3266
  "sp500_prob": 42.9,
@@ -3273,6 +3542,7 @@
3273
  },
3274
  {
3275
  "date": "2026-12-02",
 
3276
  "day_of_week": "WED",
3277
  "dow_prob": 38.1,
3278
  "sp500_prob": 47.6,
@@ -3285,6 +3555,7 @@
3285
  },
3286
  {
3287
  "date": "2026-12-03",
 
3288
  "day_of_week": "THU",
3289
  "dow_prob": 57.1,
3290
  "sp500_prob": 52.4,
@@ -3297,6 +3568,7 @@
3297
  },
3298
  {
3299
  "date": "2026-12-04",
 
3300
  "day_of_week": "FRI",
3301
  "dow_prob": 47.6,
3302
  "sp500_prob": 47.6,
@@ -3309,6 +3581,7 @@
3309
  },
3310
  {
3311
  "date": "2026-12-07",
 
3312
  "day_of_week": "MON",
3313
  "dow_prob": 66.7,
3314
  "sp500_prob": 61.9,
@@ -3321,6 +3594,7 @@
3321
  },
3322
  {
3323
  "date": "2026-12-08",
 
3324
  "day_of_week": "TUE",
3325
  "dow_prob": 61.9,
3326
  "sp500_prob": 61.9,
@@ -3333,6 +3607,7 @@
3333
  },
3334
  {
3335
  "date": "2026-12-09",
 
3336
  "day_of_week": "WED",
3337
  "dow_prob": 47.6,
3338
  "sp500_prob": 52.4,
@@ -3345,6 +3620,7 @@
3345
  },
3346
  {
3347
  "date": "2026-12-10",
 
3348
  "day_of_week": "THU",
3349
  "dow_prob": 57.1,
3350
  "sp500_prob": 61.9,
@@ -3357,6 +3633,7 @@
3357
  },
3358
  {
3359
  "date": "2026-12-11",
 
3360
  "day_of_week": "FRI",
3361
  "dow_prob": 61.9,
3362
  "sp500_prob": 52.4,
@@ -3369,6 +3646,7 @@
3369
  },
3370
  {
3371
  "date": "2026-12-14",
 
3372
  "day_of_week": "MON",
3373
  "dow_prob": 47.6,
3374
  "sp500_prob": 42.9,
@@ -3381,6 +3659,7 @@
3381
  },
3382
  {
3383
  "date": "2026-12-15",
 
3384
  "day_of_week": "TUE",
3385
  "dow_prob": 61.9,
3386
  "sp500_prob": 61.9,
@@ -3393,6 +3672,7 @@
3393
  },
3394
  {
3395
  "date": "2026-12-16",
 
3396
  "day_of_week": "WED",
3397
  "dow_prob": 42.9,
3398
  "sp500_prob": 52.4,
@@ -3405,6 +3685,7 @@
3405
  },
3406
  {
3407
  "date": "2026-12-17",
 
3408
  "day_of_week": "THU",
3409
  "dow_prob": 28.6,
3410
  "sp500_prob": 33.3,
@@ -3417,6 +3698,7 @@
3417
  },
3418
  {
3419
  "date": "2026-12-18",
 
3420
  "day_of_week": "FRI",
3421
  "dow_prob": 52.4,
3422
  "sp500_prob": 47.6,
@@ -3429,6 +3711,7 @@
3429
  },
3430
  {
3431
  "date": "2026-12-21",
 
3432
  "day_of_week": "MON",
3433
  "dow_prob": 71.4,
3434
  "sp500_prob": 61.9,
@@ -3441,6 +3724,7 @@
3441
  },
3442
  {
3443
  "date": "2026-12-22",
 
3444
  "day_of_week": "TUE",
3445
  "dow_prob": 66.7,
3446
  "sp500_prob": 66.7,
@@ -3453,6 +3737,7 @@
3453
  },
3454
  {
3455
  "date": "2026-12-23",
 
3456
  "day_of_week": "WED",
3457
  "dow_prob": 71.4,
3458
  "sp500_prob": 66.7,
@@ -3465,6 +3750,7 @@
3465
  },
3466
  {
3467
  "date": "2026-12-24",
 
3468
  "day_of_week": "THU",
3469
  "dow_prob": 52.4,
3470
  "sp500_prob": 61.9,
@@ -3477,6 +3763,7 @@
3477
  },
3478
  {
3479
  "date": "2026-12-28",
 
3480
  "day_of_week": "MON",
3481
  "dow_prob": 76.2,
3482
  "sp500_prob": 66.7,
@@ -3489,6 +3776,7 @@
3489
  },
3490
  {
3491
  "date": "2026-12-29",
 
3492
  "day_of_week": "TUE",
3493
  "dow_prob": 42.9,
3494
  "sp500_prob": 47.6,
@@ -3501,6 +3789,7 @@
3501
  },
3502
  {
3503
  "date": "2026-12-30",
 
3504
  "day_of_week": "WED",
3505
  "dow_prob": 42.9,
3506
  "sp500_prob": 42.9,
@@ -3513,6 +3802,7 @@
3513
  },
3514
  {
3515
  "date": "2026-12-31",
 
3516
  "day_of_week": "THU",
3517
  "dow_prob": 33.3,
3518
  "sp500_prob": 28.6,
 
3
  "format": "almanac-json-db-v1",
4
  "source": "Stock Trader's Almanac 2026 (Wiley)",
5
  "year": 2026,
6
+ "generated_at": "2026-04-05T10:29:48.765585Z",
7
  "tables": [
8
  "metadata",
9
  "months",
 
30
  },
31
  {
32
  "key": "generated_at",
33
+ "value": "2026-04-05T10:29:48.765585Z"
34
  },
35
  {
36
  "key": "format",
 
509
  "icon",
510
  "notes"
511
  ],
512
+ "row_count": 254,
513
  "rows": [
514
+ {
515
+ "date": "2025-12-29",
516
+ "source_month": "2026-01",
517
+ "day_of_week": "MON",
518
+ "dow_prob": 42.9,
519
+ "sp500_prob": 47.6,
520
+ "nasdaq_prob": 38.1,
521
+ "dow_dir": "S",
522
+ "sp500_dir": "S",
523
+ "nasdaq_dir": "N",
524
+ "icon": null,
525
+ "notes": ""
526
+ },
527
+ {
528
+ "date": "2025-12-30",
529
+ "source_month": "2026-01",
530
+ "day_of_week": "TUE",
531
+ "dow_prob": 42.9,
532
+ "sp500_prob": 42.9,
533
+ "nasdaq_prob": 38.1,
534
+ "dow_dir": "S",
535
+ "sp500_dir": "S",
536
+ "nasdaq_dir": "N",
537
+ "icon": null,
538
+ "notes": ""
539
+ },
540
+ {
541
+ "date": "2025-12-31",
542
+ "source_month": "2026-01",
543
+ "day_of_week": "WED",
544
+ "dow_prob": 33.3,
545
+ "sp500_prob": 28.6,
546
+ "nasdaq_prob": 28.6,
547
+ "dow_dir": "N",
548
+ "sp500_dir": "N",
549
+ "nasdaq_dir": "N",
550
+ "icon": "bear",
551
+ "notes": "Last Trading Day of the Year, NASDAQ Down 19 of last 25"
552
+ },
553
  {
554
  "date": "2026-01-02",
555
+ "source_month": "2026-01",
556
  "day_of_week": "FRI",
557
  "dow_prob": 66.7,
558
  "sp500_prob": 52.4,
 
565
  },
566
  {
567
  "date": "2026-01-05",
568
+ "source_month": "2026-01",
569
  "day_of_week": "MON",
570
  "dow_prob": 61.9,
571
  "sp500_prob": 47.6,
 
578
  },
579
  {
580
  "date": "2026-01-06",
581
+ "source_month": "2026-01",
582
  "day_of_week": "TUE",
583
  "dow_prob": 47.6,
584
  "sp500_prob": 52.4,
 
591
  },
592
  {
593
  "date": "2026-01-07",
594
+ "source_month": "2026-01",
595
  "day_of_week": "WED",
596
  "dow_prob": 61.9,
597
  "sp500_prob": 66.7,
 
604
  },
605
  {
606
  "date": "2026-01-08",
607
+ "source_month": "2026-01",
608
  "day_of_week": "THU",
609
  "dow_prob": 42.9,
610
  "sp500_prob": 52.4,
 
617
  },
618
  {
619
  "date": "2026-01-09",
620
+ "source_month": "2026-01",
621
  "day_of_week": "FRI",
622
  "dow_prob": 52.4,
623
  "sp500_prob": 57.1,
 
630
  },
631
  {
632
  "date": "2026-01-12",
633
+ "source_month": "2026-01",
634
  "day_of_week": "MON",
635
  "dow_prob": 61.9,
636
  "sp500_prob": 71.4,
 
643
  },
644
  {
645
  "date": "2026-01-13",
646
+ "source_month": "2026-01",
647
  "day_of_week": "TUE",
648
  "dow_prob": 52.4,
649
  "sp500_prob": 52.4,
 
656
  },
657
  {
658
  "date": "2026-01-14",
659
+ "source_month": "2026-01",
660
  "day_of_week": "WED",
661
  "dow_prob": 47.6,
662
  "sp500_prob": 52.4,
 
669
  },
670
  {
671
  "date": "2026-01-15",
672
+ "source_month": "2026-01",
673
  "day_of_week": "THU",
674
  "dow_prob": 42.9,
675
  "sp500_prob": 47.6,
 
682
  },
683
  {
684
  "date": "2026-01-16",
685
+ "source_month": "2026-01",
686
  "day_of_week": "FRI",
687
  "dow_prob": 57.1,
688
  "sp500_prob": 66.7,
 
695
  },
696
  {
697
  "date": "2026-01-20",
698
+ "source_month": "2026-01",
699
  "day_of_week": "TUE",
700
  "dow_prob": 42.9,
701
  "sp500_prob": 42.9,
 
708
  },
709
  {
710
  "date": "2026-01-21",
711
+ "source_month": "2026-01",
712
  "day_of_week": "WED",
713
  "dow_prob": 52.4,
714
  "sp500_prob": 61.9,
 
721
  },
722
  {
723
  "date": "2026-01-22",
724
+ "source_month": "2026-01",
725
  "day_of_week": "THU",
726
  "dow_prob": 42.9,
727
  "sp500_prob": 57.1,
 
734
  },
735
  {
736
  "date": "2026-01-23",
737
+ "source_month": "2026-01",
738
  "day_of_week": "FRI",
739
  "dow_prob": 47.6,
740
  "sp500_prob": 52.4,
 
747
  },
748
  {
749
  "date": "2026-01-26",
750
+ "source_month": "2026-01",
751
  "day_of_week": "MON",
752
  "dow_prob": 57.1,
753
  "sp500_prob": 61.9,
 
760
  },
761
  {
762
  "date": "2026-01-27",
763
+ "source_month": "2026-01",
764
  "day_of_week": "TUE",
765
  "dow_prob": 57.1,
766
  "sp500_prob": 47.6,
 
773
  },
774
  {
775
  "date": "2026-01-28",
776
+ "source_month": "2026-01",
777
  "day_of_week": "WED",
778
  "dow_prob": 52.4,
779
  "sp500_prob": 42.9,
 
786
  },
787
  {
788
  "date": "2026-01-29",
789
+ "source_month": "2026-01",
790
  "day_of_week": "THU",
791
  "dow_prob": 47.6,
792
  "sp500_prob": 47.6,
 
799
  },
800
  {
801
  "date": "2026-01-30",
802
+ "source_month": "2026-01",
803
  "day_of_week": "FRI",
804
  "dow_prob": 38.1,
805
  "sp500_prob": 42.9,
 
812
  },
813
  {
814
  "date": "2026-02-02",
815
+ "source_month": "2026-02",
816
  "day_of_week": "MON",
817
  "dow_prob": 85.7,
818
  "sp500_prob": 81.0,
 
825
  },
826
  {
827
  "date": "2026-02-03",
828
+ "source_month": "2026-02",
829
  "day_of_week": "TUE",
830
  "dow_prob": 57.1,
831
  "sp500_prob": 71.4,
 
838
  },
839
  {
840
  "date": "2026-02-04",
841
+ "source_month": "2026-02",
842
  "day_of_week": "WED",
843
  "dow_prob": 47.6,
844
  "sp500_prob": 38.1,
 
851
  },
852
  {
853
  "date": "2026-02-05",
854
+ "source_month": "2026-02",
855
  "day_of_week": "THU",
856
  "dow_prob": 66.7,
857
  "sp500_prob": 71.4,
 
864
  },
865
  {
866
  "date": "2026-02-06",
867
+ "source_month": "2026-02",
868
  "day_of_week": "FRI",
869
  "dow_prob": 61.9,
870
  "sp500_prob": 57.1,
 
877
  },
878
  {
879
  "date": "2026-02-09",
880
+ "source_month": "2026-02",
881
  "day_of_week": "MON",
882
  "dow_prob": 47.6,
883
  "sp500_prob": 61.9,
 
890
  },
891
  {
892
  "date": "2026-02-10",
893
+ "source_month": "2026-02",
894
  "day_of_week": "TUE",
895
  "dow_prob": 52.4,
896
  "sp500_prob": 57.1,
 
903
  },
904
  {
905
  "date": "2026-02-11",
906
+ "source_month": "2026-02",
907
  "day_of_week": "WED",
908
  "dow_prob": 61.9,
909
  "sp500_prob": 57.1,
 
916
  },
917
  {
918
  "date": "2026-02-12",
919
+ "source_month": "2026-02",
920
  "day_of_week": "THU",
921
  "dow_prob": 57.1,
922
  "sp500_prob": 71.4,
 
929
  },
930
  {
931
  "date": "2026-02-13",
932
+ "source_month": "2026-02",
933
  "day_of_week": "FRI",
934
  "dow_prob": 47.6,
935
  "sp500_prob": 61.9,
 
942
  },
943
  {
944
  "date": "2026-02-17",
945
+ "source_month": "2026-02",
946
  "day_of_week": "TUE",
947
  "dow_prob": 71.4,
948
  "sp500_prob": 71.4,
 
955
  },
956
  {
957
  "date": "2026-02-18",
958
+ "source_month": "2026-02",
959
  "day_of_week": "WED",
960
  "dow_prob": 61.9,
961
  "sp500_prob": 52.4,
 
968
  },
969
  {
970
  "date": "2026-02-19",
971
+ "source_month": "2026-02",
972
  "day_of_week": "THU",
973
  "dow_prob": 42.9,
974
  "sp500_prob": 38.1,
 
981
  },
982
  {
983
  "date": "2026-02-20",
984
+ "source_month": "2026-02",
985
  "day_of_week": "FRI",
986
  "dow_prob": 38.1,
987
  "sp500_prob": 33.3,
 
994
  },
995
  {
996
  "date": "2026-02-23",
997
+ "source_month": "2026-02",
998
  "day_of_week": "MON",
999
  "dow_prob": 47.6,
1000
  "sp500_prob": 38.1,
 
1007
  },
1008
  {
1009
  "date": "2026-02-24",
1010
+ "source_month": "2026-02",
1011
  "day_of_week": "TUE",
1012
  "dow_prob": 47.6,
1013
  "sp500_prob": 52.4,
 
1020
  },
1021
  {
1022
  "date": "2026-02-25",
1023
+ "source_month": "2026-02",
1024
  "day_of_week": "WED",
1025
  "dow_prob": 57.1,
1026
  "sp500_prob": 61.9,
 
1033
  },
1034
  {
1035
  "date": "2026-02-26",
1036
+ "source_month": "2026-02",
1037
  "day_of_week": "THU",
1038
  "dow_prob": 42.9,
1039
  "sp500_prob": 47.6,
 
1046
  },
1047
  {
1048
  "date": "2026-02-27",
1049
+ "source_month": "2026-02",
1050
  "day_of_week": "FRI",
1051
  "dow_prob": 28.6,
1052
  "sp500_prob": 28.6,
 
1059
  },
1060
  {
1061
  "date": "2026-03-02",
1062
+ "source_month": "2026-03",
1063
  "day_of_week": "MON",
1064
  "dow_prob": 66.7,
1065
  "sp500_prob": 66.7,
 
1072
  },
1073
  {
1074
  "date": "2026-03-03",
1075
+ "source_month": "2026-03",
1076
  "day_of_week": "TUE",
1077
  "dow_prob": 33.3,
1078
  "sp500_prob": 38.1,
 
1085
  },
1086
  {
1087
  "date": "2026-03-04",
1088
+ "source_month": "2026-03",
1089
  "day_of_week": "WED",
1090
  "dow_prob": 52.4,
1091
  "sp500_prob": 57.1,
 
1098
  },
1099
  {
1100
  "date": "2026-03-05",
1101
+ "source_month": "2026-03",
1102
  "day_of_week": "THU",
1103
  "dow_prob": 47.6,
1104
  "sp500_prob": 52.4,
 
1111
  },
1112
  {
1113
  "date": "2026-03-06",
1114
+ "source_month": "2026-03",
1115
  "day_of_week": "FRI",
1116
  "dow_prob": 47.6,
1117
  "sp500_prob": 47.6,
 
1124
  },
1125
  {
1126
  "date": "2026-03-09",
1127
+ "source_month": "2026-03",
1128
  "day_of_week": "MON",
1129
  "dow_prob": 38.1,
1130
  "sp500_prob": 38.1,
 
1137
  },
1138
  {
1139
  "date": "2026-03-10",
1140
+ "source_month": "2026-03",
1141
  "day_of_week": "TUE",
1142
  "dow_prob": 66.7,
1143
  "sp500_prob": 61.9,
 
1150
  },
1151
  {
1152
  "date": "2026-03-11",
1153
+ "source_month": "2026-03",
1154
  "day_of_week": "WED",
1155
  "dow_prob": 47.6,
1156
  "sp500_prob": 57.1,
 
1163
  },
1164
  {
1165
  "date": "2026-03-12",
1166
+ "source_month": "2026-03",
1167
  "day_of_week": "THU",
1168
  "dow_prob": 52.4,
1169
  "sp500_prob": 57.1,
 
1176
  },
1177
  {
1178
  "date": "2026-03-13",
1179
+ "source_month": "2026-03",
1180
  "day_of_week": "FRI",
1181
  "dow_prob": 66.7,
1182
  "sp500_prob": 42.9,
 
1189
  },
1190
  {
1191
  "date": "2026-03-16",
1192
+ "source_month": "2026-03",
1193
  "day_of_week": "MON",
1194
  "dow_prob": 61.9,
1195
  "sp500_prob": 47.6,
 
1202
  },
1203
  {
1204
  "date": "2026-03-17",
1205
+ "source_month": "2026-03",
1206
  "day_of_week": "TUE",
1207
  "dow_prob": 61.9,
1208
  "sp500_prob": 66.7,
 
1215
  },
1216
  {
1217
  "date": "2026-03-18",
1218
+ "source_month": "2026-03",
1219
  "day_of_week": "WED",
1220
  "dow_prob": 61.9,
1221
  "sp500_prob": 61.9,
 
1228
  },
1229
  {
1230
  "date": "2026-03-19",
1231
+ "source_month": "2026-03",
1232
  "day_of_week": "THU",
1233
  "dow_prob": 61.9,
1234
  "sp500_prob": 52.4,
 
1241
  },
1242
  {
1243
  "date": "2026-03-20",
1244
+ "source_month": "2026-03",
1245
  "day_of_week": "FRI",
1246
  "dow_prob": 52.4,
1247
  "sp500_prob": 52.4,
 
1254
  },
1255
  {
1256
  "date": "2026-03-23",
1257
+ "source_month": "2026-03",
1258
  "day_of_week": "MON",
1259
  "dow_prob": 42.9,
1260
  "sp500_prob": 38.1,
 
1267
  },
1268
  {
1269
  "date": "2026-03-24",
1270
+ "source_month": "2026-03",
1271
  "day_of_week": "TUE",
1272
  "dow_prob": 42.9,
1273
  "sp500_prob": 47.6,
 
1280
  },
1281
  {
1282
  "date": "2026-03-25",
1283
+ "source_month": "2026-03",
1284
  "day_of_week": "WED",
1285
  "dow_prob": 61.9,
1286
  "sp500_prob": 57.1,
 
1293
  },
1294
  {
1295
  "date": "2026-03-26",
1296
+ "source_month": "2026-03",
1297
  "day_of_week": "THU",
1298
  "dow_prob": 47.6,
1299
  "sp500_prob": 47.6,
 
1306
  },
1307
  {
1308
  "date": "2026-03-27",
1309
+ "source_month": "2026-03",
1310
  "day_of_week": "FRI",
1311
  "dow_prob": 47.6,
1312
  "sp500_prob": 47.6,
 
1319
  },
1320
  {
1321
  "date": "2026-03-30",
1322
+ "source_month": "2026-04",
1323
  "day_of_week": "MON",
1324
  "dow_prob": 66.7,
1325
  "sp500_prob": 61.9,
 
1332
  },
1333
  {
1334
  "date": "2026-03-31",
1335
+ "source_month": "2026-04",
1336
  "day_of_week": "TUE",
1337
  "dow_prob": 47.6,
1338
  "sp500_prob": 47.6,
 
1345
  },
1346
  {
1347
  "date": "2026-04-01",
1348
+ "source_month": "2026-04",
1349
  "day_of_week": "WED",
1350
  "dow_prob": 66.7,
1351
  "sp500_prob": 66.7,
 
1358
  },
1359
  {
1360
  "date": "2026-04-02",
1361
+ "source_month": "2026-04",
1362
  "day_of_week": "THU",
1363
  "dow_prob": 71.4,
1364
  "sp500_prob": 76.2,
 
1371
  },
1372
  {
1373
  "date": "2026-04-06",
1374
+ "source_month": "2026-04",
1375
  "day_of_week": "MON",
1376
  "dow_prob": 47.6,
1377
  "sp500_prob": 52.4,
 
1384
  },
1385
  {
1386
  "date": "2026-04-07",
1387
+ "source_month": "2026-04",
1388
  "day_of_week": "TUE",
1389
  "dow_prob": 57.1,
1390
  "sp500_prob": 57.1,
 
1397
  },
1398
  {
1399
  "date": "2026-04-08",
1400
+ "source_month": "2026-04",
1401
  "day_of_week": "WED",
1402
  "dow_prob": 47.6,
1403
  "sp500_prob": 47.6,
 
1410
  },
1411
  {
1412
  "date": "2026-04-09",
1413
+ "source_month": "2026-04",
1414
  "day_of_week": "THU",
1415
  "dow_prob": 66.7,
1416
  "sp500_prob": 61.9,
 
1423
  },
1424
  {
1425
  "date": "2026-04-10",
1426
+ "source_month": "2026-04",
1427
  "day_of_week": "FRI",
1428
  "dow_prob": 47.6,
1429
  "sp500_prob": 52.4,
 
1436
  },
1437
  {
1438
  "date": "2026-04-13",
1439
+ "source_month": "2026-04",
1440
  "day_of_week": "MON",
1441
  "dow_prob": 47.6,
1442
  "sp500_prob": 57.1,
 
1449
  },
1450
  {
1451
  "date": "2026-04-14",
1452
+ "source_month": "2026-04",
1453
  "day_of_week": "TUE",
1454
  "dow_prob": 52.4,
1455
  "sp500_prob": 57.1,
 
1462
  },
1463
  {
1464
  "date": "2026-04-15",
1465
+ "source_month": "2026-04",
1466
  "day_of_week": "WED",
1467
  "dow_prob": 61.9,
1468
  "sp500_prob": 57.1,
 
1475
  },
1476
  {
1477
  "date": "2026-04-16",
1478
+ "source_month": "2026-04",
1479
  "day_of_week": "THU",
1480
  "dow_prob": 52.4,
1481
  "sp500_prob": 57.1,
 
1488
  },
1489
  {
1490
  "date": "2026-04-17",
1491
+ "source_month": "2026-04",
1492
  "day_of_week": "FRI",
1493
  "dow_prob": 61.9,
1494
  "sp500_prob": 66.7,
 
1501
  },
1502
  {
1503
  "date": "2026-04-20",
1504
+ "source_month": "2026-04",
1505
  "day_of_week": "MON",
1506
  "dow_prob": 47.6,
1507
  "sp500_prob": 47.6,
 
1514
  },
1515
  {
1516
  "date": "2026-04-21",
1517
+ "source_month": "2026-04",
1518
  "day_of_week": "TUE",
1519
  "dow_prob": 66.7,
1520
  "sp500_prob": 52.4,
 
1527
  },
1528
  {
1529
  "date": "2026-04-22",
1530
+ "source_month": "2026-04",
1531
  "day_of_week": "WED",
1532
  "dow_prob": 61.9,
1533
  "sp500_prob": 66.7,
 
1540
  },
1541
  {
1542
  "date": "2026-04-23",
1543
+ "source_month": "2026-04",
1544
  "day_of_week": "THU",
1545
  "dow_prob": 66.7,
1546
  "sp500_prob": 61.9,
 
1553
  },
1554
  {
1555
  "date": "2026-04-24",
1556
+ "source_month": "2026-04",
1557
  "day_of_week": "FRI",
1558
  "dow_prob": 52.4,
1559
  "sp500_prob": 61.9,
 
1566
  },
1567
  {
1568
  "date": "2026-04-27",
1569
+ "source_month": "2026-05",
1570
  "day_of_week": "MON",
1571
  "dow_prob": 52.4,
1572
  "sp500_prob": 47.6,
 
1579
  },
1580
  {
1581
  "date": "2026-04-28",
1582
+ "source_month": "2026-05",
1583
  "day_of_week": "TUE",
1584
  "dow_prob": 66.7,
1585
  "sp500_prob": 57.1,
 
1592
  },
1593
  {
1594
  "date": "2026-04-29",
1595
+ "source_month": "2026-05",
1596
  "day_of_week": "WED",
1597
  "dow_prob": 71.4,
1598
  "sp500_prob": 71.4,
 
1605
  },
1606
  {
1607
  "date": "2026-04-30",
1608
+ "source_month": "2026-05",
1609
  "day_of_week": "THU",
1610
  "dow_prob": 28.6,
1611
  "sp500_prob": 33.3,
 
1618
  },
1619
  {
1620
  "date": "2026-05-01",
1621
+ "source_month": "2026-05",
1622
  "day_of_week": "FRI",
1623
  "dow_prob": 57.1,
1624
  "sp500_prob": 61.9,
 
1631
  },
1632
  {
1633
  "date": "2026-05-04",
1634
+ "source_month": "2026-05",
1635
  "day_of_week": "MON",
1636
  "dow_prob": 66.7,
1637
  "sp500_prob": 52.4,
 
1644
  },
1645
  {
1646
  "date": "2026-05-05",
1647
+ "source_month": "2026-05",
1648
  "day_of_week": "TUE",
1649
  "dow_prob": 52.4,
1650
  "sp500_prob": 47.6,
 
1657
  },
1658
  {
1659
  "date": "2026-05-06",
1660
+ "source_month": "2026-05",
1661
  "day_of_week": "WED",
1662
  "dow_prob": 38.1,
1663
  "sp500_prob": 42.9,
 
1670
  },
1671
  {
1672
  "date": "2026-05-07",
1673
+ "source_month": "2026-05",
1674
  "day_of_week": "THU",
1675
  "dow_prob": 66.7,
1676
  "sp500_prob": 66.7,
 
1683
  },
1684
  {
1685
  "date": "2026-05-08",
1686
+ "source_month": "2026-05",
1687
  "day_of_week": "FRI",
1688
  "dow_prob": 66.7,
1689
  "sp500_prob": 52.4,
 
1696
  },
1697
  {
1698
  "date": "2026-05-11",
1699
+ "source_month": "2026-05",
1700
  "day_of_week": "MON",
1701
  "dow_prob": 38.1,
1702
  "sp500_prob": 47.6,
 
1709
  },
1710
  {
1711
  "date": "2026-05-12",
1712
+ "source_month": "2026-05",
1713
  "day_of_week": "TUE",
1714
  "dow_prob": 57.1,
1715
  "sp500_prob": 57.1,
 
1722
  },
1723
  {
1724
  "date": "2026-05-13",
1725
+ "source_month": "2026-05",
1726
  "day_of_week": "WED",
1727
  "dow_prob": 28.6,
1728
  "sp500_prob": 28.6,
 
1735
  },
1736
  {
1737
  "date": "2026-05-14",
1738
+ "source_month": "2026-05",
1739
  "day_of_week": "THU",
1740
  "dow_prob": 57.1,
1741
  "sp500_prob": 47.6,
 
1748
  },
1749
  {
1750
  "date": "2026-05-15",
1751
+ "source_month": "2026-05",
1752
  "day_of_week": "FRI",
1753
  "dow_prob": 66.7,
1754
  "sp500_prob": 57.1,
 
1761
  },
1762
  {
1763
  "date": "2026-05-18",
1764
+ "source_month": "2026-05",
1765
  "day_of_week": "MON",
1766
  "dow_prob": 47.6,
1767
  "sp500_prob": 52.4,
 
1774
  },
1775
  {
1776
  "date": "2026-05-19",
1777
+ "source_month": "2026-05",
1778
  "day_of_week": "TUE",
1779
  "dow_prob": 38.1,
1780
  "sp500_prob": 38.1,
 
1787
  },
1788
  {
1789
  "date": "2026-05-20",
1790
+ "source_month": "2026-05",
1791
  "day_of_week": "WED",
1792
  "dow_prob": 38.1,
1793
  "sp500_prob": 42.9,
 
1800
  },
1801
  {
1802
  "date": "2026-05-21",
1803
+ "source_month": "2026-05",
1804
  "day_of_week": "THU",
1805
  "dow_prob": 47.6,
1806
  "sp500_prob": 47.6,
 
1813
  },
1814
  {
1815
  "date": "2026-05-22",
1816
+ "source_month": "2026-05",
1817
  "day_of_week": "FRI",
1818
  "dow_prob": 47.6,
1819
  "sp500_prob": 52.4,
 
1826
  },
1827
  {
1828
  "date": "2026-05-26",
1829
+ "source_month": "2026-05",
1830
  "day_of_week": "TUE",
1831
  "dow_prob": 57.1,
1832
  "sp500_prob": 71.4,
 
1839
  },
1840
  {
1841
  "date": "2026-05-27",
1842
+ "source_month": "2026-05",
1843
  "day_of_week": "WED",
1844
  "dow_prob": 52.4,
1845
  "sp500_prob": 61.9,
 
1852
  },
1853
  {
1854
  "date": "2026-05-28",
1855
+ "source_month": "2026-05",
1856
  "day_of_week": "THU",
1857
  "dow_prob": 66.7,
1858
  "sp500_prob": 71.4,
 
1865
  },
1866
  {
1867
  "date": "2026-05-29",
1868
+ "source_month": "2026-05",
1869
  "day_of_week": "FRI",
1870
  "dow_prob": 28.6,
1871
  "sp500_prob": 42.9,
 
1878
  },
1879
  {
1880
  "date": "2026-06-01",
1881
+ "source_month": "2026-06",
1882
  "day_of_week": "MON",
1883
  "dow_prob": 71.4,
1884
  "sp500_prob": 66.7,
 
1891
  },
1892
  {
1893
  "date": "2026-06-02",
1894
+ "source_month": "2026-06",
1895
  "day_of_week": "TUE",
1896
  "dow_prob": 66.7,
1897
  "sp500_prob": 76.2,
 
1904
  },
1905
  {
1906
  "date": "2026-06-03",
1907
+ "source_month": "2026-06",
1908
  "day_of_week": "WED",
1909
  "dow_prob": 33.3,
1910
  "sp500_prob": 38.1,
 
1917
  },
1918
  {
1919
  "date": "2026-06-04",
1920
+ "source_month": "2026-06",
1921
  "day_of_week": "THU",
1922
  "dow_prob": 71.4,
1923
  "sp500_prob": 61.9,
 
1930
  },
1931
  {
1932
  "date": "2026-06-05",
1933
+ "source_month": "2026-06",
1934
  "day_of_week": "FRI",
1935
  "dow_prob": 61.9,
1936
  "sp500_prob": 38.1,
 
1943
  },
1944
  {
1945
  "date": "2026-06-08",
1946
+ "source_month": "2026-06",
1947
  "day_of_week": "MON",
1948
  "dow_prob": 71.4,
1949
  "sp500_prob": 71.4,
 
1956
  },
1957
  {
1958
  "date": "2026-06-09",
1959
+ "source_month": "2026-06",
1960
  "day_of_week": "TUE",
1961
  "dow_prob": 38.1,
1962
  "sp500_prob": 38.1,
 
1969
  },
1970
  {
1971
  "date": "2026-06-10",
1972
+ "source_month": "2026-06",
1973
  "day_of_week": "WED",
1974
  "dow_prob": 33.3,
1975
  "sp500_prob": 38.1,
 
1982
  },
1983
  {
1984
  "date": "2026-06-11",
1985
+ "source_month": "2026-06",
1986
  "day_of_week": "THU",
1987
  "dow_prob": 57.1,
1988
  "sp500_prob": 61.9,
 
1995
  },
1996
  {
1997
  "date": "2026-06-12",
1998
+ "source_month": "2026-06",
1999
  "day_of_week": "FRI",
2000
  "dow_prob": 52.4,
2001
  "sp500_prob": 61.9,
 
2008
  },
2009
  {
2010
  "date": "2026-06-15",
2011
+ "source_month": "2026-06",
2012
  "day_of_week": "MON",
2013
  "dow_prob": 57.1,
2014
  "sp500_prob": 66.7,
 
2021
  },
2022
  {
2023
  "date": "2026-06-16",
2024
+ "source_month": "2026-06",
2025
  "day_of_week": "TUE",
2026
  "dow_prob": 52.4,
2027
  "sp500_prob": 52.4,
 
2034
  },
2035
  {
2036
  "date": "2026-06-17",
2037
+ "source_month": "2026-06",
2038
  "day_of_week": "WED",
2039
  "dow_prob": 52.4,
2040
  "sp500_prob": 52.4,
 
2047
  },
2048
  {
2049
  "date": "2026-06-18",
2050
+ "source_month": "2026-06",
2051
  "day_of_week": "THU",
2052
  "dow_prob": 52.4,
2053
  "sp500_prob": 52.4,
 
2060
  },
2061
  {
2062
  "date": "2026-06-22",
2063
+ "source_month": "2026-06",
2064
  "day_of_week": "MON",
2065
  "dow_prob": 38.1,
2066
  "sp500_prob": 42.9,
 
2073
  },
2074
  {
2075
  "date": "2026-06-23",
2076
+ "source_month": "2026-06",
2077
  "day_of_week": "TUE",
2078
  "dow_prob": 47.6,
2079
  "sp500_prob": 52.4,
 
2086
  },
2087
  {
2088
  "date": "2026-06-24",
2089
+ "source_month": "2026-06",
2090
  "day_of_week": "WED",
2091
  "dow_prob": 28.6,
2092
  "sp500_prob": 23.8,
 
2099
  },
2100
  {
2101
  "date": "2026-06-25",
2102
+ "source_month": "2026-06",
2103
  "day_of_week": "THU",
2104
  "dow_prob": 47.6,
2105
  "sp500_prob": 57.1,
 
2112
  },
2113
  {
2114
  "date": "2026-06-26",
2115
+ "source_month": "2026-06",
2116
  "day_of_week": "FRI",
2117
  "dow_prob": 47.6,
2118
  "sp500_prob": 47.6,
 
2125
  },
2126
  {
2127
  "date": "2026-06-29",
2128
+ "source_month": "2026-07",
2129
  "day_of_week": "MON",
2130
  "dow_prob": 61.9,
2131
  "sp500_prob": 61.9,
 
2138
  },
2139
  {
2140
  "date": "2026-06-30",
2141
+ "source_month": "2026-07",
2142
  "day_of_week": "TUE",
2143
  "dow_prob": 57.1,
2144
  "sp500_prob": 57.1,
 
2151
  },
2152
  {
2153
  "date": "2026-07-01",
2154
+ "source_month": "2026-07",
2155
  "day_of_week": "WED",
2156
  "dow_prob": 81.0,
2157
  "sp500_prob": 85.0,
 
2164
  },
2165
  {
2166
  "date": "2026-07-02",
2167
+ "source_month": "2026-07",
2168
  "day_of_week": "THU",
2169
  "dow_prob": 38.1,
2170
  "sp500_prob": 47.6,
 
2177
  },
2178
  {
2179
  "date": "2026-07-06",
2180
+ "source_month": "2026-07",
2181
  "day_of_week": "MON",
2182
  "dow_prob": 57.1,
2183
  "sp500_prob": 66.7,
 
2190
  },
2191
  {
2192
  "date": "2026-07-07",
2193
+ "source_month": "2026-07",
2194
  "day_of_week": "TUE",
2195
  "dow_prob": 57.1,
2196
  "sp500_prob": 57.1,
 
2203
  },
2204
  {
2205
  "date": "2026-07-08",
2206
+ "source_month": "2026-07",
2207
  "day_of_week": "WED",
2208
  "dow_prob": 52.4,
2209
  "sp500_prob": 57.1,
 
2216
  },
2217
  {
2218
  "date": "2026-07-09",
2219
+ "source_month": "2026-07",
2220
  "day_of_week": "THU",
2221
  "dow_prob": 61.9,
2222
  "sp500_prob": 66.7,
 
2229
  },
2230
  {
2231
  "date": "2026-07-10",
2232
+ "source_month": "2026-07",
2233
  "day_of_week": "FRI",
2234
  "dow_prob": 57.1,
2235
  "sp500_prob": 66.7,
 
2242
  },
2243
  {
2244
  "date": "2026-07-13",
2245
+ "source_month": "2026-07",
2246
  "day_of_week": "MON",
2247
  "dow_prob": 76.2,
2248
  "sp500_prob": 66.7,
 
2255
  },
2256
  {
2257
  "date": "2026-07-14",
2258
+ "source_month": "2026-07",
2259
  "day_of_week": "TUE",
2260
  "dow_prob": 76.2,
2261
  "sp500_prob": 66.7,
 
2268
  },
2269
  {
2270
  "date": "2026-07-15",
2271
+ "source_month": "2026-07",
2272
  "day_of_week": "WED",
2273
  "dow_prob": 71.4,
2274
  "sp500_prob": 47.6,
 
2281
  },
2282
  {
2283
  "date": "2026-07-16",
2284
+ "source_month": "2026-07",
2285
  "day_of_week": "THU",
2286
  "dow_prob": 52.4,
2287
  "sp500_prob": 52.4,
 
2294
  },
2295
  {
2296
  "date": "2026-07-17",
2297
+ "source_month": "2026-07",
2298
  "day_of_week": "FRI",
2299
  "dow_prob": 66.7,
2300
  "sp500_prob": 61.9,
 
2307
  },
2308
  {
2309
  "date": "2026-07-20",
2310
+ "source_month": "2026-07",
2311
  "day_of_week": "MON",
2312
  "dow_prob": 76.2,
2313
  "sp500_prob": 71.4,
 
2320
  },
2321
  {
2322
  "date": "2026-07-21",
2323
+ "source_month": "2026-07",
2324
  "day_of_week": "TUE",
2325
  "dow_prob": 28.6,
2326
  "sp500_prob": 33.3,
 
2333
  },
2334
  {
2335
  "date": "2026-07-22",
2336
+ "source_month": "2026-07",
2337
  "day_of_week": "WED",
2338
  "dow_prob": 52.4,
2339
  "sp500_prob": 47.6,
 
2346
  },
2347
  {
2348
  "date": "2026-07-23",
2349
+ "source_month": "2026-07",
2350
  "day_of_week": "THU",
2351
  "dow_prob": 52.4,
2352
  "sp500_prob": 57.1,
 
2359
  },
2360
  {
2361
  "date": "2026-07-24",
2362
+ "source_month": "2026-07",
2363
  "day_of_week": "FRI",
2364
  "dow_prob": 38.1,
2365
  "sp500_prob": 52.4,
 
2372
  },
2373
  {
2374
  "date": "2026-07-27",
2375
+ "source_month": "2026-08",
2376
  "day_of_week": "MON",
2377
  "dow_prob": 66.7,
2378
  "sp500_prob": 57.1,
 
2385
  },
2386
  {
2387
  "date": "2026-07-28",
2388
+ "source_month": "2026-08",
2389
  "day_of_week": "TUE",
2390
  "dow_prob": 52.4,
2391
  "sp500_prob": 47.6,
 
2398
  },
2399
  {
2400
  "date": "2026-07-29",
2401
+ "source_month": "2026-08",
2402
  "day_of_week": "WED",
2403
  "dow_prob": 42.9,
2404
  "sp500_prob": 38.1,
 
2411
  },
2412
  {
2413
  "date": "2026-07-30",
2414
+ "source_month": "2026-08",
2415
  "day_of_week": "THU",
2416
  "dow_prob": 52.4,
2417
  "sp500_prob": 61.9,
 
2424
  },
2425
  {
2426
  "date": "2026-07-31",
2427
+ "source_month": "2026-08",
2428
  "day_of_week": "FRI",
2429
  "dow_prob": 38.1,
2430
  "sp500_prob": 42.9,
 
2437
  },
2438
  {
2439
  "date": "2026-08-03",
2440
+ "source_month": "2026-08",
2441
  "day_of_week": "MON",
2442
  "dow_prob": 38.1,
2443
  "sp500_prob": 38.1,
 
2450
  },
2451
  {
2452
  "date": "2026-08-04",
2453
+ "source_month": "2026-08",
2454
  "day_of_week": "TUE",
2455
  "dow_prob": 42.9,
2456
  "sp500_prob": 47.6,
 
2463
  },
2464
  {
2465
  "date": "2026-08-05",
2466
+ "source_month": "2026-08",
2467
  "day_of_week": "WED",
2468
  "dow_prob": 57.1,
2469
  "sp500_prob": 52.4,
 
2476
  },
2477
  {
2478
  "date": "2026-08-06",
2479
+ "source_month": "2026-08",
2480
  "day_of_week": "THU",
2481
  "dow_prob": 47.6,
2482
  "sp500_prob": 52.4,
 
2489
  },
2490
  {
2491
  "date": "2026-08-07",
2492
+ "source_month": "2026-08",
2493
  "day_of_week": "FRI",
2494
  "dow_prob": 52.4,
2495
  "sp500_prob": 47.6,
 
2502
  },
2503
  {
2504
  "date": "2026-08-10",
2505
+ "source_month": "2026-08",
2506
  "day_of_week": "MON",
2507
  "dow_prob": 52.4,
2508
  "sp500_prob": 52.4,
 
2515
  },
2516
  {
2517
  "date": "2026-08-11",
2518
+ "source_month": "2026-08",
2519
  "day_of_week": "TUE",
2520
  "dow_prob": 38.1,
2521
  "sp500_prob": 42.9,
 
2528
  },
2529
  {
2530
  "date": "2026-08-12",
2531
+ "source_month": "2026-08",
2532
  "day_of_week": "WED",
2533
  "dow_prob": 33.3,
2534
  "sp500_prob": 47.6,
 
2541
  },
2542
  {
2543
  "date": "2026-08-13",
2544
+ "source_month": "2026-08",
2545
  "day_of_week": "THU",
2546
  "dow_prob": 61.9,
2547
  "sp500_prob": 47.6,
 
2554
  },
2555
  {
2556
  "date": "2026-08-14",
2557
+ "source_month": "2026-08",
2558
  "day_of_week": "FRI",
2559
  "dow_prob": 66.7,
2560
  "sp500_prob": 57.1,
 
2567
  },
2568
  {
2569
  "date": "2026-08-17",
2570
+ "source_month": "2026-08",
2571
  "day_of_week": "MON",
2572
  "dow_prob": 57.1,
2573
  "sp500_prob": 66.7,
 
2580
  },
2581
  {
2582
  "date": "2026-08-18",
2583
+ "source_month": "2026-08",
2584
  "day_of_week": "TUE",
2585
  "dow_prob": 52.4,
2586
  "sp500_prob": 61.9,
 
2593
  },
2594
  {
2595
  "date": "2026-08-19",
2596
+ "source_month": "2026-08",
2597
  "day_of_week": "WED",
2598
  "dow_prob": 61.9,
2599
  "sp500_prob": 61.9,
 
2606
  },
2607
  {
2608
  "date": "2026-08-20",
2609
+ "source_month": "2026-08",
2610
  "day_of_week": "THU",
2611
  "dow_prob": 52.4,
2612
  "sp500_prob": 47.6,
 
2619
  },
2620
  {
2621
  "date": "2026-08-21",
2622
+ "source_month": "2026-08",
2623
  "day_of_week": "FRI",
2624
  "dow_prob": 47.6,
2625
  "sp500_prob": 42.9,
 
2632
  },
2633
  {
2634
  "date": "2026-08-24",
2635
+ "source_month": "2026-08",
2636
  "day_of_week": "MON",
2637
  "dow_prob": 61.9,
2638
  "sp500_prob": 57.1,
 
2645
  },
2646
  {
2647
  "date": "2026-08-25",
2648
+ "source_month": "2026-08",
2649
  "day_of_week": "TUE",
2650
  "dow_prob": 57.1,
2651
  "sp500_prob": 57.1,
 
2658
  },
2659
  {
2660
  "date": "2026-08-26",
2661
+ "source_month": "2026-08",
2662
  "day_of_week": "WED",
2663
  "dow_prob": 47.6,
2664
  "sp500_prob": 57.1,
 
2671
  },
2672
  {
2673
  "date": "2026-08-27",
2674
+ "source_month": "2026-08",
2675
  "day_of_week": "THU",
2676
  "dow_prob": 90.5,
2677
  "sp500_prob": 90.5,
 
2684
  },
2685
  {
2686
  "date": "2026-08-28",
2687
+ "source_month": "2026-08",
2688
  "day_of_week": "FRI",
2689
  "dow_prob": 42.9,
2690
  "sp500_prob": 42.9,
 
2697
  },
2698
  {
2699
  "date": "2026-08-31",
2700
+ "source_month": "2026-09",
2701
  "day_of_week": "MON",
2702
  "dow_prob": 47.6,
2703
  "sp500_prob": 52.4,
 
2710
  },
2711
  {
2712
  "date": "2026-09-01",
2713
+ "source_month": "2026-09",
2714
  "day_of_week": "TUE",
2715
  "dow_prob": 42.9,
2716
  "sp500_prob": 52.4,
 
2723
  },
2724
  {
2725
  "date": "2026-09-02",
2726
+ "source_month": "2026-09",
2727
  "day_of_week": "WED",
2728
  "dow_prob": 66.7,
2729
  "sp500_prob": 42.9,
 
2736
  },
2737
  {
2738
  "date": "2026-09-03",
2739
+ "source_month": "2026-09",
2740
  "day_of_week": "THU",
2741
  "dow_prob": 52.4,
2742
  "sp500_prob": 47.6,
 
2749
  },
2750
  {
2751
  "date": "2026-09-04",
2752
+ "source_month": "2026-09",
2753
  "day_of_week": "FRI",
2754
  "dow_prob": 47.6,
2755
  "sp500_prob": 47.6,
 
2762
  },
2763
  {
2764
  "date": "2026-09-08",
2765
+ "source_month": "2026-09",
2766
  "day_of_week": "TUE",
2767
  "dow_prob": 57.1,
2768
  "sp500_prob": 47.6,
 
2775
  },
2776
  {
2777
  "date": "2026-09-09",
2778
+ "source_month": "2026-09",
2779
  "day_of_week": "WED",
2780
  "dow_prob": 61.9,
2781
  "sp500_prob": 71.4,
 
2788
  },
2789
  {
2790
  "date": "2026-09-10",
2791
+ "source_month": "2026-09",
2792
  "day_of_week": "THU",
2793
  "dow_prob": 81.0,
2794
  "sp500_prob": 81.0,
 
2801
  },
2802
  {
2803
  "date": "2026-09-11",
2804
+ "source_month": "2026-09",
2805
  "day_of_week": "FRI",
2806
  "dow_prob": 66.7,
2807
  "sp500_prob": 76.2,
 
2814
  },
2815
  {
2816
  "date": "2026-09-14",
2817
+ "source_month": "2026-09",
2818
  "day_of_week": "MON",
2819
  "dow_prob": 61.9,
2820
  "sp500_prob": 57.1,
 
2827
  },
2828
  {
2829
  "date": "2026-09-15",
2830
+ "source_month": "2026-09",
2831
  "day_of_week": "TUE",
2832
  "dow_prob": 61.9,
2833
  "sp500_prob": 57.1,
 
2840
  },
2841
  {
2842
  "date": "2026-09-16",
2843
+ "source_month": "2026-09",
2844
  "day_of_week": "WED",
2845
  "dow_prob": 76.2,
2846
  "sp500_prob": 71.4,
 
2853
  },
2854
  {
2855
  "date": "2026-09-17",
2856
+ "source_month": "2026-09",
2857
  "day_of_week": "THU",
2858
  "dow_prob": 47.6,
2859
  "sp500_prob": 47.6,
 
2866
  },
2867
  {
2868
  "date": "2026-09-18",
2869
+ "source_month": "2026-09",
2870
  "day_of_week": "FRI",
2871
  "dow_prob": 52.4,
2872
  "sp500_prob": 47.6,
 
2879
  },
2880
  {
2881
  "date": "2026-09-21",
2882
+ "source_month": "2026-09",
2883
  "day_of_week": "MON",
2884
  "dow_prob": 42.9,
2885
  "sp500_prob": 23.8,
 
2892
  },
2893
  {
2894
  "date": "2026-09-22",
2895
+ "source_month": "2026-09",
2896
  "day_of_week": "TUE",
2897
  "dow_prob": 38.1,
2898
  "sp500_prob": 28.6,
 
2905
  },
2906
  {
2907
  "date": "2026-09-23",
2908
+ "source_month": "2026-09",
2909
  "day_of_week": "WED",
2910
  "dow_prob": 28.6,
2911
  "sp500_prob": 28.6,
 
2918
  },
2919
  {
2920
  "date": "2026-09-24",
2921
+ "source_month": "2026-09",
2922
  "day_of_week": "THU",
2923
  "dow_prob": 47.6,
2924
  "sp500_prob": 47.6,
 
2931
  },
2932
  {
2933
  "date": "2026-09-25",
2934
+ "source_month": "2026-09",
2935
  "day_of_week": "FRI",
2936
  "dow_prob": 47.6,
2937
  "sp500_prob": 38.1,
 
2944
  },
2945
  {
2946
  "date": "2026-09-28",
2947
+ "source_month": "2026-10",
2948
  "day_of_week": "MON",
2949
  "dow_prob": 66.7,
2950
  "sp500_prob": 71.4,
 
2957
  },
2958
  {
2959
  "date": "2026-09-29",
2960
+ "source_month": "2026-10",
2961
  "day_of_week": "TUE",
2962
  "dow_prob": 57.1,
2963
  "sp500_prob": 52.4,
 
2970
  },
2971
  {
2972
  "date": "2026-09-30",
2973
+ "source_month": "2026-10",
2974
  "day_of_week": "WED",
2975
  "dow_prob": 42.9,
2976
  "sp500_prob": 38.1,
 
2983
  },
2984
  {
2985
  "date": "2026-10-01",
2986
+ "source_month": "2026-10",
2987
  "day_of_week": "THU",
2988
  "dow_prob": 47.6,
2989
  "sp500_prob": 57.1,
 
2996
  },
2997
  {
2998
  "date": "2026-10-02",
2999
+ "source_month": "2026-10",
3000
  "day_of_week": "FRI",
3001
  "dow_prob": 38.1,
3002
  "sp500_prob": 42.9,
 
3009
  },
3010
  {
3011
  "date": "2026-10-05",
3012
+ "source_month": "2026-10",
3013
  "day_of_week": "MON",
3014
  "dow_prob": 66.7,
3015
  "sp500_prob": 66.7,
 
3022
  },
3023
  {
3024
  "date": "2026-10-06",
3025
+ "source_month": "2026-10",
3026
  "day_of_week": "TUE",
3027
  "dow_prob": 61.9,
3028
  "sp500_prob": 57.1,
 
3035
  },
3036
  {
3037
  "date": "2026-10-07",
3038
+ "source_month": "2026-10",
3039
  "day_of_week": "WED",
3040
  "dow_prob": 33.3,
3041
  "sp500_prob": 33.3,
 
3048
  },
3049
  {
3050
  "date": "2026-10-08",
3051
+ "source_month": "2026-10",
3052
  "day_of_week": "THU",
3053
  "dow_prob": 52.4,
3054
  "sp500_prob": 47.6,
 
3061
  },
3062
  {
3063
  "date": "2026-10-09",
3064
+ "source_month": "2026-10",
3065
  "day_of_week": "FRI",
3066
  "dow_prob": 66.7,
3067
  "sp500_prob": 61.9,
 
3074
  },
3075
  {
3076
  "date": "2026-10-12",
3077
+ "source_month": "2026-10",
3078
  "day_of_week": "MON",
3079
  "dow_prob": 47.6,
3080
  "sp500_prob": 47.6,
 
3087
  },
3088
  {
3089
  "date": "2026-10-13",
3090
+ "source_month": "2026-10",
3091
  "day_of_week": "TUE",
3092
  "dow_prob": 33.3,
3093
  "sp500_prob": 42.9,
 
3100
  },
3101
  {
3102
  "date": "2026-10-14",
3103
+ "source_month": "2026-10",
3104
  "day_of_week": "WED",
3105
  "dow_prob": 61.9,
3106
  "sp500_prob": 57.1,
 
3113
  },
3114
  {
3115
  "date": "2026-10-15",
3116
+ "source_month": "2026-10",
3117
  "day_of_week": "THU",
3118
  "dow_prob": 52.4,
3119
  "sp500_prob": 57.1,
 
3126
  },
3127
  {
3128
  "date": "2026-10-16",
3129
+ "source_month": "2026-10",
3130
  "day_of_week": "FRI",
3131
  "dow_prob": 66.7,
3132
  "sp500_prob": 71.4,
 
3139
  },
3140
  {
3141
  "date": "2026-10-19",
3142
+ "source_month": "2026-10",
3143
  "day_of_week": "MON",
3144
  "dow_prob": 52.4,
3145
  "sp500_prob": 57.1,
 
3152
  },
3153
  {
3154
  "date": "2026-10-20",
3155
+ "source_month": "2026-10",
3156
  "day_of_week": "TUE",
3157
  "dow_prob": 47.6,
3158
  "sp500_prob": 52.4,
 
3165
  },
3166
  {
3167
  "date": "2026-10-21",
3168
+ "source_month": "2026-10",
3169
  "day_of_week": "WED",
3170
  "dow_prob": 28.6,
3171
  "sp500_prob": 38.1,
 
3178
  },
3179
  {
3180
  "date": "2026-10-22",
3181
+ "source_month": "2026-10",
3182
  "day_of_week": "THU",
3183
  "dow_prob": 52.4,
3184
  "sp500_prob": 66.7,
 
3191
  },
3192
  {
3193
  "date": "2026-10-23",
3194
+ "source_month": "2026-10",
3195
  "day_of_week": "FRI",
3196
  "dow_prob": 57.1,
3197
  "sp500_prob": 71.4,
 
3204
  },
3205
  {
3206
  "date": "2026-10-26",
3207
+ "source_month": "2026-11",
3208
  "day_of_week": "MON",
3209
  "dow_prob": 38.1,
3210
  "sp500_prob": 33.3,
 
3217
  },
3218
  {
3219
  "date": "2026-10-27",
3220
+ "source_month": "2026-11",
3221
  "day_of_week": "TUE",
3222
  "dow_prob": 66.7,
3223
  "sp500_prob": 57.1,
 
3230
  },
3231
  {
3232
  "date": "2026-10-28",
3233
+ "source_month": "2026-11",
3234
  "day_of_week": "WED",
3235
  "dow_prob": 38.1,
3236
  "sp500_prob": 38.1,
 
3243
  },
3244
  {
3245
  "date": "2026-10-29",
3246
+ "source_month": "2026-11",
3247
  "day_of_week": "THU",
3248
  "dow_prob": 61.9,
3249
  "sp500_prob": 66.7,
 
3256
  },
3257
  {
3258
  "date": "2026-10-30",
3259
+ "source_month": "2026-11",
3260
  "day_of_week": "FRI",
3261
  "dow_prob": 47.6,
3262
  "sp500_prob": 52.4,
 
3269
  },
3270
  {
3271
  "date": "2026-11-02",
3272
+ "source_month": "2026-11",
3273
  "day_of_week": "MON",
3274
  "dow_prob": 61.9,
3275
  "sp500_prob": 61.9,
 
3282
  },
3283
  {
3284
  "date": "2026-11-03",
3285
+ "source_month": "2026-11",
3286
  "day_of_week": "TUE",
3287
  "dow_prob": 61.9,
3288
  "sp500_prob": 66.7,
 
3295
  },
3296
  {
3297
  "date": "2026-11-04",
3298
+ "source_month": "2026-11",
3299
  "day_of_week": "WED",
3300
  "dow_prob": 66.7,
3301
  "sp500_prob": 61.9,
 
3308
  },
3309
  {
3310
  "date": "2026-11-05",
3311
+ "source_month": "2026-11",
3312
  "day_of_week": "THU",
3313
  "dow_prob": 71.4,
3314
  "sp500_prob": 81.0,
 
3321
  },
3322
  {
3323
  "date": "2026-11-06",
3324
+ "source_month": "2026-11",
3325
  "day_of_week": "FRI",
3326
  "dow_prob": 76.2,
3327
  "sp500_prob": 71.4,
 
3334
  },
3335
  {
3336
  "date": "2026-11-09",
3337
+ "source_month": "2026-11",
3338
  "day_of_week": "MON",
3339
  "dow_prob": 66.7,
3340
  "sp500_prob": 61.9,
 
3347
  },
3348
  {
3349
  "date": "2026-11-10",
3350
+ "source_month": "2026-11",
3351
  "day_of_week": "TUE",
3352
  "dow_prob": 47.6,
3353
  "sp500_prob": 33.3,
 
3360
  },
3361
  {
3362
  "date": "2026-11-11",
3363
+ "source_month": "2026-11",
3364
  "day_of_week": "WED",
3365
  "dow_prob": 38.1,
3366
  "sp500_prob": 52.4,
 
3373
  },
3374
  {
3375
  "date": "2026-11-12",
3376
+ "source_month": "2026-11",
3377
  "day_of_week": "THU",
3378
  "dow_prob": 66.7,
3379
  "sp500_prob": 61.9,
 
3386
  },
3387
  {
3388
  "date": "2026-11-13",
3389
+ "source_month": "2026-11",
3390
  "day_of_week": "FRI",
3391
  "dow_prob": 42.9,
3392
  "sp500_prob": 42.9,
 
3399
  },
3400
  {
3401
  "date": "2026-11-16",
3402
+ "source_month": "2026-11",
3403
  "day_of_week": "MON",
3404
  "dow_prob": 66.7,
3405
  "sp500_prob": 57.1,
 
3412
  },
3413
  {
3414
  "date": "2026-11-17",
3415
+ "source_month": "2026-11",
3416
  "day_of_week": "TUE",
3417
  "dow_prob": 57.1,
3418
  "sp500_prob": 61.9,
 
3425
  },
3426
  {
3427
  "date": "2026-11-18",
3428
+ "source_month": "2026-11",
3429
  "day_of_week": "WED",
3430
  "dow_prob": 33.3,
3431
  "sp500_prob": 42.9,
 
3438
  },
3439
  {
3440
  "date": "2026-11-19",
3441
+ "source_month": "2026-11",
3442
  "day_of_week": "THU",
3443
  "dow_prob": 52.4,
3444
  "sp500_prob": 57.1,
 
3451
  },
3452
  {
3453
  "date": "2026-11-20",
3454
+ "source_month": "2026-11",
3455
  "day_of_week": "FRI",
3456
  "dow_prob": 61.9,
3457
  "sp500_prob": 57.1,
 
3464
  },
3465
  {
3466
  "date": "2026-11-23",
3467
+ "source_month": "2026-11",
3468
  "day_of_week": "MON",
3469
  "dow_prob": 71.4,
3470
  "sp500_prob": 66.7,
 
3477
  },
3478
  {
3479
  "date": "2026-11-24",
3480
+ "source_month": "2026-11",
3481
  "day_of_week": "TUE",
3482
  "dow_prob": 71.4,
3483
  "sp500_prob": 61.9,
 
3490
  },
3491
  {
3492
  "date": "2026-11-25",
3493
+ "source_month": "2026-11",
3494
  "day_of_week": "WED",
3495
  "dow_prob": 66.7,
3496
  "sp500_prob": 61.9,
 
3503
  },
3504
  {
3505
  "date": "2026-11-27",
3506
+ "source_month": "2026-11",
3507
  "day_of_week": "FRI",
3508
  "dow_prob": 61.9,
3509
  "sp500_prob": 61.9,
 
3516
  },
3517
  {
3518
  "date": "2026-11-30",
3519
+ "source_month": "2026-12",
3520
  "day_of_week": "MON",
3521
  "dow_prob": 57.1,
3522
  "sp500_prob": 52.4,
 
3529
  },
3530
  {
3531
  "date": "2026-12-01",
3532
+ "source_month": "2026-12",
3533
  "day_of_week": "TUE",
3534
  "dow_prob": 42.9,
3535
  "sp500_prob": 42.9,
 
3542
  },
3543
  {
3544
  "date": "2026-12-02",
3545
+ "source_month": "2026-12",
3546
  "day_of_week": "WED",
3547
  "dow_prob": 38.1,
3548
  "sp500_prob": 47.6,
 
3555
  },
3556
  {
3557
  "date": "2026-12-03",
3558
+ "source_month": "2026-12",
3559
  "day_of_week": "THU",
3560
  "dow_prob": 57.1,
3561
  "sp500_prob": 52.4,
 
3568
  },
3569
  {
3570
  "date": "2026-12-04",
3571
+ "source_month": "2026-12",
3572
  "day_of_week": "FRI",
3573
  "dow_prob": 47.6,
3574
  "sp500_prob": 47.6,
 
3581
  },
3582
  {
3583
  "date": "2026-12-07",
3584
+ "source_month": "2026-12",
3585
  "day_of_week": "MON",
3586
  "dow_prob": 66.7,
3587
  "sp500_prob": 61.9,
 
3594
  },
3595
  {
3596
  "date": "2026-12-08",
3597
+ "source_month": "2026-12",
3598
  "day_of_week": "TUE",
3599
  "dow_prob": 61.9,
3600
  "sp500_prob": 61.9,
 
3607
  },
3608
  {
3609
  "date": "2026-12-09",
3610
+ "source_month": "2026-12",
3611
  "day_of_week": "WED",
3612
  "dow_prob": 47.6,
3613
  "sp500_prob": 52.4,
 
3620
  },
3621
  {
3622
  "date": "2026-12-10",
3623
+ "source_month": "2026-12",
3624
  "day_of_week": "THU",
3625
  "dow_prob": 57.1,
3626
  "sp500_prob": 61.9,
 
3633
  },
3634
  {
3635
  "date": "2026-12-11",
3636
+ "source_month": "2026-12",
3637
  "day_of_week": "FRI",
3638
  "dow_prob": 61.9,
3639
  "sp500_prob": 52.4,
 
3646
  },
3647
  {
3648
  "date": "2026-12-14",
3649
+ "source_month": "2026-12",
3650
  "day_of_week": "MON",
3651
  "dow_prob": 47.6,
3652
  "sp500_prob": 42.9,
 
3659
  },
3660
  {
3661
  "date": "2026-12-15",
3662
+ "source_month": "2026-12",
3663
  "day_of_week": "TUE",
3664
  "dow_prob": 61.9,
3665
  "sp500_prob": 61.9,
 
3672
  },
3673
  {
3674
  "date": "2026-12-16",
3675
+ "source_month": "2026-12",
3676
  "day_of_week": "WED",
3677
  "dow_prob": 42.9,
3678
  "sp500_prob": 52.4,
 
3685
  },
3686
  {
3687
  "date": "2026-12-17",
3688
+ "source_month": "2026-12",
3689
  "day_of_week": "THU",
3690
  "dow_prob": 28.6,
3691
  "sp500_prob": 33.3,
 
3698
  },
3699
  {
3700
  "date": "2026-12-18",
3701
+ "source_month": "2026-12",
3702
  "day_of_week": "FRI",
3703
  "dow_prob": 52.4,
3704
  "sp500_prob": 47.6,
 
3711
  },
3712
  {
3713
  "date": "2026-12-21",
3714
+ "source_month": "2026-12",
3715
  "day_of_week": "MON",
3716
  "dow_prob": 71.4,
3717
  "sp500_prob": 61.9,
 
3724
  },
3725
  {
3726
  "date": "2026-12-22",
3727
+ "source_month": "2026-12",
3728
  "day_of_week": "TUE",
3729
  "dow_prob": 66.7,
3730
  "sp500_prob": 66.7,
 
3737
  },
3738
  {
3739
  "date": "2026-12-23",
3740
+ "source_month": "2026-12",
3741
  "day_of_week": "WED",
3742
  "dow_prob": 71.4,
3743
  "sp500_prob": 66.7,
 
3750
  },
3751
  {
3752
  "date": "2026-12-24",
3753
+ "source_month": "2026-12",
3754
  "day_of_week": "THU",
3755
  "dow_prob": 52.4,
3756
  "sp500_prob": 61.9,
 
3763
  },
3764
  {
3765
  "date": "2026-12-28",
3766
+ "source_month": "2026-12",
3767
  "day_of_week": "MON",
3768
  "dow_prob": 76.2,
3769
  "sp500_prob": 66.7,
 
3776
  },
3777
  {
3778
  "date": "2026-12-29",
3779
+ "source_month": "2026-12",
3780
  "day_of_week": "TUE",
3781
  "dow_prob": 42.9,
3782
  "sp500_prob": 47.6,
 
3789
  },
3790
  {
3791
  "date": "2026-12-30",
3792
+ "source_month": "2026-12",
3793
  "day_of_week": "WED",
3794
  "dow_prob": 42.9,
3795
  "sp500_prob": 42.9,
 
3802
  },
3803
  {
3804
  "date": "2026-12-31",
3805
+ "source_month": "2026-12",
3806
  "day_of_week": "THU",
3807
  "dow_prob": 33.3,
3808
  "sp500_prob": 28.6,
data/almanac_2026/build_almanac_json.py CHANGED
@@ -278,7 +278,26 @@ def _extract_daily_entries(
278
  entries: list[tuple[str, dict[str, object], bool]] = []
279
  for row in rows:
280
  raw_date = row.get(header_lookup["Date"], "").strip()
281
- if not raw_date.startswith(f"{TARGET_YEAR}-"):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
282
  continue
283
 
284
  try:
@@ -288,8 +307,8 @@ def _extract_daily_entries(
288
  except ValueError:
289
  continue
290
 
291
- date_month = int(raw_date[5:7])
292
- date_matches_month = date_month == source_month_num
293
  day_value = _strip_markdown(row.get(header_lookup["Day"], "")).upper()
294
 
295
  d_dir = (
@@ -311,6 +330,7 @@ def _extract_daily_entries(
311
  entry = {
312
  "date": raw_date,
313
  "day": day_value[:3],
 
314
  "d": d_score,
315
  "s": s_score,
316
  "n": n_score,
@@ -556,6 +576,7 @@ def build_structured_db_dump(payload: dict[str, object]) -> dict[str, object]:
556
  daily_rows.append(
557
  {
558
  "date": date_key,
 
559
  "day_of_week": entry.get("day", ""),
560
  "dow_prob": float(entry.get("d", 0.0) or 0.0),
561
  "sp500_prob": float(entry.get("s", 0.0) or 0.0),
 
278
  entries: list[tuple[str, dict[str, object], bool]] = []
279
  for row in rows:
280
  raw_date = row.get(header_lookup["Date"], "").strip()
281
+ try:
282
+ parsed_date = datetime.strptime(raw_date, "%Y-%m-%d")
283
+ except ValueError:
284
+ continue
285
+
286
+ include_cross_year_december = (
287
+ source_month_num == 1
288
+ and parsed_date.year == TARGET_YEAR - 1
289
+ and parsed_date.month == 12
290
+ )
291
+ include_cross_year_january = (
292
+ source_month_num == 12
293
+ and parsed_date.year == TARGET_YEAR + 1
294
+ and parsed_date.month == 1
295
+ )
296
+ if not (
297
+ parsed_date.year == TARGET_YEAR
298
+ or include_cross_year_december
299
+ or include_cross_year_january
300
+ ):
301
  continue
302
 
303
  try:
 
307
  except ValueError:
308
  continue
309
 
310
+ date_month = parsed_date.month
311
+ date_matches_month = parsed_date.year == TARGET_YEAR and date_month == source_month_num
312
  day_value = _strip_markdown(row.get(header_lookup["Day"], "")).upper()
313
 
314
  d_dir = (
 
330
  entry = {
331
  "date": raw_date,
332
  "day": day_value[:3],
333
+ "source_month": month_key,
334
  "d": d_score,
335
  "s": s_score,
336
  "n": n_score,
 
576
  daily_rows.append(
577
  {
578
  "date": date_key,
579
+ "source_month": entry.get("source_month", ""),
580
  "day_of_week": entry.get("day", ""),
581
  "dow_prob": float(entry.get("d", 0.0) or 0.0),
582
  "sp500_prob": float(entry.get("s", 0.0) or 0.0),
scripts/seed_accuracy.py CHANGED
@@ -12,7 +12,7 @@ import csv
12
  import json
13
  import sys
14
  from collections import defaultdict
15
- from datetime import datetime, timezone
16
  from pathlib import Path
17
 
18
 
@@ -178,6 +178,12 @@ def pct(value: int, total: int) -> float:
178
  return round((value / total) * 100, 1)
179
 
180
 
 
 
 
 
 
 
181
  def build_daily_results(
182
  almanac_daily: dict[str, dict[str, object]],
183
  history_by_index: dict[str, dict[str, dict[str, float | None]]],
@@ -297,7 +303,7 @@ def aggregate_periods(
297
  def build_output(daily_results: dict[str, dict[str, object]]) -> dict[str, object]:
298
  weekly = aggregate_periods(
299
  daily_results,
300
- key_builder=lambda date_key: datetime.strptime(date_key, "%Y-%m-%d").strftime("%Y-W%W"),
301
  include_dates=True,
302
  )
303
  monthly = aggregate_periods(
 
12
  import json
13
  import sys
14
  from collections import defaultdict
15
+ from datetime import datetime, timedelta, timezone
16
  from pathlib import Path
17
 
18
 
 
178
  return round((value / total) * 100, 1)
179
 
180
 
181
+ def week_start_key(date_key: str) -> str:
182
+ parsed = datetime.strptime(date_key, "%Y-%m-%d")
183
+ week_start = parsed - timedelta(days=parsed.weekday())
184
+ return week_start.strftime("%Y-%m-%d")
185
+
186
+
187
  def build_daily_results(
188
  almanac_daily: dict[str, dict[str, object]],
189
  history_by_index: dict[str, dict[str, dict[str, float | None]]],
 
303
  def build_output(daily_results: dict[str, dict[str, object]]) -> dict[str, object]:
304
  weekly = aggregate_periods(
305
  daily_results,
306
+ key_builder=week_start_key,
307
  include_dates=True,
308
  )
309
  monthly = aggregate_periods(
static/almanac.css CHANGED
@@ -482,6 +482,11 @@
482
  gap: 0.38rem;
483
  }
484
 
 
 
 
 
 
485
  .alm-week-index-head,
486
  .alm-week-index-meta,
487
  .alm-week-index-foot {
@@ -516,6 +521,26 @@
516
  letter-spacing: 0.04em;
517
  }
518
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
519
  .alm-week-accuracy-cell {
520
  text-align: center;
521
  }
 
482
  gap: 0.38rem;
483
  }
484
 
485
+ .alm-week-index-empty {
486
+ justify-content: center;
487
+ min-height: 78px;
488
+ }
489
+
490
  .alm-week-index-head,
491
  .alm-week-index-meta,
492
  .alm-week-index-foot {
 
521
  letter-spacing: 0.04em;
522
  }
523
 
524
+ .alm-week-status-chip {
525
+ display: inline-flex;
526
+ align-items: center;
527
+ justify-content: center;
528
+ padding: 0.24rem 0.55rem;
529
+ border-radius: 999px;
530
+ background: rgba(108, 117, 125, 0.12);
531
+ border: 1px solid rgba(108, 117, 125, 0.22);
532
+ color: var(--text-main);
533
+ font-size: 0.72rem;
534
+ font-weight: 800;
535
+ letter-spacing: 0.04em;
536
+ }
537
+
538
+ .alm-week-status-chip.is-closed {
539
+ background: rgba(182, 78, 90, 0.12);
540
+ border-color: rgba(182, 78, 90, 0.22);
541
+ color: var(--status-red);
542
+ }
543
+
544
  .alm-week-accuracy-cell {
545
  text-align: center;
546
  }
static/almanac.js CHANGED
@@ -435,6 +435,23 @@
435
  + '</div>';
436
  }
437
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
438
  function buildWeeklySummaryCard(label, summary) {
439
  const hits = Number(summary?.hits || 0);
440
  const totalValue = summary?.total ?? summary?.total_calls ?? 0;
@@ -1107,15 +1124,22 @@
1107
  }
1108
 
1109
  const accPayload = await loadAccuracyData();
1110
-
1111
- const weekDates = getWeekDates(currentWeekStart);
1112
- if (!weekDates.length) {
1113
- if (container) container.innerHTML = '<div class="alm-empty">No trading week found for that start date.</div>';
 
 
 
 
 
1114
  if (strip) strip.innerHTML = '';
1115
  return;
1116
  }
1117
 
1118
- currentWeekStart = resolveNearestWeekStart(currentWeekStart);
 
 
1119
  if (weekLabel) {
1120
  weekLabel.textContent = formatWeekRangeLabel(currentWeekStart);
1121
  }
@@ -1123,29 +1147,35 @@
1123
  const weekAccuracy = await loadWeekAccuracy(currentWeekStart) || buildWeeklyAccuracyFallback(accPayload, weekDates);
1124
 
1125
  if (container) {
1126
- const rows = weekDates.map((dateKey) => {
1127
- const day = payload.daily[dateKey];
1128
- const acc = accPayload?.daily?.[dateKey];
1129
  const accClass = dailyAccuracyClass(acc);
1130
  const indexCells = WEEKLY_INDEX_META.map((indexMeta) => {
1131
- return '<td>' + buildWeeklyIndexCell(day, acc, indexMeta) + '</td>';
 
 
 
1132
  }).join('');
 
 
 
 
1133
  const accuracyPct = acc && Number(acc.total_calls) > 0
1134
  ? formatAccuracyPct((Number(acc.hits || 0) / Number(acc.total_calls || 1)) * 100, 0) + '% accuracy'
1135
- : 'No data';
1136
  const accuracyCell = acc
1137
  ? ''
1138
  + '<td class="alm-week-accuracy-cell">'
1139
  + ' <div class="alm-week-index-verdict ' + accClass + '">' + escapeHtml(acc.hits + '/' + acc.total_calls) + '</div>'
1140
  + ' <div class="alm-note-caption">' + escapeHtml(accuracyPct) + '</div>'
1141
  + '</td>'
1142
- : '<td class="alm-week-accuracy-cell"><span class="alm-note-caption">--</span></td>';
1143
  return ''
1144
  + '<tr>'
1145
- + ' <td><strong>' + escapeHtml(day.day) + '</strong><br><span class="alm-note-caption">' + escapeHtml(dateKey) + '</span></td>'
1146
  + indexCells
1147
- + ' <td>' + (day.icon ? '<span class="alm-chip">' + escapeHtml(day.icon.replace('_', ' ')) + '</span>' : '<span class="alm-note-caption">None</span>') + '</td>'
1148
- + ' <td>' + escapeHtml(day.notes || '-') + '</td>'
1149
  + accuracyCell
1150
  + '</tr>';
1151
  }).join('');
 
435
  + '</div>';
436
  }
437
 
438
+ function buildWeeklyStatusCell(day) {
439
+ const closed = day?.status === 'closed';
440
+ const label = closed ? 'Market Closed' : 'No Almanac Data';
441
+ const chipClass = closed ? 'alm-week-status-chip is-closed' : 'alm-week-status-chip';
442
+ const detail = closed ? 'No trading session' : 'Market open';
443
+
444
+ return ''
445
+ + '<div class="alm-week-index-cell alm-week-index-empty">'
446
+ + ' <div class="alm-week-index-head">'
447
+ + ' <span class="' + chipClass + '">' + escapeHtml(label) + '</span>'
448
+ + ' </div>'
449
+ + ' <div class="alm-week-index-meta">'
450
+ + ' <span class="alm-note-caption">' + escapeHtml(detail) + '</span>'
451
+ + ' </div>'
452
+ + '</div>';
453
+ }
454
+
455
  function buildWeeklySummaryCard(label, summary) {
456
  const hits = Number(summary?.hits || 0);
457
  const totalValue = summary?.total ?? summary?.total_calls ?? 0;
 
1124
  }
1125
 
1126
  const accPayload = await loadAccuracyData();
1127
+ currentWeekStart = resolveNearestWeekStart(currentWeekStart);
1128
+ let weekPayload = null;
1129
+ try {
1130
+ weekPayload = await fetchJson('/api/almanac/week?start=' + encodeURIComponent(currentWeekStart));
1131
+ } catch (error) {
1132
+ console.error('Failed to load weekly almanac view:', error);
1133
+ }
1134
+ if (!weekPayload || !Array.isArray(weekPayload.weekdays) || !weekPayload.weekdays.length) {
1135
+ if (container) container.innerHTML = '<div class="alm-empty">No weekly calendar data found for that start date.</div>';
1136
  if (strip) strip.innerHTML = '';
1137
  return;
1138
  }
1139
 
1140
+ const weekDays = weekPayload.weekdays;
1141
+ const weekDates = weekDays.filter((day) => day.almanac_available).map((day) => day.date);
1142
+ currentWeekStart = weekPayload.week_start || currentWeekStart;
1143
  if (weekLabel) {
1144
  weekLabel.textContent = formatWeekRangeLabel(currentWeekStart);
1145
  }
 
1147
  const weekAccuracy = await loadWeekAccuracy(currentWeekStart) || buildWeeklyAccuracyFallback(accPayload, weekDates);
1148
 
1149
  if (container) {
1150
+ const rows = weekDays.map((day) => {
1151
+ const acc = day.almanac_available ? accPayload?.daily?.[day.date] : null;
 
1152
  const accClass = dailyAccuracyClass(acc);
1153
  const indexCells = WEEKLY_INDEX_META.map((indexMeta) => {
1154
+ const cellMarkup = day.almanac_available
1155
+ ? buildWeeklyIndexCell(day, acc, indexMeta)
1156
+ : buildWeeklyStatusCell(day);
1157
+ return '<td>' + cellMarkup + '</td>';
1158
  }).join('');
1159
+ const iconMarkup = day.almanac_available
1160
+ ? (day.icon ? '<span class="alm-chip">' + escapeHtml(day.icon.replace('_', ' ')) + '</span>' : '<span class="alm-note-caption">None</span>')
1161
+ : '<span class="alm-chip">' + escapeHtml(day.status === 'closed' ? 'Holiday / Closure' : 'Open / No Entry') + '</span>';
1162
+ const noteText = day.almanac_available ? (day.notes || '-') : (day.status_reason || 'No additional detail available.');
1163
  const accuracyPct = acc && Number(acc.total_calls) > 0
1164
  ? formatAccuracyPct((Number(acc.hits || 0) / Number(acc.total_calls || 1)) * 100, 0) + '% accuracy'
1165
+ : (day.status === 'closed' ? 'Market closed' : 'No scoring data');
1166
  const accuracyCell = acc
1167
  ? ''
1168
  + '<td class="alm-week-accuracy-cell">'
1169
  + ' <div class="alm-week-index-verdict ' + accClass + '">' + escapeHtml(acc.hits + '/' + acc.total_calls) + '</div>'
1170
  + ' <div class="alm-note-caption">' + escapeHtml(accuracyPct) + '</div>'
1171
  + '</td>'
1172
+ : '<td class="alm-week-accuracy-cell"><span class="alm-note-caption">' + escapeHtml(accuracyPct) + '</span></td>';
1173
  return ''
1174
  + '<tr>'
1175
+ + ' <td><strong>' + escapeHtml(day.day) + '</strong><br><span class="alm-note-caption">' + escapeHtml(day.date) + '</span></td>'
1176
  + indexCells
1177
+ + ' <td>' + iconMarkup + '</td>'
1178
+ + ' <td>' + escapeHtml(noteText) + '</td>'
1179
  + accuracyCell
1180
  + '</tr>';
1181
  }).join('');
tests/test_almanac_accuracy_api.py CHANGED
@@ -67,7 +67,7 @@ ACCURACY_FIXTURE = {
67
  },
68
  },
69
  "weekly": {
70
- "2026-W00": {
71
  "dates": ["2026-01-02"],
72
  "hits": 2,
73
  "total_calls": 2,
@@ -76,7 +76,7 @@ ACCURACY_FIXTURE = {
76
  "sp500": {"hits": 1, "total": 1, "pct": 100.0},
77
  "nasdaq": {"hits": 0, "total": 0, "pct": 0.0},
78
  },
79
- "2026-W01": {
80
  "dates": ["2026-01-05", "2026-01-06"],
81
  "hits": 5,
82
  "total_calls": 6,
@@ -99,6 +99,90 @@ ACCURACY_FIXTURE = {
99
  },
100
  }
101
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
 
103
  class TestAlmanacAccuracyAPI(unittest.TestCase):
104
  def setUp(self):
@@ -118,9 +202,12 @@ class TestAlmanacAccuracyAPI(unittest.TestCase):
118
  return root
119
 
120
  def write_accuracy_fixture(self, root: Path) -> None:
 
 
 
121
  path = root / "data" / "almanac_2026" / "accuracy_results.json"
122
  path.parent.mkdir(parents=True, exist_ok=True)
123
- path.write_text(json.dumps(ACCURACY_FIXTURE, indent=2), encoding="utf-8")
124
 
125
  def test_accuracy_endpoint_reports_unavailable_when_seed_file_is_missing(self):
126
  temp_root = self.make_root("accuracy_api_unavailable")
@@ -179,7 +266,7 @@ class TestAlmanacAccuracyAPI(unittest.TestCase):
179
 
180
  def test_accuracy_week_route_supports_cross_year_monday_week_starts(self):
181
  temp_root = self.make_root("accuracy_api_cross_year_week")
182
- self.write_accuracy_fixture(temp_root)
183
  try:
184
  with patch.object(app_module, "PROJECT_ROOT", temp_root):
185
  week_resp = self.client.get("/api/almanac/accuracy/week?start=2025-12-29")
@@ -190,8 +277,11 @@ class TestAlmanacAccuracyAPI(unittest.TestCase):
190
  data = week_resp.get_json()
191
  self.assertEqual(data["week_start"], "2025-12-29")
192
  self.assertEqual(data["week_end"], "2026-01-02")
193
- self.assertEqual(data["dates"], ["2026-01-02"])
194
- self.assertEqual(data["hits"], 2)
 
 
 
195
 
196
  def test_accuracy_summary_aggregates_monthly_and_per_index_totals(self):
197
  temp_root = self.make_root("accuracy_api_summary")
 
67
  },
68
  },
69
  "weekly": {
70
+ "2025-12-29": {
71
  "dates": ["2026-01-02"],
72
  "hits": 2,
73
  "total_calls": 2,
 
76
  "sp500": {"hits": 1, "total": 1, "pct": 100.0},
77
  "nasdaq": {"hits": 0, "total": 0, "pct": 0.0},
78
  },
79
+ "2026-01-05": {
80
  "dates": ["2026-01-05", "2026-01-06"],
81
  "hits": 5,
82
  "total_calls": 6,
 
99
  },
100
  }
101
 
102
+ CROSS_YEAR_ACCURACY_FIXTURE = {
103
+ "meta": {
104
+ "last_updated": "2026-04-05T12:00:00Z",
105
+ "total_days_scored": 3,
106
+ "data_range": {"from": "2025-12-30", "to": "2026-01-02"},
107
+ "source": "Historic CSV backtest via scripts/seed_accuracy.py",
108
+ },
109
+ "daily": {
110
+ "2025-12-30": {
111
+ "actual": {"dji": 99.0, "sp500": 199.0, "nasdaq": 299.0},
112
+ "prev_close": {"dji": 100.0, "sp500": 200.0, "nasdaq": 300.0},
113
+ "pct_change": {"dji": -0.01, "sp500": -0.005, "nasdaq": -0.003333},
114
+ "almanac_scores": {"d": 42.9, "s": 42.9, "n": 38.1},
115
+ "results": {
116
+ "d": {"verdict": "HIT", "predicted": "DOWN", "actual": "DOWN"},
117
+ "s": {"verdict": "HIT", "predicted": "DOWN", "actual": "DOWN"},
118
+ "n": {"verdict": "HIT", "predicted": "DOWN", "actual": "DOWN"},
119
+ },
120
+ "hits": 3,
121
+ "total_calls": 3,
122
+ "context": "",
123
+ },
124
+ "2025-12-31": {
125
+ "actual": {"dji": 98.0, "sp500": 198.0, "nasdaq": 298.0},
126
+ "prev_close": {"dji": 99.0, "sp500": 199.0, "nasdaq": 299.0},
127
+ "pct_change": {"dji": -0.010101, "sp500": -0.005025, "nasdaq": -0.003344},
128
+ "almanac_scores": {"d": 33.3, "s": 28.6, "n": 28.6},
129
+ "results": {
130
+ "d": {"verdict": "HIT", "predicted": "DOWN", "actual": "DOWN"},
131
+ "s": {"verdict": "HIT", "predicted": "DOWN", "actual": "DOWN"},
132
+ "n": {"verdict": "HIT", "predicted": "DOWN", "actual": "DOWN"},
133
+ },
134
+ "hits": 3,
135
+ "total_calls": 3,
136
+ "context": "Last Trading Day of the Year",
137
+ },
138
+ "2026-01-02": {
139
+ "actual": {"dji": 99.0, "sp500": 199.0, "nasdaq": 297.0},
140
+ "prev_close": {"dji": 98.0, "sp500": 198.0, "nasdaq": 298.0},
141
+ "pct_change": {"dji": 0.010204, "sp500": 0.005051, "nasdaq": -0.003356},
142
+ "almanac_scores": {"d": 66.7, "s": 52.4, "n": 61.9},
143
+ "results": {
144
+ "d": {"verdict": "HIT", "predicted": "UP", "actual": "UP"},
145
+ "s": {"verdict": "HIT", "predicted": "UP", "actual": "UP"},
146
+ "n": {"verdict": "MISS", "predicted": "UP", "actual": "DOWN"},
147
+ },
148
+ "hits": 2,
149
+ "total_calls": 3,
150
+ "context": "First Trading Day of Year",
151
+ },
152
+ },
153
+ "weekly": {
154
+ "2025-12-29": {
155
+ "dates": ["2025-12-30", "2025-12-31", "2026-01-02"],
156
+ "hits": 8,
157
+ "total_calls": 9,
158
+ "accuracy": 88.9,
159
+ "dow": {"hits": 3, "total": 3, "pct": 100.0},
160
+ "sp500": {"hits": 3, "total": 3, "pct": 100.0},
161
+ "nasdaq": {"hits": 2, "total": 3, "pct": 66.7},
162
+ }
163
+ },
164
+ "monthly": {
165
+ "2025-12": {
166
+ "hits": 6,
167
+ "total_calls": 6,
168
+ "accuracy": 100.0,
169
+ "dow": {"hits": 2, "total": 2, "pct": 100.0},
170
+ "sp500": {"hits": 2, "total": 2, "pct": 100.0},
171
+ "nasdaq": {"hits": 2, "total": 2, "pct": 100.0},
172
+ "trading_days": 2,
173
+ },
174
+ "2026-01": {
175
+ "hits": 2,
176
+ "total_calls": 3,
177
+ "accuracy": 66.7,
178
+ "dow": {"hits": 1, "total": 1, "pct": 100.0},
179
+ "sp500": {"hits": 1, "total": 1, "pct": 100.0},
180
+ "nasdaq": {"hits": 0, "total": 1, "pct": 0.0},
181
+ "trading_days": 1,
182
+ },
183
+ },
184
+ }
185
+
186
 
187
  class TestAlmanacAccuracyAPI(unittest.TestCase):
188
  def setUp(self):
 
202
  return root
203
 
204
  def write_accuracy_fixture(self, root: Path) -> None:
205
+ self.write_accuracy_payload(root, ACCURACY_FIXTURE)
206
+
207
+ def write_accuracy_payload(self, root: Path, payload: dict) -> None:
208
  path = root / "data" / "almanac_2026" / "accuracy_results.json"
209
  path.parent.mkdir(parents=True, exist_ok=True)
210
+ path.write_text(json.dumps(payload, indent=2), encoding="utf-8")
211
 
212
  def test_accuracy_endpoint_reports_unavailable_when_seed_file_is_missing(self):
213
  temp_root = self.make_root("accuracy_api_unavailable")
 
266
 
267
  def test_accuracy_week_route_supports_cross_year_monday_week_starts(self):
268
  temp_root = self.make_root("accuracy_api_cross_year_week")
269
+ self.write_accuracy_payload(temp_root, CROSS_YEAR_ACCURACY_FIXTURE)
270
  try:
271
  with patch.object(app_module, "PROJECT_ROOT", temp_root):
272
  week_resp = self.client.get("/api/almanac/accuracy/week?start=2025-12-29")
 
277
  data = week_resp.get_json()
278
  self.assertEqual(data["week_start"], "2025-12-29")
279
  self.assertEqual(data["week_end"], "2026-01-02")
280
+ self.assertEqual(data["dates"], ["2025-12-30", "2025-12-31", "2026-01-02"])
281
+ self.assertEqual(data["hits"], 8)
282
+ self.assertEqual(data["total_calls"], 9)
283
+ self.assertEqual(data["dow"]["pct"], 100.0)
284
+ self.assertEqual(data["nasdaq"]["pct"], 66.7)
285
 
286
  def test_accuracy_summary_aggregates_monthly_and_per_index_totals(self):
287
  temp_root = self.make_root("accuracy_api_summary")
tests/test_almanac_api.py CHANGED
@@ -50,6 +50,9 @@ class TestAlmanacAPI(unittest.TestCase):
50
  self.assertEqual(data["week_start"], "2026-04-06")
51
  self.assertEqual(data["week_end"], "2026-04-10")
52
  self.assertEqual(len(data["daily"]), 5)
 
 
 
53
  self.assertEqual(data["month_overview"]["name"], "April")
54
 
55
  def test_almanac_week_endpoint_uses_monday_to_friday_calendar_range(self):
@@ -58,9 +61,34 @@ class TestAlmanacAPI(unittest.TestCase):
58
  data = resp.get_json()
59
  self.assertEqual(data["week_start"], "2025-12-29")
60
  self.assertEqual(data["week_end"], "2026-01-02")
61
- self.assertEqual(list(data["daily"].keys()), ["2026-01-02"])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
  self.assertEqual(data["month_overview"]["name"], "January")
63
 
 
 
 
 
 
 
 
 
 
 
64
  def test_almanac_month_endpoint(self):
65
  resp = self.client.get("/api/almanac/month/2026-04")
66
  self.assertEqual(resp.status_code, 200)
 
50
  self.assertEqual(data["week_start"], "2026-04-06")
51
  self.assertEqual(data["week_end"], "2026-04-10")
52
  self.assertEqual(len(data["daily"]), 5)
53
+ self.assertEqual(len(data["weekdays"]), 5)
54
+ self.assertTrue(all(day["market_open"] for day in data["weekdays"]))
55
+ self.assertTrue(all(day["almanac_available"] for day in data["weekdays"]))
56
  self.assertEqual(data["month_overview"]["name"], "April")
57
 
58
  def test_almanac_week_endpoint_uses_monday_to_friday_calendar_range(self):
 
61
  data = resp.get_json()
62
  self.assertEqual(data["week_start"], "2025-12-29")
63
  self.assertEqual(data["week_end"], "2026-01-02")
64
+ self.assertEqual(list(data["daily"].keys()), ["2025-12-29", "2025-12-30", "2025-12-31", "2026-01-02"])
65
+ self.assertEqual([day["date"] for day in data["weekdays"]], [
66
+ "2025-12-29",
67
+ "2025-12-30",
68
+ "2025-12-31",
69
+ "2026-01-01",
70
+ "2026-01-02",
71
+ ])
72
+ self.assertTrue(data["weekdays"][0]["almanac_available"])
73
+ self.assertEqual(data["weekdays"][0]["source_month"], "2026-01")
74
+ self.assertTrue(data["weekdays"][1]["almanac_available"])
75
+ self.assertTrue(data["weekdays"][2]["almanac_available"])
76
+ self.assertEqual(data["weekdays"][3]["status"], "closed")
77
+ self.assertFalse(data["weekdays"][3]["market_open"])
78
+ self.assertIn("New Year's Day", data["weekdays"][3]["status_reason"])
79
+ self.assertTrue(data["weekdays"][4]["almanac_available"])
80
  self.assertEqual(data["month_overview"]["name"], "January")
81
 
82
+ def test_build_payload_includes_cross_year_january_lead_in_dates(self):
83
+ payload = build_payload()
84
+ daily = payload["daily"]
85
+ self.assertIn("2025-12-29", daily)
86
+ self.assertIn("2025-12-30", daily)
87
+ self.assertIn("2025-12-31", daily)
88
+ self.assertEqual(daily["2025-12-31"]["icon"], "bear")
89
+ self.assertEqual(daily["2025-12-31"]["source_month"], "2026-01")
90
+ self.assertIn("Last Trading Day of the Year", daily["2025-12-31"]["notes"])
91
+
92
  def test_almanac_month_endpoint(self):
93
  resp = self.client.get("/api/almanac/month/2026-04")
94
  self.assertEqual(resp.status_code, 200)
tests/test_seed_accuracy.py CHANGED
@@ -40,6 +40,33 @@ def write_primary_almanac(path: Path) -> None:
40
  path.write_text(json.dumps(payload, indent=2), encoding="utf-8")
41
 
42
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  def write_fallback_almanac(path: Path) -> None:
44
  payload = {
45
  "daily_probabilities": {
@@ -85,6 +112,37 @@ def seed_fixture_history(root: Path) -> None:
85
  )
86
 
87
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  class TestSeedAccuracyScript(unittest.TestCase):
89
  def make_project_root(self, name: str) -> Path:
90
  root = REPO_ROOT / "tmp_feedback_test_main" / name
@@ -123,8 +181,8 @@ class TestSeedAccuracyScript(unittest.TestCase):
123
  self.assertEqual(payload["daily"]["2026-01-02"]["total_calls"], 2)
124
  self.assertEqual(payload["daily"]["2026-01-02"]["results"]["n"]["verdict"], None)
125
  self.assertEqual(payload["daily"]["2026-01-06"]["results"]["n"]["verdict"], "MISS")
126
- self.assertEqual(payload["weekly"]["2026-W00"]["hits"], 2)
127
- self.assertEqual(payload["weekly"]["2026-W01"]["nasdaq"]["pct"], 50.0)
128
  self.assertEqual(payload["monthly"]["2026-01"]["hits"], 7)
129
  self.assertEqual(payload["monthly"]["2026-01"]["total_calls"], 8)
130
  self.assertEqual(payload["monthly"]["2026-01"]["accuracy"], 87.5)
@@ -148,6 +206,37 @@ class TestSeedAccuracyScript(unittest.TestCase):
148
  finally:
149
  shutil.rmtree(project_root, ignore_errors=True)
150
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
151
  def test_seed_accuracy_returns_error_when_history_is_missing(self):
152
  project_root = self.make_project_root("seed_accuracy_missing_history")
153
  try:
 
40
  path.write_text(json.dumps(payload, indent=2), encoding="utf-8")
41
 
42
 
43
+ def write_cross_year_primary_almanac(path: Path) -> None:
44
+ payload = {
45
+ "meta": {"source": "fixture", "year": 2026, "generated_at": "2026-04-05T00:00:00Z"},
46
+ "months": {},
47
+ "daily": {
48
+ "2025-12-29": {"d": 42.9, "s": 47.6, "n": 38.1, "notes": ""},
49
+ "2025-12-30": {"d": 42.9, "s": 42.9, "n": 38.1, "notes": ""},
50
+ "2025-12-31": {
51
+ "d": 33.3,
52
+ "s": 28.6,
53
+ "n": 28.6,
54
+ "notes": "Last Trading Day of the Year",
55
+ },
56
+ "2026-01-02": {
57
+ "d": 66.7,
58
+ "s": 52.4,
59
+ "n": 61.9,
60
+ "notes": "First Trading Day of Year",
61
+ },
62
+ },
63
+ "seasonal_signals": [],
64
+ "seasonal_heatmap": {},
65
+ }
66
+ path.parent.mkdir(parents=True, exist_ok=True)
67
+ path.write_text(json.dumps(payload, indent=2), encoding="utf-8")
68
+
69
+
70
  def write_fallback_almanac(path: Path) -> None:
71
  payload = {
72
  "daily_probabilities": {
 
112
  )
113
 
114
 
115
+ def seed_cross_year_history(root: Path) -> None:
116
+ historical_dir = root / "data" / "historical"
117
+ write_csv(
118
+ historical_dir / "DJI_daily.csv",
119
+ [
120
+ {"Date": "12/29/2025", "Open": "0", "High": "0", "Low": "0", "Close": "100"},
121
+ {"Date": "12/30/2025", "Open": "0", "High": "0", "Low": "0", "Close": "99"},
122
+ {"Date": "12/31/2025", "Open": "0", "High": "0", "Low": "0", "Close": "98"},
123
+ {"Date": "01/02/2026", "Open": "0", "High": "0", "Low": "0", "Close": "99"},
124
+ ],
125
+ )
126
+ write_csv(
127
+ historical_dir / "GSPC_daily.csv",
128
+ [
129
+ {"Date": "12/29/2025", "Open": "0", "High": "0", "Low": "0", "Close": "200"},
130
+ {"Date": "12/30/2025", "Open": "0", "High": "0", "Low": "0", "Close": "199"},
131
+ {"Date": "12/31/2025", "Open": "0", "High": "0", "Low": "0", "Close": "198"},
132
+ {"Date": "01/02/2026", "Open": "0", "High": "0", "Low": "0", "Close": "199"},
133
+ ],
134
+ )
135
+ write_csv(
136
+ historical_dir / "IXIC_daily.csv",
137
+ [
138
+ {"Date": "12/29/2025", "Open": "0", "High": "0", "Low": "0", "Close": "300"},
139
+ {"Date": "12/30/2025", "Open": "0", "High": "0", "Low": "0", "Close": "299"},
140
+ {"Date": "12/31/2025", "Open": "0", "High": "0", "Low": "0", "Close": "298"},
141
+ {"Date": "01/02/2026", "Open": "0", "High": "0", "Low": "0", "Close": "297"},
142
+ ],
143
+ )
144
+
145
+
146
  class TestSeedAccuracyScript(unittest.TestCase):
147
  def make_project_root(self, name: str) -> Path:
148
  root = REPO_ROOT / "tmp_feedback_test_main" / name
 
181
  self.assertEqual(payload["daily"]["2026-01-02"]["total_calls"], 2)
182
  self.assertEqual(payload["daily"]["2026-01-02"]["results"]["n"]["verdict"], None)
183
  self.assertEqual(payload["daily"]["2026-01-06"]["results"]["n"]["verdict"], "MISS")
184
+ self.assertEqual(payload["weekly"]["2025-12-29"]["hits"], 2)
185
+ self.assertEqual(payload["weekly"]["2026-01-05"]["nasdaq"]["pct"], 50.0)
186
  self.assertEqual(payload["monthly"]["2026-01"]["hits"], 7)
187
  self.assertEqual(payload["monthly"]["2026-01"]["total_calls"], 8)
188
  self.assertEqual(payload["monthly"]["2026-01"]["accuracy"], 87.5)
 
206
  finally:
207
  shutil.rmtree(project_root, ignore_errors=True)
208
 
209
+ def test_seed_accuracy_scores_cross_year_january_lead_in_dates(self):
210
+ project_root = self.make_project_root("seed_accuracy_cross_year")
211
+ try:
212
+ write_cross_year_primary_almanac(project_root / "data" / "almanac_2026" / "almanac_2026.json")
213
+ seed_cross_year_history(project_root)
214
+
215
+ result = self.run_script(project_root)
216
+
217
+ self.assertEqual(result.returncode, 0, msg=result.stderr)
218
+ output_path = project_root / "data" / "almanac_2026" / "accuracy_results.json"
219
+ payload = json.loads(output_path.read_text(encoding="utf-8"))
220
+
221
+ self.assertEqual(payload["meta"]["total_days_scored"], 3)
222
+ self.assertEqual(payload["meta"]["data_range"]["from"], "2025-12-30")
223
+ self.assertEqual(payload["meta"]["data_range"]["to"], "2026-01-02")
224
+ self.assertNotIn("2025-12-29", payload["daily"])
225
+ self.assertIn("2025-12-30", payload["daily"])
226
+ self.assertIn("2025-12-31", payload["daily"])
227
+ self.assertEqual(payload["daily"]["2025-12-30"]["hits"], 3)
228
+ self.assertEqual(payload["daily"]["2025-12-31"]["hits"], 3)
229
+ self.assertEqual(payload["daily"]["2026-01-02"]["hits"], 2)
230
+ self.assertEqual(payload["weekly"]["2025-12-29"]["dates"], ["2025-12-30", "2025-12-31", "2026-01-02"])
231
+ self.assertEqual(payload["weekly"]["2025-12-29"]["hits"], 8)
232
+ self.assertEqual(payload["weekly"]["2025-12-29"]["total_calls"], 9)
233
+ self.assertEqual(payload["monthly"]["2025-12"]["hits"], 6)
234
+ self.assertEqual(payload["monthly"]["2025-12"]["total_calls"], 6)
235
+ self.assertEqual(payload["monthly"]["2026-01"]["hits"], 2)
236
+ self.assertEqual(payload["monthly"]["2026-01"]["total_calls"], 3)
237
+ finally:
238
+ shutil.rmtree(project_root, ignore_errors=True)
239
+
240
  def test_seed_accuracy_returns_error_when_history_is_missing(self):
241
  project_root = self.make_project_root("seed_accuracy_missing_history")
242
  try: