artaquest commited on
Commit
0508250
·
verified ·
1 Parent(s): 8353872

precision-corrected starts; calendar/zodiac/physics member families (Φ/T with NASA POWER T at the POB); refreshed deployed stack (held 0.6456)

Browse files
artamodel_iv_ensemble.json ADDED
@@ -0,0 +1,1638 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "members": [
3
+ {
4
+ "member": "PLAIN + start-is-1-January flag",
5
+ "n_fit": 181596,
6
+ "forward_oof": 0.6501539550887834,
7
+ "held_on_its_rows": 0.624626140101035,
8
+ "n_test": 15262
9
+ },
10
+ {
11
+ "member": "PLAIN + GEOGRAPHY (birthplaces, distance) + start weekday/month",
12
+ "n_fit": 181596,
13
+ "forward_oof": 0.6633431817084593,
14
+ "held_on_its_rows": 0.6427296917049335,
15
+ "n_test": 15262
16
+ },
17
+ {
18
+ "member": "ARTAMODEL 9-term greedy boosted (midpoints)",
19
+ "n_fit": 20632,
20
+ "forward_oof": 0.5274362257320314,
21
+ "held_on_its_rows": 0.6255386152996957,
22
+ "n_test": 15262
23
+ },
24
+ {
25
+ "member": "ARTAMODEL IV greedy boosted (full-chart rows)",
26
+ "n_fit": 20632,
27
+ "forward_oof": 0.5235526947166635,
28
+ "held_on_its_rows": 0.6249716370003657,
29
+ "n_test": 15262
30
+ },
31
+ {
32
+ "member": "ARTAMODEL IV fixed-cycle boosted (stable)",
33
+ "n_fit": 20632,
34
+ "forward_oof": 0.5443428943222298,
35
+ "held_on_its_rows": 0.6256877015075806,
36
+ "n_test": 15262
37
+ },
38
+ {
39
+ "member": "phasor a_sun",
40
+ "n_fit": 20818,
41
+ "forward_oof": 0.5006760915632699,
42
+ "held_on_its_rows": 0.49581938892542293,
43
+ "n_test": 15262
44
+ },
45
+ {
46
+ "member": "phasor a_moon",
47
+ "n_fit": 20632,
48
+ "forward_oof": 0.5132323259481918,
49
+ "held_on_its_rows": 0.4966848917572158,
50
+ "n_test": 15262
51
+ },
52
+ {
53
+ "member": "phasor a_mercury",
54
+ "n_fit": 20632,
55
+ "forward_oof": 0.5046449361188368,
56
+ "held_on_its_rows": 0.49021171931679786,
57
+ "n_test": 15262
58
+ },
59
+ {
60
+ "member": "phasor a_venus",
61
+ "n_fit": 20632,
62
+ "forward_oof": 0.49882425908954814,
63
+ "held_on_its_rows": 0.49899322795091045,
64
+ "n_test": 15262
65
+ },
66
+ {
67
+ "member": "phasor a_mars",
68
+ "n_fit": 20632,
69
+ "forward_oof": 0.4924819419715656,
70
+ "held_on_its_rows": 0.49476458815938607,
71
+ "n_test": 15262
72
+ },
73
+ {
74
+ "member": "phasor a_jupiter",
75
+ "n_fit": 24168,
76
+ "forward_oof": 0.48800610233983555,
77
+ "held_on_its_rows": 0.5060983090088774,
78
+ "n_test": 15262
79
+ },
80
+ {
81
+ "member": "phasor a_saturn",
82
+ "n_fit": 24168,
83
+ "forward_oof": 0.48140880405151315,
84
+ "held_on_its_rows": 0.5645125669743556,
85
+ "n_test": 15262
86
+ },
87
+ {
88
+ "member": "phasor a_uranus",
89
+ "n_fit": 24168,
90
+ "forward_oof": 0.5991828499531986,
91
+ "held_on_its_rows": 0.6017226393709562,
92
+ "n_test": 15262
93
+ },
94
+ {
95
+ "member": "phasor a_neptune",
96
+ "n_fit": 24168,
97
+ "forward_oof": 0.5774266436428005,
98
+ "held_on_its_rows": 0.5978339330350106,
99
+ "n_test": 15262
100
+ },
101
+ {
102
+ "member": "phasor a_pluto",
103
+ "n_fit": 24168,
104
+ "forward_oof": 0.5629962910332272,
105
+ "held_on_its_rows": 0.6004045257417725,
106
+ "n_test": 15262
107
+ },
108
+ {
109
+ "member": "phasor a_true_node",
110
+ "n_fit": 24168,
111
+ "forward_oof": 0.48519333252890384,
112
+ "held_on_its_rows": 0.5100315933181773,
113
+ "n_test": 15262
114
+ },
115
+ {
116
+ "member": "phasor a_true_south_node",
117
+ "n_fit": 24168,
118
+ "forward_oof": 0.48519333252890384,
119
+ "held_on_its_rows": 0.5100315933181773,
120
+ "n_test": 15262
121
+ },
122
+ {
123
+ "member": "phasor a_chiron",
124
+ "n_fit": 24168,
125
+ "forward_oof": 0.578726246387389,
126
+ "held_on_its_rows": 0.6055874721951053,
127
+ "n_test": 15262
128
+ },
129
+ {
130
+ "member": "phasor a_mean_lilith",
131
+ "n_fit": 24168,
132
+ "forward_oof": 0.5088636515398772,
133
+ "held_on_its_rows": 0.5028788356599562,
134
+ "n_test": 15262
135
+ },
136
+ {
137
+ "member": "phasor t1_sun",
138
+ "n_fit": 24477,
139
+ "forward_oof": 0.5129133562764628,
140
+ "held_on_its_rows": 0.49297067805077044,
141
+ "n_test": 5486
142
+ },
143
+ {
144
+ "member": "phasor t1_moon",
145
+ "n_fit": 23531,
146
+ "forward_oof": 0.5128072650432505,
147
+ "held_on_its_rows": 0.5028104134762634,
148
+ "n_test": 5112
149
+ },
150
+ {
151
+ "member": "phasor t1_mercury",
152
+ "n_fit": 23531,
153
+ "forward_oof": 0.49199131554158027,
154
+ "held_on_its_rows": 0.4945114854517611,
155
+ "n_test": 5112
156
+ },
157
+ {
158
+ "member": "phasor t1_venus",
159
+ "n_fit": 23531,
160
+ "forward_oof": 0.4834929564985077,
161
+ "held_on_its_rows": 0.5039969372128638,
162
+ "n_test": 5112
163
+ },
164
+ {
165
+ "member": "phasor t1_mars",
166
+ "n_fit": 23531,
167
+ "forward_oof": 0.49290409507311356,
168
+ "held_on_its_rows": 0.5101335375191424,
169
+ "n_test": 5112
170
+ },
171
+ {
172
+ "member": "phasor t1_jupiter",
173
+ "n_fit": 26570,
174
+ "forward_oof": 0.5018729919672705,
175
+ "held_on_its_rows": 0.47041656148513133,
176
+ "n_test": 5486
177
+ },
178
+ {
179
+ "member": "phasor t1_saturn",
180
+ "n_fit": 26570,
181
+ "forward_oof": 0.5579445486662732,
182
+ "held_on_its_rows": 0.561332817810669,
183
+ "n_test": 5486
184
+ },
185
+ {
186
+ "member": "phasor t1_uranus",
187
+ "n_fit": 26570,
188
+ "forward_oof": 0.5558472197114539,
189
+ "held_on_its_rows": 0.5857359991393754,
190
+ "n_test": 5486
191
+ },
192
+ {
193
+ "member": "phasor t1_neptune",
194
+ "n_fit": 26570,
195
+ "forward_oof": 0.6298336827125717,
196
+ "held_on_its_rows": 0.6347181081596374,
197
+ "n_test": 5486
198
+ },
199
+ {
200
+ "member": "phasor t1_pluto",
201
+ "n_fit": 26570,
202
+ "forward_oof": 0.5953780179602078,
203
+ "held_on_its_rows": 0.6106978408760477,
204
+ "n_test": 5486
205
+ },
206
+ {
207
+ "member": "phasor t1_true_node",
208
+ "n_fit": 26570,
209
+ "forward_oof": 0.5476034659378188,
210
+ "held_on_its_rows": 0.5240532862972158,
211
+ "n_test": 5486
212
+ },
213
+ {
214
+ "member": "phasor t1_true_south_node",
215
+ "n_fit": 26570,
216
+ "forward_oof": 0.5476034659378188,
217
+ "held_on_its_rows": 0.5240532862972158,
218
+ "n_test": 5486
219
+ },
220
+ {
221
+ "member": "phasor t1_chiron",
222
+ "n_fit": 26570,
223
+ "forward_oof": 0.5916791872533045,
224
+ "held_on_its_rows": 0.5898117170632676,
225
+ "n_test": 5486
226
+ },
227
+ {
228
+ "member": "phasor t1_mean_lilith",
229
+ "n_fit": 26570,
230
+ "forward_oof": 0.5140597388614666,
231
+ "held_on_its_rows": 0.4863290632292808,
232
+ "n_test": 5486
233
+ },
234
+ {
235
+ "member": "phasor t2_sun",
236
+ "n_fit": 24477,
237
+ "forward_oof": 0.5132306227372129,
238
+ "held_on_its_rows": 0.4925398331794221,
239
+ "n_test": 5486
240
+ },
241
+ {
242
+ "member": "phasor t2_moon",
243
+ "n_fit": 23531,
244
+ "forward_oof": 0.5127828868887029,
245
+ "held_on_its_rows": 0.5047142419601838,
246
+ "n_test": 5112
247
+ },
248
+ {
249
+ "member": "phasor t2_mercury",
250
+ "n_fit": 23531,
251
+ "forward_oof": 0.4925663520579443,
252
+ "held_on_its_rows": 0.4948459418070444,
253
+ "n_test": 5112
254
+ },
255
+ {
256
+ "member": "phasor t2_venus",
257
+ "n_fit": 23531,
258
+ "forward_oof": 0.4848877324557812,
259
+ "held_on_its_rows": 0.5038346094946401,
260
+ "n_test": 5112
261
+ },
262
+ {
263
+ "member": "phasor t2_mars",
264
+ "n_fit": 23531,
265
+ "forward_oof": 0.49480603262196343,
266
+ "held_on_its_rows": 0.5101506891271057,
267
+ "n_test": 5112
268
+ },
269
+ {
270
+ "member": "phasor t2_jupiter",
271
+ "n_fit": 26570,
272
+ "forward_oof": 0.5020565128400362,
273
+ "held_on_its_rows": 0.47042454995616995,
274
+ "n_test": 5486
275
+ },
276
+ {
277
+ "member": "phasor t2_saturn",
278
+ "n_fit": 26570,
279
+ "forward_oof": 0.5623426007622893,
280
+ "held_on_its_rows": 0.5614260166394526,
281
+ "n_test": 5486
282
+ },
283
+ {
284
+ "member": "phasor t2_uranus",
285
+ "n_fit": 26570,
286
+ "forward_oof": 0.5609096630196343,
287
+ "held_on_its_rows": 0.5826828055084236,
288
+ "n_test": 5486
289
+ },
290
+ {
291
+ "member": "phasor t2_neptune",
292
+ "n_fit": 26570,
293
+ "forward_oof": 0.6279532202948832,
294
+ "held_on_its_rows": 0.6378511865009752,
295
+ "n_test": 5486
296
+ },
297
+ {
298
+ "member": "phasor t2_pluto",
299
+ "n_fit": 26570,
300
+ "forward_oof": 0.595381577597907,
301
+ "held_on_its_rows": 0.6107921048343031,
302
+ "n_test": 5486
303
+ },
304
+ {
305
+ "member": "phasor t2_true_node",
306
+ "n_fit": 26570,
307
+ "forward_oof": 0.5467471096899165,
308
+ "held_on_its_rows": 0.5242902776046943,
309
+ "n_test": 5486
310
+ },
311
+ {
312
+ "member": "phasor t2_true_south_node",
313
+ "n_fit": 26570,
314
+ "forward_oof": 0.5467471096899165,
315
+ "held_on_its_rows": 0.5242902776046943,
316
+ "n_test": 5486
317
+ },
318
+ {
319
+ "member": "phasor t2_chiron",
320
+ "n_fit": 26570,
321
+ "forward_oof": 0.590479142398677,
322
+ "held_on_its_rows": 0.5895582162489762,
323
+ "n_test": 5486
324
+ },
325
+ {
326
+ "member": "phasor t2_mean_lilith",
327
+ "n_fit": 26570,
328
+ "forward_oof": 0.5209281475956683,
329
+ "held_on_its_rows": 0.48726903998815574,
330
+ "n_test": 5486
331
+ },
332
+ {
333
+ "member": "phasor n1_sun",
334
+ "n_fit": 36244,
335
+ "forward_oof": 0.5020388251270924,
336
+ "held_on_its_rows": 0.49652805898208136,
337
+ "n_test": 15262
338
+ },
339
+ {
340
+ "member": "phasor n1_moon",
341
+ "n_fit": 35981,
342
+ "forward_oof": 0.48671248168031156,
343
+ "held_on_its_rows": 0.4936347865377056,
344
+ "n_test": 15262
345
+ },
346
+ {
347
+ "member": "phasor n1_mercury",
348
+ "n_fit": 35981,
349
+ "forward_oof": 0.48702565658640223,
350
+ "held_on_its_rows": 0.4995811924051528,
351
+ "n_test": 15262
352
+ },
353
+ {
354
+ "member": "phasor n1_venus",
355
+ "n_fit": 35981,
356
+ "forward_oof": 0.4886051266211787,
357
+ "held_on_its_rows": 0.4965982710506979,
358
+ "n_test": 15262
359
+ },
360
+ {
361
+ "member": "phasor n1_mars",
362
+ "n_fit": 35981,
363
+ "forward_oof": 0.5069435559737276,
364
+ "held_on_its_rows": 0.4946477558405948,
365
+ "n_test": 15262
366
+ },
367
+ {
368
+ "member": "phasor n1_jupiter",
369
+ "n_fit": 39974,
370
+ "forward_oof": 0.49176614688217657,
371
+ "held_on_its_rows": 0.5145570674820374,
372
+ "n_test": 15262
373
+ },
374
+ {
375
+ "member": "phasor n1_saturn",
376
+ "n_fit": 39974,
377
+ "forward_oof": 0.4875620909860846,
378
+ "held_on_its_rows": 0.5259710709375699,
379
+ "n_test": 15262
380
+ },
381
+ {
382
+ "member": "phasor n1_uranus",
383
+ "n_fit": 39974,
384
+ "forward_oof": 0.4767918144041423,
385
+ "held_on_its_rows": 0.41572551743195946,
386
+ "n_test": 15262
387
+ },
388
+ {
389
+ "member": "phasor n1_neptune",
390
+ "n_fit": 39974,
391
+ "forward_oof": 0.47739212537449516,
392
+ "held_on_its_rows": 0.5356544208462096,
393
+ "n_test": 15262
394
+ },
395
+ {
396
+ "member": "phasor n1_pluto",
397
+ "n_fit": 39974,
398
+ "forward_oof": 0.5207578407368105,
399
+ "held_on_its_rows": 0.5121591528016024,
400
+ "n_test": 15262
401
+ },
402
+ {
403
+ "member": "phasor n1_true_node",
404
+ "n_fit": 39974,
405
+ "forward_oof": 0.47864256861589155,
406
+ "held_on_its_rows": 0.4921541358429582,
407
+ "n_test": 15262
408
+ },
409
+ {
410
+ "member": "phasor n1_true_south_node",
411
+ "n_fit": 39974,
412
+ "forward_oof": 0.5042182086782029,
413
+ "held_on_its_rows": 0.49324633140180896,
414
+ "n_test": 15262
415
+ },
416
+ {
417
+ "member": "phasor n1_chiron",
418
+ "n_fit": 39974,
419
+ "forward_oof": 0.4796841494897335,
420
+ "held_on_its_rows": 0.42616486188081865,
421
+ "n_test": 15262
422
+ },
423
+ {
424
+ "member": "phasor n1_mean_lilith",
425
+ "n_fit": 39974,
426
+ "forward_oof": 0.49197125730616625,
427
+ "held_on_its_rows": 0.5005854292140516,
428
+ "n_test": 15262
429
+ },
430
+ {
431
+ "member": "phasor n2_sun",
432
+ "n_fit": 36244,
433
+ "forward_oof": 0.499281522705294,
434
+ "held_on_its_rows": 0.49647721333158873,
435
+ "n_test": 15262
436
+ },
437
+ {
438
+ "member": "phasor n2_moon",
439
+ "n_fit": 35981,
440
+ "forward_oof": 0.4804894729415765,
441
+ "held_on_its_rows": 0.4944498662590376,
442
+ "n_test": 15262
443
+ },
444
+ {
445
+ "member": "phasor n2_mercury",
446
+ "n_fit": 35981,
447
+ "forward_oof": 0.4939519355439749,
448
+ "held_on_its_rows": 0.5033323619607492,
449
+ "n_test": 15262
450
+ },
451
+ {
452
+ "member": "phasor n2_venus",
453
+ "n_fit": 35981,
454
+ "forward_oof": 0.5150334463175786,
455
+ "held_on_its_rows": 0.4964845373588065,
456
+ "n_test": 15262
457
+ },
458
+ {
459
+ "member": "phasor n2_mars",
460
+ "n_fit": 35981,
461
+ "forward_oof": 0.5045960848860968,
462
+ "held_on_its_rows": 0.49463437540625466,
463
+ "n_test": 15262
464
+ },
465
+ {
466
+ "member": "phasor n2_jupiter",
467
+ "n_fit": 39974,
468
+ "forward_oof": 0.4966670433016692,
469
+ "held_on_its_rows": 0.5141037524512604,
470
+ "n_test": 15262
471
+ },
472
+ {
473
+ "member": "phasor n2_saturn",
474
+ "n_fit": 39974,
475
+ "forward_oof": 0.4950758559368672,
476
+ "held_on_its_rows": 0.5240649928541439,
477
+ "n_test": 15262
478
+ },
479
+ {
480
+ "member": "phasor n2_uranus",
481
+ "n_fit": 39974,
482
+ "forward_oof": 0.47802004037705115,
483
+ "held_on_its_rows": 0.42788058567992115,
484
+ "n_test": 15262
485
+ },
486
+ {
487
+ "member": "phasor n2_neptune",
488
+ "n_fit": 39974,
489
+ "forward_oof": 0.47970567775355966,
490
+ "held_on_its_rows": 0.5189611318100953,
491
+ "n_test": 15262
492
+ },
493
+ {
494
+ "member": "phasor n2_pluto",
495
+ "n_fit": 39974,
496
+ "forward_oof": 0.5179637263975267,
497
+ "held_on_its_rows": 0.5122061955918089,
498
+ "n_test": 15262
499
+ },
500
+ {
501
+ "member": "phasor n2_true_node",
502
+ "n_fit": 39974,
503
+ "forward_oof": 0.4850997511822521,
504
+ "held_on_its_rows": 0.492855059332367,
505
+ "n_test": 15262
506
+ },
507
+ {
508
+ "member": "phasor n2_true_south_node",
509
+ "n_fit": 39974,
510
+ "forward_oof": 0.5091526909430945,
511
+ "held_on_its_rows": 0.49356661674590935,
512
+ "n_test": 15262
513
+ },
514
+ {
515
+ "member": "phasor n2_chiron",
516
+ "n_fit": 39974,
517
+ "forward_oof": 0.49366405406747355,
518
+ "held_on_its_rows": 0.4261766930017089,
519
+ "n_test": 15262
520
+ },
521
+ {
522
+ "member": "phasor n2_mean_lilith",
523
+ "n_fit": 39974,
524
+ "forward_oof": 0.48958349286140124,
525
+ "held_on_its_rows": 0.501582834959103,
526
+ "n_test": 15262
527
+ },
528
+ {
529
+ "member": "phasor tn_sun",
530
+ "n_fit": 137082,
531
+ "forward_oof": 0.5112473369923255,
532
+ "held_on_its_rows": 0.5054425453185962,
533
+ "n_test": 5486
534
+ },
535
+ {
536
+ "member": "phasor tn_moon",
537
+ "n_fit": 131988,
538
+ "forward_oof": 0.5293781989312151,
539
+ "held_on_its_rows": 0.47810995405819295,
540
+ "n_test": 5112
541
+ },
542
+ {
543
+ "member": "phasor tn_mercury",
544
+ "n_fit": 131988,
545
+ "forward_oof": 0.5169489374459374,
546
+ "held_on_its_rows": 0.5059022970903522,
547
+ "n_test": 5112
548
+ },
549
+ {
550
+ "member": "phasor tn_venus",
551
+ "n_fit": 131988,
552
+ "forward_oof": 0.5116183416732443,
553
+ "held_on_its_rows": 0.4989044410413476,
554
+ "n_test": 5112
555
+ },
556
+ {
557
+ "member": "phasor tn_mars",
558
+ "n_fit": 131988,
559
+ "forward_oof": 0.5253319899683022,
560
+ "held_on_its_rows": 0.502550382848392,
561
+ "n_test": 5112
562
+ },
563
+ {
564
+ "member": "phasor tn_jupiter",
565
+ "n_fit": 137082,
566
+ "forward_oof": 0.523474964521275,
567
+ "held_on_its_rows": 0.4912001665862494,
568
+ "n_test": 5486
569
+ },
570
+ {
571
+ "member": "phasor tn_saturn",
572
+ "n_fit": 137082,
573
+ "forward_oof": 0.5236576566471387,
574
+ "held_on_its_rows": 0.5191427731497902,
575
+ "n_test": 5486
576
+ },
577
+ {
578
+ "member": "phasor tn_uranus",
579
+ "n_fit": 137082,
580
+ "forward_oof": 0.4684388454372136,
581
+ "held_on_its_rows": 0.43970062405935756,
582
+ "n_test": 5486
583
+ },
584
+ {
585
+ "member": "phasor tn_neptune",
586
+ "n_fit": 137082,
587
+ "forward_oof": 0.5446700319584274,
588
+ "held_on_its_rows": 0.5252486278469579,
589
+ "n_test": 5486
590
+ },
591
+ {
592
+ "member": "phasor tn_pluto",
593
+ "n_fit": 137082,
594
+ "forward_oof": 0.6047016671524749,
595
+ "held_on_its_rows": 0.5510359449242853,
596
+ "n_test": 5486
597
+ },
598
+ {
599
+ "member": "phasor tn_true_node",
600
+ "n_fit": 137082,
601
+ "forward_oof": 0.521563890010545,
602
+ "held_on_its_rows": 0.48426191320685985,
603
+ "n_test": 5486
604
+ },
605
+ {
606
+ "member": "phasor tn_true_south_node",
607
+ "n_fit": 137082,
608
+ "forward_oof": 0.5253720989190892,
609
+ "held_on_its_rows": 0.48446641806544793,
610
+ "n_test": 5486
611
+ },
612
+ {
613
+ "member": "phasor tn_chiron",
614
+ "n_fit": 137082,
615
+ "forward_oof": 0.4832124046501965,
616
+ "held_on_its_rows": 0.5467472011060305,
617
+ "n_test": 5486
618
+ },
619
+ {
620
+ "member": "phasor tn_mean_lilith",
621
+ "n_fit": 137082,
622
+ "forward_oof": 0.5203977301041086,
623
+ "held_on_its_rows": 0.4847289724802498,
624
+ "n_test": 5486
625
+ },
626
+ {
627
+ "member": "SUM term a",
628
+ "n_fit": 24168,
629
+ "forward_oof": 0.5807987750803356,
630
+ "held_on_its_rows": 0.5933202547803714,
631
+ "n_test": 15262
632
+ },
633
+ {
634
+ "member": "SUM term t1",
635
+ "n_fit": 26570,
636
+ "forward_oof": 0.6449235934941635,
637
+ "held_on_its_rows": 0.6302371084717203,
638
+ "n_test": 5486
639
+ },
640
+ {
641
+ "member": "SUM term t2",
642
+ "n_fit": 26570,
643
+ "forward_oof": 0.644913377493592,
644
+ "held_on_its_rows": 0.6323902676989902,
645
+ "n_test": 5486
646
+ },
647
+ {
648
+ "member": "SUM term n1",
649
+ "n_fit": 39974,
650
+ "forward_oof": 0.47677606751579227,
651
+ "held_on_its_rows": 0.5619066921749389,
652
+ "n_test": 15262
653
+ },
654
+ {
655
+ "member": "SUM term n2",
656
+ "n_fit": 39974,
657
+ "forward_oof": 0.4765810353508937,
658
+ "held_on_its_rows": 0.573452176003698,
659
+ "n_test": 15262
660
+ },
661
+ {
662
+ "member": "SUM term tn",
663
+ "n_fit": 137082,
664
+ "forward_oof": 0.5047296662405232,
665
+ "held_on_its_rows": 0.4487478337929367,
666
+ "n_test": 5486
667
+ },
668
+ {
669
+ "member": "SUM 3-term (a+t1+t2)",
670
+ "n_fit": 47008,
671
+ "forward_oof": 0.6717813091256718,
672
+ "held_on_its_rows": 0.614308416757994,
673
+ "n_test": 15262
674
+ },
675
+ {
676
+ "member": "SUM 6-term",
677
+ "n_fit": 154872,
678
+ "forward_oof": 0.5662477623407951,
679
+ "held_on_its_rows": 0.5121177438784865,
680
+ "n_test": 15262
681
+ },
682
+ {
683
+ "member": "TRADITION aboriginal_australian",
684
+ "n_fit": 108580,
685
+ "forward_oof": 0.5372246933291335,
686
+ "held_on_its_rows": 0.5214828155081769,
687
+ "n_test": 15262
688
+ },
689
+ {
690
+ "member": "TRADITION african",
691
+ "n_fit": 108580,
692
+ "forward_oof": 0.5623312706759882,
693
+ "held_on_its_rows": 0.5894913730705942,
694
+ "n_test": 15262
695
+ },
696
+ {
697
+ "member": "TRADITION astrocartography",
698
+ "n_fit": 108580,
699
+ "forward_oof": 0.5201433788190115,
700
+ "held_on_its_rows": 0.5,
701
+ "n_test": 15262
702
+ },
703
+ {
704
+ "member": "TRADITION babylonian_egyptian",
705
+ "n_fit": 108580,
706
+ "forward_oof": 0.5555722596475834,
707
+ "held_on_its_rows": 0.5820825209414361,
708
+ "n_test": 15262
709
+ },
710
+ {
711
+ "member": "TRADITION chinese",
712
+ "n_fit": 108580,
713
+ "forward_oof": 0.5587824382108415,
714
+ "held_on_its_rows": 0.5865465155306702,
715
+ "n_test": 15262
716
+ },
717
+ {
718
+ "member": "TRADITION east_asian_deep",
719
+ "n_fit": 108580,
720
+ "forward_oof": 0.5548288987701618,
721
+ "held_on_its_rows": 0.5809318387998511,
722
+ "n_test": 15262
723
+ },
724
+ {
725
+ "member": "TRADITION harmonics",
726
+ "n_fit": 108580,
727
+ "forward_oof": 0.5422654371809488,
728
+ "held_on_its_rows": 0.5891770032869389,
729
+ "n_test": 15262
730
+ },
731
+ {
732
+ "member": "TRADITION hellenistic",
733
+ "n_fit": 108580,
734
+ "forward_oof": 0.5484485683703377,
735
+ "held_on_its_rows": 0.5747834235855367,
736
+ "n_test": 15262
737
+ },
738
+ {
739
+ "member": "TRADITION houses",
740
+ "n_fit": 108580,
741
+ "forward_oof": 0.5201433788190115,
742
+ "held_on_its_rows": 0.5,
743
+ "n_test": 15262
744
+ },
745
+ {
746
+ "member": "TRADITION indigenous_americas",
747
+ "n_fit": 108580,
748
+ "forward_oof": 0.5235301340442263,
749
+ "held_on_its_rows": 0.511171324630605,
750
+ "n_test": 15262
751
+ },
752
+ {
753
+ "member": "TRADITION lunar_calendrical",
754
+ "n_fit": 108580,
755
+ "forward_oof": 0.5371570295863161,
756
+ "held_on_its_rows": 0.5674845374996532,
757
+ "n_test": 15262
758
+ },
759
+ {
760
+ "member": "TRADITION mesoamerican",
761
+ "n_fit": 108580,
762
+ "forward_oof": 0.5589072008217298,
763
+ "held_on_its_rows": 0.5872889535782028,
764
+ "n_test": 15262
765
+ },
766
+ {
767
+ "member": "TRADITION modern_western",
768
+ "n_fit": 108580,
769
+ "forward_oof": 0.5552051297402245,
770
+ "held_on_its_rows": 0.59293359543961,
771
+ "n_test": 15262
772
+ },
773
+ {
774
+ "member": "TRADITION numerology",
775
+ "n_fit": 108580,
776
+ "forward_oof": 0.5172614103040488,
777
+ "held_on_its_rows": 0.5244046798280375,
778
+ "n_test": 15262
779
+ },
780
+ {
781
+ "member": "TRADITION persian_arabic",
782
+ "n_fit": 108580,
783
+ "forward_oof": 0.5578015189280674,
784
+ "held_on_its_rows": 0.5908911425609221,
785
+ "n_test": 15262
786
+ },
787
+ {
788
+ "member": "TRADITION polynesian",
789
+ "n_fit": 108580,
790
+ "forward_oof": 0.5127075767063618,
791
+ "held_on_its_rows": 0.49906016533428055,
792
+ "n_test": 15262
793
+ },
794
+ {
795
+ "member": "TRADITION tibetan_seasia",
796
+ "n_fit": 108580,
797
+ "forward_oof": 0.5459726265053971,
798
+ "held_on_its_rows": 0.5330011511398933,
799
+ "n_test": 15262
800
+ },
801
+ {
802
+ "member": "TRADITION uranian",
803
+ "n_fit": 108580,
804
+ "forward_oof": 0.554479534496185,
805
+ "held_on_its_rows": 0.5943296677046598,
806
+ "n_test": 15262
807
+ },
808
+ {
809
+ "member": "TRADITION vedic_ashtakavarga",
810
+ "n_fit": 108580,
811
+ "forward_oof": 0.515343121676528,
812
+ "held_on_its_rows": 0.5178564361086373,
813
+ "n_test": 15262
814
+ },
815
+ {
816
+ "member": "TRADITION vedic_core",
817
+ "n_fit": 108580,
818
+ "forward_oof": 0.5583482088727858,
819
+ "held_on_its_rows": 0.582026956927255,
820
+ "n_test": 15262
821
+ },
822
+ {
823
+ "member": "TRADITION vedic_match",
824
+ "n_fit": 108580,
825
+ "forward_oof": 0.511943774812192,
826
+ "held_on_its_rows": 0.5008915594670869,
827
+ "n_test": 15262
828
+ },
829
+ {
830
+ "member": "SIDEREAL vedic:D1 (lagna, grahas, houses, nakshatras)",
831
+ "n_fit": 33962,
832
+ "forward_oof": 0.5160827623046991,
833
+ "held_on_its_rows": 0.5068710995153607,
834
+ "n_test": 15262
835
+ },
836
+ {
837
+ "member": "SIDEREAL vedic:vargas D2-D60",
838
+ "n_fit": 32356,
839
+ "forward_oof": 0.5210246438549613,
840
+ "held_on_its_rows": 0.5030051016545286,
841
+ "n_test": 15214
842
+ },
843
+ {
844
+ "member": "SIDEREAL vedic:panchanga",
845
+ "n_fit": 32356,
846
+ "forward_oof": 0.5227849762784051,
847
+ "held_on_its_rows": 0.49469236946629563,
848
+ "n_test": 15214
849
+ },
850
+ {
851
+ "member": "SIDEREAL vedic:ashtakavarga",
852
+ "n_fit": 32356,
853
+ "forward_oof": 0.5236847143120676,
854
+ "held_on_its_rows": 0.5100651764651838,
855
+ "n_test": 15214
856
+ },
857
+ {
858
+ "member": "SIDEREAL vedic:vimsottari at the start",
859
+ "n_fit": 32348,
860
+ "forward_oof": 0.527771540469894,
861
+ "held_on_its_rows": 0.5209603536421208,
862
+ "n_test": 15214
863
+ },
864
+ {
865
+ "member": "SIDEREAL vedic:doshas",
866
+ "n_fit": 32356,
867
+ "forward_oof": 0.5266060068059442,
868
+ "held_on_its_rows": 0.49447232144705394,
869
+ "n_test": 15214
870
+ },
871
+ {
872
+ "member": "SIDEREAL vedic:shad bala",
873
+ "n_fit": 32356,
874
+ "forward_oof": 0.5209972362320495,
875
+ "held_on_its_rows": 0.4942852380956432,
876
+ "n_test": 15214
877
+ },
878
+ {
879
+ "member": "SIDEREAL vedic:pair (ashtakoota, transposition, dasa)",
880
+ "n_fit": 16598,
881
+ "forward_oof": 0.5571568849951978,
882
+ "held_on_its_rows": 0.5630757296959623,
883
+ "n_test": 15214
884
+ },
885
+ {
886
+ "member": "SIDEREAL vedic:vivaha muhurta (the wedding day)",
887
+ "n_fit": 108508,
888
+ "forward_oof": 0.5152006857173164,
889
+ "held_on_its_rows": 0.4585577766416192,
890
+ "n_test": 15214
891
+ },
892
+ {
893
+ "member": "SIDEREAL zwds:astrolabe (soul, body, class)",
894
+ "n_fit": 95178,
895
+ "forward_oof": 0.5178185779655072,
896
+ "held_on_its_rows": 0.4966123909300937,
897
+ "n_test": 15262
898
+ },
899
+ {
900
+ "member": "SIDEREAL zwds:palaces",
901
+ "n_fit": 95178,
902
+ "forward_oof": 0.5181202707385036,
903
+ "held_on_its_rows": 0.5024682323840596,
904
+ "n_test": 15262
905
+ },
906
+ {
907
+ "member": "SIDEREAL zwds:major stars",
908
+ "n_fit": 95178,
909
+ "forward_oof": 0.5189754891992912,
910
+ "held_on_its_rows": 0.4987877326487809,
911
+ "n_test": 15262
912
+ },
913
+ {
914
+ "member": "SIDEREAL zwds:minor stars",
915
+ "n_fit": 95178,
916
+ "forward_oof": 0.5153095841871936,
917
+ "held_on_its_rows": 0.4878137342130241,
918
+ "n_test": 15262
919
+ },
920
+ {
921
+ "member": "SIDEREAL zwds:pair (spouse x life palace, branches)",
922
+ "n_fit": 36224,
923
+ "forward_oof": 0.5041273192588362,
924
+ "held_on_its_rows": 0.49536459500453456,
925
+ "n_test": 15262
926
+ },
927
+ {
928
+ "member": "CALENDAR + NUMEROLOGY (plain + date fine structure)",
929
+ "n_fit": 108580,
930
+ "forward_oof": 0.657172476264026,
931
+ "held_on_its_rows": 0.6302304998127444,
932
+ "n_test": 15262
933
+ },
934
+ {
935
+ "member": "CALENDAR + NUMEROLOGY alone (no ages)",
936
+ "n_fit": 108580,
937
+ "forward_oof": 0.5416284756541011,
938
+ "held_on_its_rows": 0.5377003596801597,
939
+ "n_test": 15262
940
+ },
941
+ {
942
+ "member": "HARMONIC 2 synastry sum (14 bodies)",
943
+ "n_fit": 16658,
944
+ "forward_oof": 0.5845033487307391,
945
+ "held_on_its_rows": 0.5933454311239326,
946
+ "n_test": 15262
947
+ },
948
+ {
949
+ "member": "HARMONIC 3 synastry sum (14 bodies)",
950
+ "n_fit": 16658,
951
+ "forward_oof": 0.5788242715910249,
952
+ "held_on_its_rows": 0.5802883807547664,
953
+ "n_test": 15262
954
+ },
955
+ {
956
+ "member": "HARMONIC 4 synastry sum (14 bodies)",
957
+ "n_fit": 16658,
958
+ "forward_oof": 0.552924940868573,
959
+ "held_on_its_rows": 0.5644729538463749,
960
+ "n_test": 15262
961
+ },
962
+ {
963
+ "member": "HARMONIC 6 synastry sum (14 bodies)",
964
+ "n_fit": 16658,
965
+ "forward_oof": 0.5486822975912803,
966
+ "held_on_its_rows": 0.5747368385470313,
967
+ "n_test": 15262
968
+ },
969
+ {
970
+ "member": "FAST synastry sum (Sun..Mars)",
971
+ "n_fit": 14736,
972
+ "forward_oof": 0.4928763656240874,
973
+ "held_on_its_rows": 0.5115615403499674,
974
+ "n_test": 15262
975
+ },
976
+ {
977
+ "member": "PROGRESSED synastry + progressed-to-start (20 phasors)",
978
+ "n_fit": 73096,
979
+ "forward_oof": 0.5093726961217963,
980
+ "held_on_its_rows": 0.4771908116385911,
981
+ "n_test": 5112
982
+ },
983
+ {
984
+ "member": "PROGRESSED synastry only (10 phasors)",
985
+ "n_fit": 14096,
986
+ "forward_oof": 0.5216442117125009,
987
+ "held_on_its_rows": 0.4759001531393568,
988
+ "n_test": 5112
989
+ },
990
+ {
991
+ "member": "PHYSICS \u03a6/T only (entropic gravity, no ages)",
992
+ "n_fit": 108580,
993
+ "forward_oof": 0.5349372242335847,
994
+ "held_on_its_rows": 0.5422952712559115,
995
+ "n_test": 15262
996
+ },
997
+ {
998
+ "member": "PHYSICS all (\u03a6, \u03c4, \u03a6/T, T, day length, Sun altitude; no ages)",
999
+ "n_fit": 108580,
1000
+ "forward_oof": 0.540087486110307,
1001
+ "held_on_its_rows": 0.5345725775181379,
1002
+ "n_test": 15262
1003
+ },
1004
+ {
1005
+ "member": "PLAIN + PHYSICS",
1006
+ "n_fit": 108580,
1007
+ "forward_oof": 0.6562972886757988,
1008
+ "held_on_its_rows": 0.6227579497737932,
1009
+ "n_test": 15262
1010
+ },
1011
+ {
1012
+ "member": "PLAIN + \u03a6/T",
1013
+ "n_fit": 108580,
1014
+ "forward_oof": 0.655858378946614,
1015
+ "held_on_its_rows": 0.6080996135308022,
1016
+ "n_test": 15262
1017
+ },
1018
+ {
1019
+ "member": "CALENDAR jalali (no ages)",
1020
+ "n_fit": 108580,
1021
+ "forward_oof": 0.5270310795267475,
1022
+ "held_on_its_rows": 0.5427913332532385,
1023
+ "n_test": 15262
1024
+ },
1025
+ {
1026
+ "member": "CALENDAR islamic (no ages)",
1027
+ "n_fit": 108580,
1028
+ "forward_oof": 0.5233017848047428,
1029
+ "held_on_its_rows": 0.5387187163684544,
1030
+ "n_test": 15262
1031
+ },
1032
+ {
1033
+ "member": "CALENDAR hebrew (no ages)",
1034
+ "n_fit": 108580,
1035
+ "forward_oof": 0.5263662457404089,
1036
+ "held_on_its_rows": 0.5350317376860215,
1037
+ "n_test": 15262
1038
+ },
1039
+ {
1040
+ "member": "CALENDAR julian (no ages)",
1041
+ "n_fit": 108580,
1042
+ "forward_oof": 0.5285634762286933,
1043
+ "held_on_its_rows": 0.5344058854755949,
1044
+ "n_test": 15262
1045
+ },
1046
+ {
1047
+ "member": "CALENDAR chinese_sexagenary (no ages)",
1048
+ "n_fit": 108580,
1049
+ "forward_oof": 0.5447198121244768,
1050
+ "held_on_its_rows": 0.5545984397850172,
1051
+ "n_test": 15262
1052
+ },
1053
+ {
1054
+ "member": "PLAIN + ALL CALENDARS",
1055
+ "n_fit": 108580,
1056
+ "forward_oof": 0.6518797153784806,
1057
+ "held_on_its_rows": 0.6256605885222071,
1058
+ "n_test": 15262
1059
+ },
1060
+ {
1061
+ "member": "ZODIAC TROPICAL signs (no ages)",
1062
+ "n_fit": 108580,
1063
+ "forward_oof": 0.5429859923698692,
1064
+ "held_on_its_rows": 0.5254988472403699,
1065
+ "n_test": 15262
1066
+ },
1067
+ {
1068
+ "member": "ZODIAC FAGAN_BRADLEY signs (no ages)",
1069
+ "n_fit": 108580,
1070
+ "forward_oof": 0.5409997860590767,
1071
+ "held_on_its_rows": 0.5278086623241758,
1072
+ "n_test": 15262
1073
+ },
1074
+ {
1075
+ "member": "ZODIAC KRISHNAMURTI signs (no ages)",
1076
+ "n_fit": 108580,
1077
+ "forward_oof": 0.5419085563375172,
1078
+ "held_on_its_rows": 0.5289844855976525,
1079
+ "n_test": 15262
1080
+ },
1081
+ {
1082
+ "member": "ZODIAC RAMAN signs (no ages)",
1083
+ "n_fit": 108580,
1084
+ "forward_oof": 0.5415588113228327,
1085
+ "held_on_its_rows": 0.5244077080315986,
1086
+ "n_test": 15262
1087
+ },
1088
+ {
1089
+ "member": "ZODIAC YUKTESHWAR signs (no ages)",
1090
+ "n_fit": 108580,
1091
+ "forward_oof": 0.54120825077515,
1092
+ "held_on_its_rows": 0.522474939502831,
1093
+ "n_test": 15262
1094
+ },
1095
+ {
1096
+ "member": "PLAIN + ALL ZODIAC SIGN SYSTEMS",
1097
+ "n_fit": 108580,
1098
+ "forward_oof": 0.658939643125534,
1099
+ "held_on_its_rows": 0.6233515480951262,
1100
+ "n_test": 15262
1101
+ }
1102
+ ],
1103
+ "runs": {
1104
+ "from1867_lam0.01": [
1105
+ {
1106
+ "subset": "plain alone",
1107
+ "k": 1,
1108
+ "fit_auc": 0.6526043154669934,
1109
+ "held": 0.6151821239087375,
1110
+ "age_cell": 0.5556959692126378
1111
+ },
1112
+ {
1113
+ "subset": "geography alone",
1114
+ "k": 1,
1115
+ "fit_auc": 0.6599108813569119,
1116
+ "held": 0.631347730868479,
1117
+ "age_cell": 0.5873546718649199
1118
+ },
1119
+ {
1120
+ "subset": "greedy alone",
1121
+ "k": 1,
1122
+ "fit_auc": 0.5458932785910576,
1123
+ "held": 0.5964453960671946,
1124
+ "age_cell": 0.5652011204544376
1125
+ },
1126
+ {
1127
+ "subset": "fixed alone",
1128
+ "k": 1,
1129
+ "fit_auc": 0.5551664074401238,
1130
+ "held": 0.598225698067823,
1131
+ "age_cell": 0.5640812245684491
1132
+ },
1133
+ {
1134
+ "subset": "plain + greedy",
1135
+ "k": 2,
1136
+ "fit_auc": 0.6518243569135682,
1137
+ "held": 0.622356184626895,
1138
+ "age_cell": 0.5605428004099768
1139
+ },
1140
+ {
1141
+ "subset": "geography + greedy + fixed",
1142
+ "k": 3,
1143
+ "fit_auc": 0.6590590592000484,
1144
+ "held": 0.640515898843353,
1145
+ "age_cell": 0.5882497507463645
1146
+ },
1147
+ {
1148
+ "subset": "plain + greedy + fixed",
1149
+ "k": 3,
1150
+ "fit_auc": 0.6505049128721063,
1151
+ "held": 0.6258692528745751,
1152
+ "age_cell": 0.5617967486713454
1153
+ },
1154
+ {
1155
+ "subset": "plain + greedy + fixed + 6 best phasors",
1156
+ "k": 9,
1157
+ "fit_auc": 0.6514964015802724,
1158
+ "held": 0.6303682478631094,
1159
+ "age_cell": 0.5611181085209834
1160
+ },
1161
+ {
1162
+ "subset": "per-phasor (84) + plain",
1163
+ "k": 85,
1164
+ "fit_auc": 0.6551106244834742,
1165
+ "held": 0.6229895721345553,
1166
+ "age_cell": 0.5573813985572613
1167
+ },
1168
+ {
1169
+ "subset": "sums (8) + plain",
1170
+ "k": 9,
1171
+ "fit_auc": 0.654897168932906,
1172
+ "held": 0.6351133019968256,
1173
+ "age_cell": 0.5715965358631996
1174
+ },
1175
+ {
1176
+ "subset": "traditions + plain",
1177
+ "k": 22,
1178
+ "fit_auc": 0.6503422303052853,
1179
+ "held": 0.6243601511510202,
1180
+ "age_cell": 0.5556945728337276
1181
+ },
1182
+ {
1183
+ "subset": "ArtaModel family (95) only",
1184
+ "k": 123,
1185
+ "fit_auc": 0.6658884114382991,
1186
+ "held": 0.6365678256329403,
1187
+ "age_cell": 0.5789945513294924
1188
+ },
1189
+ {
1190
+ "subset": "sidereal families + plain",
1191
+ "k": 15,
1192
+ "fit_auc": 0.6541483139025636,
1193
+ "held": 0.6152446950451125,
1194
+ "age_cell": 0.5581326504109543
1195
+ },
1196
+ {
1197
+ "subset": "ALL members",
1198
+ "k": 158,
1199
+ "fit_auc": 0.6665460841167267,
1200
+ "held": 0.6362797941779336,
1201
+ "age_cell": 0.5784304142497675
1202
+ }
1203
+ ],
1204
+ "from1867_lam0.001": [
1205
+ {
1206
+ "subset": "plain alone",
1207
+ "k": 1,
1208
+ "fit_auc": 0.6588163438302289,
1209
+ "held": 0.6252856898789972,
1210
+ "age_cell": 0.5556317357827681
1211
+ },
1212
+ {
1213
+ "subset": "geography alone",
1214
+ "k": 1,
1215
+ "fit_auc": 0.665882498627997,
1216
+ "held": 0.6418059487720916,
1217
+ "age_cell": 0.590267518271618
1218
+ },
1219
+ {
1220
+ "subset": "greedy alone",
1221
+ "k": 1,
1222
+ "fit_auc": 0.5485039519488809,
1223
+ "held": 0.6052679615077299,
1224
+ "age_cell": 0.5651704001184129
1225
+ },
1226
+ {
1227
+ "subset": "fixed alone",
1228
+ "k": 1,
1229
+ "fit_auc": 0.5570732563674544,
1230
+ "held": 0.6186368464203605,
1231
+ "age_cell": 0.5634277192384708
1232
+ },
1233
+ {
1234
+ "subset": "plain + greedy",
1235
+ "k": 2,
1236
+ "fit_auc": 0.658585085058551,
1237
+ "held": 0.6279259664793359,
1238
+ "age_cell": 0.5579008515118594
1239
+ },
1240
+ {
1241
+ "subset": "geography + greedy + fixed",
1242
+ "k": 3,
1243
+ "fit_auc": 0.6646875137503122,
1244
+ "held": 0.645582505941265,
1245
+ "age_cell": 0.5914670077554884
1246
+ },
1247
+ {
1248
+ "subset": "plain + greedy + fixed",
1249
+ "k": 3,
1250
+ "fit_auc": 0.6573849676699702,
1251
+ "held": 0.6291673890927488,
1252
+ "age_cell": 0.5581131011062114
1253
+ },
1254
+ {
1255
+ "subset": "plain + greedy + fixed + 6 best phasors",
1256
+ "k": 9,
1257
+ "fit_auc": 0.6587704963104233,
1258
+ "held": 0.6302605705783404,
1259
+ "age_cell": 0.5579315718478841
1260
+ },
1261
+ {
1262
+ "subset": "per-phasor (84) + plain",
1263
+ "k": 85,
1264
+ "fit_auc": 0.661577661453384,
1265
+ "held": 0.6271698310924392,
1266
+ "age_cell": 0.5637628501769212
1267
+ },
1268
+ {
1269
+ "subset": "sums (8) + plain",
1270
+ "k": 9,
1271
+ "fit_auc": 0.6602880335818329,
1272
+ "held": 0.6343568144932358,
1273
+ "age_cell": 0.5702532193515775
1274
+ },
1275
+ {
1276
+ "subset": "traditions + plain",
1277
+ "k": 22,
1278
+ "fit_auc": 0.6586626840034734,
1279
+ "held": 0.6292452068819376,
1280
+ "age_cell": 0.5576634670971238
1281
+ },
1282
+ {
1283
+ "subset": "ArtaModel family (95) only",
1284
+ "k": 123,
1285
+ "fit_auc": 0.6686947005050312,
1286
+ "held": 0.6388272176062854,
1287
+ "age_cell": 0.5869539111176896
1288
+ },
1289
+ {
1290
+ "subset": "sidereal families + plain",
1291
+ "k": 15,
1292
+ "fit_auc": 0.6603341557557617,
1293
+ "held": 0.6247469161267896,
1294
+ "age_cell": 0.559420111766168
1295
+ },
1296
+ {
1297
+ "subset": "ALL members",
1298
+ "k": 158,
1299
+ "fit_auc": 0.6695644174343789,
1300
+ "held": 0.6383212259182112,
1301
+ "age_cell": 0.5870544503992248
1302
+ }
1303
+ ],
1304
+ "from1823_lam0.01": [
1305
+ {
1306
+ "subset": "plain alone",
1307
+ "k": 1,
1308
+ "fit_auc": 0.6484399671657917,
1309
+ "held": 0.6178795490483765,
1310
+ "age_cell": 0.5557015547282786
1311
+ },
1312
+ {
1313
+ "subset": "geography alone",
1314
+ "k": 1,
1315
+ "fit_auc": 0.6585502443060826,
1316
+ "held": 0.6349877723957132,
1317
+ "age_cell": 0.5882623181565564
1318
+ },
1319
+ {
1320
+ "subset": "greedy alone",
1321
+ "k": 1,
1322
+ "fit_auc": 0.5371481216135425,
1323
+ "held": 0.5964453960671946,
1324
+ "age_cell": 0.5652011204544376
1325
+ },
1326
+ {
1327
+ "subset": "fixed alone",
1328
+ "k": 1,
1329
+ "fit_auc": 0.5557178759709513,
1330
+ "held": 0.5965070869118366,
1331
+ "age_cell": 0.5640812245684491
1332
+ },
1333
+ {
1334
+ "subset": "plain + greedy",
1335
+ "k": 2,
1336
+ "fit_auc": 0.6471110039634237,
1337
+ "held": 0.6254347408752128,
1338
+ "age_cell": 0.5590654315229746
1339
+ },
1340
+ {
1341
+ "subset": "geography + greedy + fixed",
1342
+ "k": 3,
1343
+ "fit_auc": 0.6554366759778438,
1344
+ "held": 0.6426636698249656,
1345
+ "age_cell": 0.5885150627393044
1346
+ },
1347
+ {
1348
+ "subset": "plain + greedy + fixed",
1349
+ "k": 3,
1350
+ "fit_auc": 0.6457858780834749,
1351
+ "held": 0.6280639962230555,
1352
+ "age_cell": 0.5589453429366965
1353
+ },
1354
+ {
1355
+ "subset": "plain + greedy + fixed + 6 best phasors",
1356
+ "k": 9,
1357
+ "fit_auc": 0.6444415159591601,
1358
+ "held": 0.632605315638108,
1359
+ "age_cell": 0.5618749458903173
1360
+ },
1361
+ {
1362
+ "subset": "per-phasor (84) + plain",
1363
+ "k": 85,
1364
+ "fit_auc": 0.6502555333101452,
1365
+ "held": 0.6193457981703735,
1366
+ "age_cell": 0.5516143536580939
1367
+ },
1368
+ {
1369
+ "subset": "sums (8) + plain",
1370
+ "k": 9,
1371
+ "fit_auc": 0.6509953815145905,
1372
+ "held": 0.6323745383574094,
1373
+ "age_cell": 0.5670974030145028
1374
+ },
1375
+ {
1376
+ "subset": "traditions + plain",
1377
+ "k": 22,
1378
+ "fit_auc": 0.6437514383840024,
1379
+ "held": 0.62650806297931,
1380
+ "age_cell": 0.5541194574230106
1381
+ },
1382
+ {
1383
+ "subset": "ArtaModel family (95) only",
1384
+ "k": 123,
1385
+ "fit_auc": 0.6620051966510526,
1386
+ "held": 0.6324905960194758,
1387
+ "age_cell": 0.5711580728853936
1388
+ },
1389
+ {
1390
+ "subset": "sidereal families + plain",
1391
+ "k": 15,
1392
+ "fit_auc": 0.6477296912960868,
1393
+ "held": 0.6199192554168576,
1394
+ "age_cell": 0.5555772770052699
1395
+ },
1396
+ {
1397
+ "subset": "ALL members",
1398
+ "k": 158,
1399
+ "fit_auc": 0.6621092622650561,
1400
+ "held": 0.6327215141468515,
1401
+ "age_cell": 0.570390064484778
1402
+ }
1403
+ ]
1404
+ },
1405
+ "pools": {
1406
+ "plain + greedy": {
1407
+ "k": 2,
1408
+ "held": 0.6303150078191033,
1409
+ "age_cell": 0.5581954874619137
1410
+ },
1411
+ "plain + greedy + fixed": {
1412
+ "k": 3,
1413
+ "held": 0.6313405124762691,
1414
+ "age_cell": 0.5644624360109365
1415
+ },
1416
+ "plain + greedy + fixed + 6 best phasors": {
1417
+ "k": 9,
1418
+ "held": 0.6236491571241869,
1419
+ "age_cell": 0.5443098955787851
1420
+ },
1421
+ "plain + all members with fwd-OOF >= 0.60": {
1422
+ "k": 14,
1423
+ "held": 0.6323618269447863,
1424
+ "age_cell": 0.5691179632975767
1425
+ },
1426
+ "plain + greedy + fixed + traditions + sidereal families": {
1427
+ "k": 38,
1428
+ "held": 0.5912844921188537,
1429
+ "age_cell": 0.5069413995626542
1430
+ },
1431
+ "geography + greedy + fixed": {
1432
+ "k": 3,
1433
+ "held": 0.6389352822194169,
1434
+ "age_cell": 0.5860350937947714
1435
+ },
1436
+ "geography + plain + greedy + fixed": {
1437
+ "k": 4,
1438
+ "held": 0.6389849658848221,
1439
+ "age_cell": 0.5830915270520486
1440
+ }
1441
+ },
1442
+ "raw_pair_asymmetry": {
1443
+ "PLAIN (older age, younger age, |gap|, start year)": 0.0,
1444
+ "PLAIN + start-is-1-January flag": 0.0,
1445
+ "PLAIN + GEOGRAPHY (birthplaces, distance) + start weekday/month": 0.0,
1446
+ "ARTAMODEL 9-term greedy boosted (midpoints)": 0.004529580872257482,
1447
+ "ARTAMODEL IV greedy boosted (full-chart rows)": 0.006102612000198426,
1448
+ "ARTAMODEL IV fixed-cycle boosted (stable)": 0.0011713539070073696,
1449
+ "phasor a_sun": 1.0682082663674305e-05,
1450
+ "phasor a_moon": 6.72352952223248e-06,
1451
+ "phasor a_mercury": 1.1154361238032961e-05,
1452
+ "phasor a_venus": 1.0948276041949189e-05,
1453
+ "phasor a_mars": 9.763286164467866e-06,
1454
+ "phasor a_jupiter": 8.535361871135739e-06,
1455
+ "phasor a_saturn": 6.895267185635695e-06,
1456
+ "phasor a_uranus": 2.71345508176933e-06,
1457
+ "phasor a_neptune": 6.783637704423545e-07,
1458
+ "phasor a_pluto": 8.586883170156346e-09,
1459
+ "phasor a_true_node": 8.054496413606579e-06,
1460
+ "phasor a_true_south_node": 3.1513861234472992e-06,
1461
+ "phasor a_chiron": 4.75713327626661e-06,
1462
+ "phasor a_mean_lilith": 8.183299661158954e-06,
1463
+ "phasor t1_sun": 0.3307724543555137,
1464
+ "phasor t1_moon": 0.3341562997848392,
1465
+ "phasor t1_mercury": 0.3325778821278723,
1466
+ "phasor t1_venus": 0.3242902708540204,
1467
+ "phasor t1_mars": 0.3290977084927443,
1468
+ "phasor t1_jupiter": 0.325625749608434,
1469
+ "phasor t1_saturn": 0.3103995219787104,
1470
+ "phasor t1_uranus": 0.3026988063757884,
1471
+ "phasor t1_neptune": 0.27342864292667074,
1472
+ "phasor t1_pluto": 0.1693204979211192,
1473
+ "phasor t1_true_node": 0.3238937864875903,
1474
+ "phasor t1_true_south_node": 0.3238937864875903,
1475
+ "phasor t1_chiron": 0.24800936900458648,
1476
+ "phasor t1_mean_lilith": 0.33317133427559537,
1477
+ "phasor t2_sun": 0.33081512533270235,
1478
+ "phasor t2_moon": 0.3330154299128977,
1479
+ "phasor t2_mercury": 0.33268168107757395,
1480
+ "phasor t2_venus": 0.32430787687056273,
1481
+ "phasor t2_mars": 0.32904045066503285,
1482
+ "phasor t2_jupiter": 0.32564382827789706,
1483
+ "phasor t2_saturn": 0.31040909303901437,
1484
+ "phasor t2_uranus": 0.30359888483854314,
1485
+ "phasor t2_neptune": 0.2682459137720579,
1486
+ "phasor t2_pluto": 0.16930188752608363,
1487
+ "phasor t2_true_node": 0.3237443716017336,
1488
+ "phasor t2_true_south_node": 0.3237443716017336,
1489
+ "phasor t2_chiron": 0.2484748947432613,
1490
+ "phasor t2_mean_lilith": 0.3332973532362646,
1491
+ "phasor n1_sun": 0.32786877827397654,
1492
+ "phasor n1_moon": 0.33429292611448147,
1493
+ "phasor n1_mercury": 0.3297890371966691,
1494
+ "phasor n1_venus": 0.3288245413052308,
1495
+ "phasor n1_mars": 0.33231183771141154,
1496
+ "phasor n1_jupiter": 0.3248783189280211,
1497
+ "phasor n1_saturn": 0.2824750103881966,
1498
+ "phasor n1_uranus": 0.23154533044391584,
1499
+ "phasor n1_neptune": 0.19591623979767725,
1500
+ "phasor n1_pluto": 0.14734882858727283,
1501
+ "phasor n1_true_node": 0.3138572089430224,
1502
+ "phasor n1_true_south_node": 0.31323048668796544,
1503
+ "phasor n1_chiron": 0.22771029102999332,
1504
+ "phasor n1_mean_lilith": 0.3314897381035839,
1505
+ "phasor n2_sun": 0.3278222545409606,
1506
+ "phasor n2_moon": 0.3345346983970204,
1507
+ "phasor n2_mercury": 0.32972995085357526,
1508
+ "phasor n2_venus": 0.3288973065532147,
1509
+ "phasor n2_mars": 0.3323439698282343,
1510
+ "phasor n2_jupiter": 0.3254339847248451,
1511
+ "phasor n2_saturn": 0.28400734827679414,
1512
+ "phasor n2_uranus": 0.19652501546690862,
1513
+ "phasor n2_neptune": 0.16875782603165326,
1514
+ "phasor n2_pluto": 0.14734882858727283,
1515
+ "phasor n2_true_node": 0.31349320237855627,
1516
+ "phasor n2_true_south_node": 0.31299890703574945,
1517
+ "phasor n2_chiron": 0.22748277297351682,
1518
+ "phasor n2_mean_lilith": 0.33176019057591116,
1519
+ "phasor tn_sun": 0.0,
1520
+ "phasor tn_moon": 0.0,
1521
+ "phasor tn_mercury": 0.0,
1522
+ "phasor tn_venus": 0.0,
1523
+ "phasor tn_mars": 0.0,
1524
+ "phasor tn_jupiter": 0.0,
1525
+ "phasor tn_saturn": 0.0,
1526
+ "phasor tn_uranus": 0.0,
1527
+ "phasor tn_neptune": 0.0,
1528
+ "phasor tn_pluto": 0.0,
1529
+ "phasor tn_true_node": 0.0,
1530
+ "phasor tn_true_south_node": 0.0,
1531
+ "phasor tn_chiron": 0.0,
1532
+ "phasor tn_mean_lilith": 0.0,
1533
+ "SUM term a": 2.9444422390466514e-05,
1534
+ "SUM term t1": 0.24336062525610064,
1535
+ "SUM term t2": 0.2462514842620862,
1536
+ "SUM term n1": 0.23736013588090013,
1537
+ "SUM term n2": 0.2424009540164592,
1538
+ "SUM term tn": 4.539607074741629e-05,
1539
+ "SUM 3-term (a+t1+t2)": 0.01284377039357919,
1540
+ "SUM 6-term": 0.07483686789623792,
1541
+ "TRADITION aboriginal_australian": 0.0,
1542
+ "TRADITION african": 0.0,
1543
+ "TRADITION astrocartography": 0.0,
1544
+ "TRADITION babylonian_egyptian": 0.0,
1545
+ "TRADITION chinese": 0.0,
1546
+ "TRADITION east_asian_deep": 0.0,
1547
+ "TRADITION harmonics": 0.0,
1548
+ "TRADITION hellenistic": 0.0,
1549
+ "TRADITION houses": 0.0,
1550
+ "TRADITION indigenous_americas": 0.0,
1551
+ "TRADITION lunar_calendrical": 0.0,
1552
+ "TRADITION mesoamerican": 0.0,
1553
+ "TRADITION modern_western": 0.0,
1554
+ "TRADITION numerology": 0.0,
1555
+ "TRADITION persian_arabic": 0.0,
1556
+ "TRADITION polynesian": 0.0,
1557
+ "TRADITION tibetan_seasia": 0.0,
1558
+ "TRADITION uranian": 0.0,
1559
+ "TRADITION vedic_ashtakavarga": 0.0,
1560
+ "TRADITION vedic_core": 0.0,
1561
+ "TRADITION vedic_match": 0.0,
1562
+ "SIDEREAL vedic:D1 (lagna, grahas, houses, nakshatras)": 0.15156248085393392,
1563
+ "SIDEREAL vedic:vargas D2-D60": 0.2150530431589064,
1564
+ "SIDEREAL vedic:panchanga": 0.10344864892152227,
1565
+ "SIDEREAL vedic:ashtakavarga": 0.13629927273200806,
1566
+ "SIDEREAL vedic:vimsottari at the start": 0.0937353616159842,
1567
+ "SIDEREAL vedic:doshas": 0.08363418157228915,
1568
+ "SIDEREAL vedic:shad bala": 0.16333781351217339,
1569
+ "SIDEREAL vedic:pair (ashtakoota, transposition, dasa)": 0.07240497671334437,
1570
+ "SIDEREAL vedic:vivaha muhurta (the wedding day)": 0.014325200530279936,
1571
+ "SIDEREAL zwds:astrolabe (soul, body, class)": 0.06194176511506754,
1572
+ "SIDEREAL zwds:palaces": 0.15344321435339425,
1573
+ "SIDEREAL zwds:major stars": 0.13931469167366262,
1574
+ "SIDEREAL zwds:minor stars": 0.10580982418605729,
1575
+ "SIDEREAL zwds:pair (spouse x life palace, branches)": 0.007118689298839858,
1576
+ "CALENDAR + NUMEROLOGY (plain + date fine structure)": 0.0,
1577
+ "CALENDAR + NUMEROLOGY alone (no ages)": 0.0,
1578
+ "HARMONIC 2 synastry sum (14 bodies)": 3.743022373871148e-05,
1579
+ "HARMONIC 3 synastry sum (14 bodies)": 3.814293504183468e-05,
1580
+ "HARMONIC 4 synastry sum (14 bodies)": 3.5403719310554784e-05,
1581
+ "HARMONIC 6 synastry sum (14 bodies)": 4.8000676921173996e-05,
1582
+ "FAST synastry sum (Sun..Mars)": 3.1505274351303114e-05,
1583
+ "PROGRESSED synastry + progressed-to-start (20 phasors)": 0.1732669326246835,
1584
+ "PROGRESSED synastry only (10 phasors)": 0.22536880011782254,
1585
+ "PHYSICS \u03a6/T only (entropic gravity, no ages)": 0.0,
1586
+ "PHYSICS all (\u03a6, \u03c4, \u03a6/T, T, day length, Sun altitude; no ages)": 0.0,
1587
+ "PLAIN + PHYSICS": 0.0,
1588
+ "PLAIN + \u03a6/T": 0.0,
1589
+ "CALENDAR jalali (no ages)": 0.0,
1590
+ "CALENDAR islamic (no ages)": 0.0,
1591
+ "CALENDAR hebrew (no ages)": 0.0,
1592
+ "CALENDAR julian (no ages)": 0.007681104385835596,
1593
+ "CALENDAR chinese_sexagenary (no ages)": 0.0,
1594
+ "PLAIN + ALL CALENDARS": 0.0008869134019959405,
1595
+ "ZODIAC TROPICAL signs (no ages)": 0.025303698522569217,
1596
+ "ZODIAC FAGAN_BRADLEY signs (no ages)": 0.02594254545666251,
1597
+ "ZODIAC KRISHNAMURTI signs (no ages)": 0.023651848394009408,
1598
+ "ZODIAC RAMAN signs (no ages)": 0.025842224900585575,
1599
+ "ZODIAC YUKTESHWAR signs (no ages)": 0.02503317735517661,
1600
+ "PLAIN + ALL ZODIAC SIGN SYSTEMS": 0.015690983354490127
1601
+ },
1602
+ "bagged_stack_all": {
1603
+ "grid": [
1604
+ [
1605
+ 1867.0,
1606
+ 0.01,
1607
+ 3.0
1608
+ ],
1609
+ [
1610
+ 1867.0,
1611
+ 0.001,
1612
+ 3.0
1613
+ ],
1614
+ [
1615
+ 1867.0,
1616
+ 0.003,
1617
+ 1.0
1618
+ ],
1619
+ [
1620
+ 1884.0,
1621
+ 0.01,
1622
+ 3.0
1623
+ ],
1624
+ [
1625
+ 1823.0,
1626
+ 0.01,
1627
+ 3.0
1628
+ ],
1629
+ [
1630
+ 1823.0,
1631
+ 0.003,
1632
+ 0.0
1633
+ ]
1634
+ ],
1635
+ "held": 0.6366860664185042,
1636
+ "age_cell": 0.5801102580787502
1637
+ }
1638
+ }
calendar_members_iv.py ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ calendar_members_iv.py — the world's CALENDARS as stack members (operator 2026-08-20: "different western vs eastern
3
+ ephemeries or different calendars"). Every date in the files is proleptic Gregorian; here each birth and the start
4
+ are re-expressed in five other calendars and the fine structure of each becomes features:
5
+ JALALI (Persian solar) month, day, |Δmonth| of the pair, start month/day, Nowruz proximity (day-of-year)
6
+ ISLAMIC (Hijri lunar) month, day, pair |Δmonth| (wraps at 12), start month — a pure lunar count, so it drifts
7
+ against the seasons: astrology-free lunar-phase information at yearly precision
8
+ HEBREW (lunisolar) month, day, pair |Δmonth|, start month
9
+ JULIAN (old style) the Gregorian−Julian day gap at the date, and whether the date crosses a month boundary
10
+ when re-expressed (a data-provenance signal for pre-1918 eastern records)
11
+ CHINESE sexagenary year stem, branch, the pair's branch difference mod 12 (the six harms/combines), the
12
+ start year's animal — arithmetic on the year, no ephemeris
13
+ All order-free for the pair (max/min/|Δ|). One LightGBM member per calendar (no ages), one PLAIN+ALL-CALENDARS
14
+ member, forward-chained OOF. Writes AQ_OUT/calendar_members.npz.
15
+ """
16
+ import json
17
+ import os
18
+ import sys
19
+ import time
20
+
21
+ import numpy as np
22
+ import pandas as pd
23
+ from convertdate import hebrew, islamic, julian, persian
24
+
25
+ HERE = os.path.dirname(os.path.abspath(__file__)); sys.path.insert(0, HERE)
26
+ from artamodel import auc # noqa: E402
27
+
28
+ SRC = os.environ.get("AQ_SRC", "/tmp/aq4"); PH = os.environ.get("AQ_PHASES", "/tmp/aq4feat/phases.npz"); OUT = os.environ.get("AQ_OUT", "/tmp/aq4sub")
29
+ QS = (0.40, 0.55, 0.70, 0.85, 1.0); T0 = time.time(); log = lambda *a: print(f"[{time.time()-T0:6.0f}s]", *a, flush=True)
30
+ _C = {}
31
+
32
+
33
+ def conv(d):
34
+ """(jalali_m, jalali_d, islamic_m, islamic_d, hebrew_m, hebrew_d, julian_gap_days, stem, branch) for a Gregorian date string, NaNs at reduced precision."""
35
+ if d in _C:
36
+ return _C[d]
37
+ nan9 = (np.nan,) * 9
38
+ if not isinstance(d, str) or d == "0000-00-00":
39
+ _C[d] = nan9; return nan9
40
+ y = int(d[:4]); m = int(d[5:7]) or 0; dd = int(d[8:10]) or 0
41
+ stem = (y - 4) % 10; branch = (y - 4) % 12
42
+ if m == 0 or dd == 0:
43
+ out = (np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, float(stem), float(branch))
44
+ _C[d] = out; return out
45
+ try:
46
+ jm = persian.from_gregorian(y, m, dd); im = islamic.from_gregorian(y, m, dd); hm = hebrew.from_gregorian(y, m, dd)
47
+ jy, jmn, jdd = julian.from_gregorian(y, m, dd)
48
+ import datetime as dt
49
+ gap = (dt.date(y, m, dd) - dt.date(y, m, dd)).days # placeholder; the real gap:
50
+ # Gregorian-Julian gap in days = JD(greg) - JD(julian date literal) -- compute via ordinal difference
51
+ gap = (dt.date(y, m, dd).toordinal() - dt.date(jy, jmn, min(jdd, 28)).toordinal()) if 1 <= jmn <= 12 else np.nan
52
+ out = (float(jm[1]), float(jm[2]), float(im[1]), float(im[2]), float(hm[1]), float(hm[2]), float(gap), float(stem), float(branch))
53
+ except Exception:
54
+ out = (np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, float(stem), float(branch))
55
+ _C[d] = out; return out
56
+
57
+
58
+ def build(df):
59
+ A = np.array([conv(d) for d in df.dob_a]); B = np.array([conv(d) for d in df.dob_b]); S = np.array([conv(d) for d in df.start])
60
+ def cyc(a, b, mod):
61
+ d = np.abs(a - b); return np.fmin(d, mod - d)
62
+ blocks = {}
63
+ for name, (mi, di, mod) in {"jalali": (0, 1, 12), "islamic": (2, 3, 12), "hebrew": (4, 5, 13)}.items():
64
+ blocks[name] = np.column_stack([np.fmax(A[:, mi], B[:, mi]), np.fmin(A[:, mi], B[:, mi]), cyc(A[:, mi], B[:, mi], mod),
65
+ np.fmax(A[:, di], B[:, di]), np.fmin(A[:, di], B[:, di]), S[:, mi], S[:, di],
66
+ (A[:, mi] == B[:, mi]).astype(float)])
67
+ blocks["julian"] = np.column_stack([A[:, 6], B[:, 6], S[:, 6], np.abs(A[:, 6] - B[:, 6])])
68
+ blocks["chinese_sexagenary"] = np.column_stack([np.fmax(A[:, 7], B[:, 7]), np.fmin(A[:, 7], B[:, 7]), cyc(A[:, 8], B[:, 8], 12),
69
+ (cyc(A[:, 8], B[:, 8], 12) == 6).astype(float), ((A[:, 8] + B[:, 8]) % 12 == 1).astype(float),
70
+ S[:, 8], cyc(A[:, 7], B[:, 7], 10)])
71
+ return blocks
72
+
73
+
74
+ def main():
75
+ import lightgbm as lgb
76
+ Z = np.load(PH, allow_pickle=True); y = Z["y_train"].astype(np.int64); later = Z["yr_train"].astype(int).max(1); cuts = [np.quantile(later, q) for q in QS]
77
+ ptr, pte, pn = Z["plain_train"], Z["plain_test"], list(Z["plain_names"]); s1, s2 = list(Z["slots"])
78
+ tr = pd.read_csv(f"{SRC}/train.csv", dtype=str); te = pd.read_csv(f"{SRC}/test.csv", dtype=str)
79
+ btr = build(tr); bte = build(te); log(f"calendars converted ({len(_C):,} distinct dates)")
80
+ ia, ib, iy = pn.index(f"age_{s1}_at_start"), pn.index(f"age_{s2}_at_start"), pn.index("start_year")
81
+ plain = lambda p: np.column_stack([np.fmax(p[:, ia], p[:, ib]), np.fmin(p[:, ia], p[:, ib]), np.abs(p[:, ia] - p[:, ib]), p[:, iy]])
82
+ prm = dict(n_estimators=300, learning_rate=0.05, num_leaves=15, min_child_samples=200, colsample_bytree=0.7, subsample=0.8, subsample_freq=1, reg_lambda=20.0, verbose=-1)
83
+ members_tr, members_te, names, meta = [], [], [], []
84
+ def member(Xa, Xb, name):
85
+ s_tr = np.full(len(y), np.nan)
86
+ for k in range(1, len(cuts)):
87
+ lo = cuts[k - 1]; blk = (later > lo) & ((later <= cuts[k]) if k < len(cuts) - 1 else True); c = lgb.LGBMClassifier(random_state=0, **prm); c.fit(Xa[later <= lo], y[later <= lo]); s_tr[blk] = c.predict_proba(Xa[blk])[:, 1]
88
+ c = lgb.LGBMClassifier(random_state=0, **prm); c.fit(Xa, y); s_te = c.predict_proba(Xb)[:, 1]
89
+ f = np.isfinite(s_tr) & (later > cuts[0]); o = auc(y[f], s_tr[f]); members_tr.append(s_tr); members_te.append(s_te); names.append(name); meta.append({"member": name, "forward_oof": o})
90
+ log(f" {name:<44} {Xa.shape[1]:>3} features fwd-OOF {o:.4f}")
91
+ for k in btr:
92
+ member(btr[k], bte[k], f"CALENDAR {k} (no ages)")
93
+ allc_tr = np.column_stack([btr[k] for k in btr]); allc_te = np.column_stack([bte[k] for k in bte])
94
+ member(np.column_stack([plain(ptr), allc_tr]), np.column_stack([plain(pte), allc_te]), "PLAIN + ALL CALENDARS")
95
+ np.savez_compressed(os.path.join(OUT, "calendar_members.npz"), S_train=np.column_stack(members_tr), S_test=np.column_stack(members_te), names=np.array(names), meta=json.dumps(meta))
96
+ log(f"wrote {OUT}/calendar_members.npz")
97
+
98
+
99
+ if __name__ == "__main__":
100
+ main()
geo_lgbm_0.json CHANGED
The diff for this file is too large to render. See raw diff
 
geo_lgbm_0.txt CHANGED
The diff for this file is too large to render. See raw diff
 
geo_lgbm_1.json CHANGED
The diff for this file is too large to render. See raw diff
 
geo_lgbm_1.txt CHANGED
The diff for this file is too large to render. See raw diff
 
geo_lgbm_2.json CHANGED
The diff for this file is too large to render. See raw diff
 
geo_lgbm_2.txt CHANGED
The diff for this file is too large to render. See raw diff
 
physics_members_iv.py ADDED
@@ -0,0 +1,163 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ physics_members_iv.py — "entropic gravity" and other PHYSICAL features of the three instants, as stack members.
3
+
4
+ Operator 2026-08-19: "think of creative ways of feature engineering … explore entropic gravity effects with Vi/T
5
+ where Vi is the gravitational potential of external bodies." From the ephemeris (sweshim: geocentric distance of
6
+ every body at the instant) and the birthplace:
7
+ Φᵢ = G Mᵢ / rᵢ for Sun, Moon, Mercury … Pluto at each birth (09:00 local mean time) and at the start (12:00 UT)
8
+ τᵢ = Mᵢ / rᵢ³ the tidal term of each body
9
+ T the temperature AT THE PLACE OF BIRTH: NASA POWER's 2001–2020 monthly T2M normal of the
10
+ birthplace's grid cell for the birth month (annual mean when the month is unknown), kelvin — plus
11
+ the cell's elevation; a latitude+season climatology only where POWER has no value (flagged)
12
+ Φᵢ/T, ΣΦ/T, Στ the entropic-gravity quantities; plus day length and the Sun's altitude at 09:00 (insolation)
13
+ For the pair: the sum and the absolute difference of each partner quantity (even under the swap). One member = a
14
+ LightGBM on the lot, forward-chained OOF; a second member = the Φᵢ/T set alone. Writes AQ_OUT/physics_members.npz.
15
+ """
16
+ import datetime as dt
17
+ import json
18
+ import math
19
+ import os
20
+ import sys
21
+ import time
22
+
23
+ import numpy as np
24
+ import pandas as pd
25
+
26
+ HERE = os.path.dirname(os.path.abspath(__file__)); ROOT = os.path.dirname(os.path.dirname(HERE)); sys.path.insert(0, HERE); sys.path.insert(0, os.path.join(ROOT, "web"))
27
+ from artamodel import auc # noqa: E402
28
+
29
+ SRC = os.environ.get("AQ_SRC", "/tmp/aq4"); PH = os.environ.get("AQ_PHASES", "/tmp/aq4feat/phases.npz"); OUT = os.environ.get("AQ_OUT", "/tmp/aq4sub")
30
+ QS = (0.40, 0.55, 0.70, 0.85, 1.0); T0 = time.time(); log = lambda *a: print(f"[{time.time()-T0:6.0f}s]", *a, flush=True)
31
+ # masses in solar masses (IAU 2015 nominal values), geocentric distances come in AU
32
+ MASS = {"sun": 1.0, "moon": 3.694e-8, "mercury": 1.660e-7, "venus": 2.448e-6, "mars": 3.227e-7, "jupiter": 9.546e-4, "saturn": 2.858e-4, "uranus": 4.366e-5, "neptune": 5.151e-5, "pluto": 6.6e-9}
33
+ BODIES = list(MASS)
34
+
35
+
36
+ _T2M = None
37
+ MONTHS = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"]
38
+
39
+
40
+ def t_at_pob(lat, lon, month):
41
+ """T AT THE PLACE OF BIRTH (operator: "don't forget to get T at the POB"): the NASA POWER 2001–2020 monthly
42
+ T2M normal of the birthplace's 0.5° grid cell for the birth month (the annual mean when the month is unknown),
43
+ in kelvin, with the cell's elevation; (nan, nan) when the service has no value — the caller falls back to the
44
+ latitude climatology and flags it."""
45
+ global _T2M
46
+ if _T2M is None:
47
+ path = os.environ.get("AQ_T2M", "/tmp/aq4sub/t2m_normals.json"); _T2M = json.load(open(path)) if os.path.exists(path) else {}
48
+ if lat != lat or lon != lon:
49
+ return float("nan"), float("nan")
50
+ rec = _T2M.get(f"{round(lat * 2) / 2},{round(lon * 2) / 2}")
51
+ if not rec:
52
+ return float("nan"), float("nan")
53
+ v = rec.get(MONTHS[month - 1]) if month else rec.get("ANN")
54
+ if v is None or v == -999.0:
55
+ v = rec.get("ANN")
56
+ return (float(v) + 273.15 if v is not None and v != -999.0 else float("nan")), (float(rec["elev"]) if rec.get("elev") is not None else float("nan"))
57
+
58
+
59
+ def temperature_proxy(lat, doy):
60
+ """Kelvin at the surface, a smooth climatology: 300 K at the equator falling with latitude, a seasonal swing
61
+ that grows with latitude and flips hemisphere (peak ~ 20 July north, ~ 20 January south). A proxy, not a record."""
62
+ lat = np.asarray(lat, float); doy = np.asarray(doy, float)
63
+ base = 300.0 - 0.45 * np.abs(lat) - 0.003 * lat ** 2
64
+ season = (6.0 + 0.25 * np.abs(lat)) * np.cos(2 * np.pi * (doy - 201.0) / 365.25) * np.sign(lat + 1e-9)
65
+ return base + season
66
+
67
+
68
+ def instant_features(SW, codes, y, m, d, hour_ut, lat=None, lon=None):
69
+ """Φᵢ, τᵢ for every body at the instant; day length and the Sun's altitude when a place is given."""
70
+ jd = SW.julday(y, m, d, hour_ut); phi = []; tau = []
71
+ for b in BODIES:
72
+ try:
73
+ lon_deg, lat_deg, dist = SW.calc_ut(jd, codes[b])[0][:3]
74
+ except Exception:
75
+ phi.append(np.nan); tau.append(np.nan); continue
76
+ r = max(dist, 1e-6); phi.append(MASS[b] / r); tau.append(MASS[b] / r ** 3)
77
+ extra = [np.nan, np.nan]
78
+ if lat is not None and not (isinstance(lat, float) and math.isnan(lat)):
79
+ try:
80
+ sun_lon = SW.calc_ut(jd, codes["sun"])[0][0]; eps = 23.439 - 0.0000004 * (jd - 2451545.0)
81
+ decl = math.degrees(math.asin(math.sin(math.radians(eps)) * math.sin(math.radians(sun_lon))))
82
+ cosH = -math.tan(math.radians(lat)) * math.tan(math.radians(decl)); cosH = max(-1.0, min(1.0, cosH))
83
+ daylen = 2 * math.degrees(math.acos(cosH)) / 15.0
84
+ # the Sun's altitude at 09:00 local mean time: hour angle −45°
85
+ alt = math.degrees(math.asin(math.sin(math.radians(lat)) * math.sin(math.radians(decl)) + math.cos(math.radians(lat)) * math.cos(math.radians(decl)) * math.cos(math.radians(-45.0))))
86
+ extra = [daylen, alt]
87
+ except Exception:
88
+ pass
89
+ return phi, tau, extra
90
+
91
+
92
+ def build(df, SW, codes, cache):
93
+ n = len(df); F = {k: np.full((n, len(BODIES)), np.nan) for k in ("phi_a", "phi_b", "phi_s", "tau_a", "tau_b", "tau_s")}
94
+ Ta = np.full(n, np.nan); Tb = np.full(n, np.nan); day_a = np.full((n, 2), np.nan); day_b = np.full((n, 2), np.nan)
95
+ El_a = np.full(n, np.nan); El_b = np.full(n, np.nan); Tproxy_a = np.zeros(n); Tproxy_b = np.zeros(n)
96
+ for i, r in enumerate(df.itertuples(index=False)):
97
+ for slot, key_phi, key_tau, Tarr, darr, Elarr, Tpx in (("a", "phi_a", "tau_a", Ta, day_a, El_a, Tproxy_a), ("b", "phi_b", "tau_b", Tb, day_b, El_b, Tproxy_b)):
98
+ d = getattr(r, f"dob_{slot}"); lat = getattr(r, f"lat_{slot}"); lon = getattr(r, f"lon_{slot}")
99
+ if not isinstance(d, str) or d == "0000-00-00" or d.endswith("-00"):
100
+ continue
101
+ y, m, dd = int(d[:4]), int(d[5:7]), int(d[8:10]); lat = float(lat) if lat == lat else float("nan"); lon = float(lon) if lon == lon else float("nan")
102
+ hour_ut = 9.0 - (lon / 15.0 if lon == lon else 0.0); key = (d, round(hour_ut, 1), round(lat, 1) if lat == lat else None)
103
+ if key not in cache:
104
+ cache[key] = instant_features(SW, codes, y, m, dd, hour_ut, lat if lat == lat else None, lon)
105
+ phi, tau, extra = cache[key]; F[key_phi][i] = phi; F[key_tau][i] = tau; darr[i] = extra
106
+ if lat == lat:
107
+ tk, el = t_at_pob(lat, lon, m); Elarr[i] = el
108
+ if tk == tk:
109
+ Tarr[i] = tk
110
+ else:
111
+ doy = dt.date(y, m, dd).timetuple().tm_yday; Tarr[i] = temperature_proxy(lat, doy); Tpx[i] = 1.0
112
+ s = r.start
113
+ if isinstance(s, str) and not s.endswith("-00"):
114
+ y, m, dd = int(s[:4]), int(s[5:7]), int(s[8:10]); key = (s, 12.0, None)
115
+ if key not in cache:
116
+ cache[key] = instant_features(SW, codes, y, m, dd, 12.0)
117
+ F["phi_s"][i], F["tau_s"][i] = cache[key][0], cache[key][1]
118
+ # the features: per partner Φ/T, pair sums and |diffs| (even), start-sky Φ, τ, day lengths, altitudes
119
+ phiT_a = F["phi_a"] / Ta[:, None]; phiT_b = F["phi_b"] / Tb[:, None]
120
+ X = np.column_stack([F["phi_a"] + F["phi_b"], np.abs(F["phi_a"] - F["phi_b"]), F["tau_a"] + F["tau_b"], np.abs(F["tau_a"] - F["tau_b"]),
121
+ phiT_a + phiT_b, np.abs(phiT_a - phiT_b), np.nansum(phiT_a, 1) + np.nansum(phiT_b, 1), np.abs(np.nansum(phiT_a, 1) - np.nansum(phiT_b, 1)),
122
+ np.fmax(Ta, Tb), np.fmin(Ta, Tb), F["phi_s"], F["tau_s"], np.fmax(day_a[:, 0], day_b[:, 0]), np.fmin(day_a[:, 0], day_b[:, 0]), np.fmax(day_a[:, 1], day_b[:, 1]), np.fmin(day_a[:, 1], day_b[:, 1]),
123
+ np.fmax(El_a, El_b), np.fmin(El_a, El_b), Tproxy_a + Tproxy_b])
124
+ names = ([f"phi_sum_{b}" for b in BODIES] + [f"phi_absdiff_{b}" for b in BODIES] + [f"tau_sum_{b}" for b in BODIES] + [f"tau_absdiff_{b}" for b in BODIES]
125
+ + [f"phiT_sum_{b}" for b in BODIES] + [f"phiT_absdiff_{b}" for b in BODIES] + ["phiT_total_sum", "phiT_total_absdiff", "T_max", "T_min"] + [f"phi_start_{b}" for b in BODIES] + [f"tau_start_{b}" for b in BODIES]
126
+ + ["daylen_max", "daylen_min", "sunalt_max", "sunalt_min", "elev_max", "elev_min", "n_T_proxy"])
127
+ return X.astype(np.float32), names
128
+
129
+
130
+ def main():
131
+ import lightgbm as lgb
132
+ import sweshim as SW
133
+ SW.load(os.path.join(ROOT, "web", "ephem4.bin"), os.path.join(ROOT, "web", "tables.json"))
134
+ codes = {"sun": SW.SUN, "moon": SW.MOON, "mercury": SW.MERCURY, "venus": SW.VENUS, "mars": SW.MARS, "jupiter": SW.JUPITER, "saturn": SW.SATURN, "uranus": SW.URANUS, "neptune": SW.NEPTUNE, "pluto": SW.PLUTO}
135
+ Z = np.load(PH, allow_pickle=True); y = Z["y_train"].astype(np.int64); later = Z["yr_train"].astype(int).max(1); cuts = [np.quantile(later, q) for q in QS]
136
+ ptr, pte, pn = Z["plain_train"], Z["plain_test"], list(Z["plain_names"]); s1, s2 = list(Z["slots"])
137
+ tr = pd.read_csv(f"{SRC}/train.csv", dtype=str); te = pd.read_csv(f"{SRC}/test.csv", dtype=str)
138
+ for df in (tr, te):
139
+ for c in ("lat_a", "lon_a", "lat_b", "lon_b"):
140
+ df[c] = pd.to_numeric(df[c], errors="coerce")
141
+ cache = {}; Xtr, names = build(tr, SW, codes, cache); log(f"train physics {Xtr.shape} ({len(cache):,} instants)"); Xte, _ = build(te, SW, codes, cache); log(f"test physics {Xte.shape}")
142
+ ia, ib, iy = pn.index(f"age_{s1}_at_start"), pn.index(f"age_{s2}_at_start"), pn.index("start_year")
143
+ plain = lambda p: np.column_stack([np.fmax(p[:, ia], p[:, ib]), np.fmin(p[:, ia], p[:, ib]), np.abs(p[:, ia] - p[:, ib]), p[:, iy]])
144
+ prm = dict(n_estimators=300, learning_rate=0.05, num_leaves=15, min_child_samples=200, colsample_bytree=0.6, subsample=0.8, subsample_freq=1, reg_lambda=20.0, verbose=-1)
145
+ members_tr, members_te, mnames, meta = [], [], [], []
146
+ def member(Xa, Xb, name):
147
+ s_tr = np.full(len(y), np.nan)
148
+ for k in range(1, len(cuts)):
149
+ lo = cuts[k - 1]; blk = (later > lo) & ((later <= cuts[k]) if k < len(cuts) - 1 else True); c = lgb.LGBMClassifier(random_state=0, **prm); c.fit(Xa[later <= lo], y[later <= lo]); s_tr[blk] = c.predict_proba(Xa[blk])[:, 1]
150
+ c = lgb.LGBMClassifier(random_state=0, **prm); c.fit(Xa, y); s_te = c.predict_proba(Xb)[:, 1]
151
+ f = np.isfinite(s_tr) & (later > cuts[0]); o = auc(y[f], s_tr[f]); members_tr.append(s_tr); members_te.append(s_te); mnames.append(name); meta.append({"member": name, "forward_oof": o, "n_features": int(Xa.shape[1])})
152
+ log(f" {name:<46} {Xa.shape[1]:>3} features fwd-OOF {o:.4f}")
153
+ phiT = [i for i, n in enumerate(names) if n.startswith("phiT_")]
154
+ member(Xtr[:, phiT], Xte[:, phiT], "PHYSICS Φ/T only (entropic gravity, no ages)")
155
+ member(Xtr, Xte, "PHYSICS all (Φ, τ, Φ/T, T, day length, Sun altitude; no ages)")
156
+ member(np.column_stack([plain(ptr), Xtr]), np.column_stack([plain(pte), Xte]), "PLAIN + PHYSICS")
157
+ member(np.column_stack([plain(ptr), Xtr[:, phiT]]), np.column_stack([plain(pte), Xte[:, phiT]]), "PLAIN + Φ/T")
158
+ np.savez_compressed(os.path.join(OUT, "physics_members.npz"), S_train=np.column_stack(members_tr), S_test=np.column_stack(members_te), names=np.array(mnames), meta=json.dumps(meta), feature_names=np.array(names))
159
+ log(f"wrote {OUT}/physics_members.npz")
160
+
161
+
162
+ if __name__ == "__main__":
163
+ main()
robustness_audit.json CHANGED
@@ -1,24 +1,24 @@
1
  {
2
- "clean_auc": 0.7171690799911635,
3
  "symmetry_max_abs_diff": 0.0,
4
  "birthplaces \u00b10.5\u00b0": {
5
- "mean_abs_dp": 0.004690631825491763,
6
- "auc": 0.7143517017595704
7
  },
8
  "birthplaces \u00b12\u00b0": {
9
- "mean_abs_dp": 0.014921327591220633,
10
- "auc": 0.7095202710650665
11
  },
12
  "birth dates \u00b11 day": {
13
- "mean_abs_dp": 2.8881377048944913e-05,
14
- "auc": 0.7171805560735731
15
  },
16
  "birth dates \u00b17 days": {
17
- "mean_abs_dp": 0.0001771272949104829,
18
- "auc": 0.7170858783936928
19
  },
20
  "birth hour anywhere": {
21
- "mean_abs_dp": 9.283346337892138e-06,
22
- "auc": 0.7171834250941755
23
  }
24
  }
 
1
  {
2
+ "clean_auc": 0.72178778918975,
3
  "symmetry_max_abs_diff": 0.0,
4
  "birthplaces \u00b10.5\u00b0": {
5
+ "mean_abs_dp": 0.004649538574536345,
6
+ "auc": 0.7186884012864405
7
  },
8
  "birthplaces \u00b12\u00b0": {
9
+ "mean_abs_dp": 0.015669033728156517,
10
+ "auc": 0.7161985164436144
11
  },
12
  "birth dates \u00b11 day": {
13
+ "mean_abs_dp": 5.912262110422381e-05,
14
+ "auc": 0.7216451395372965
15
  },
16
  "birth dates \u00b17 days": {
17
+ "mean_abs_dp": 0.00021259295866501407,
18
+ "auc": 0.721541394335512
19
  },
20
  "birth hour anywhere": {
21
+ "mean_abs_dp": 9.183836105733368e-06,
22
+ "auc": 0.72178778918975
23
  }
24
  }
stack_iv_deployed.json CHANGED
@@ -24,7 +24,7 @@
24
  "lon_max",
25
  "lon_min",
26
  "same_place",
27
- "start_is_jan1",
28
  "n_missing_places",
29
  "start_weekday",
30
  "start_month"
@@ -61,67 +61,67 @@
61
  "stage": 3,
62
  "phasor": 22,
63
  "step": 0.4,
64
- "alpha": 0.4772890407464341,
65
- "c": -0.24435517906829834,
66
- "w_re": 0.49816339813880034,
67
- "w_im": -0.06628727704385114,
68
- "b_re": 0.4920847669878105,
69
- "b_im": -0.4043385699859723
70
  },
71
  {
72
  "stage": 4,
73
  "phasor": 36,
74
  "step": 0.4,
75
- "alpha": 0.4121201205056047,
76
- "c": -0.22911907658681685,
77
- "w_re": -0.4990958449581369,
78
- "w_im": 0.04409056714697404,
79
- "b_re": -0.552262102086733,
80
- "b_im": 0.38921839858489915
81
  },
82
  {
83
  "stage": 5,
84
  "phasor": 7,
85
  "step": 0.4,
86
- "alpha": 0.2891143341130896,
87
- "c": -0.23242638188558676,
88
- "w_re": 0.29176287067569107,
89
- "w_im": 0.4353249731528996,
90
- "b_re": 0.5499183154598283,
91
- "b_im": 0.17856648674940595
92
  },
93
  {
94
  "stage": 6,
95
- "phasor": 36,
96
  "step": 0.4,
97
- "alpha": -0.30350135615690277,
98
- "c": 0.1719921813087553,
99
- "w_re": 0.2898425417803235,
100
- "w_im": -0.6250770077916671,
101
- "b_re": -0.5147192423447787,
102
- "b_im": 0.6150611274518173
103
  },
104
  {
105
  "stage": 7,
106
- "phasor": 22,
107
  "step": 0.4,
108
- "alpha": 0.35284123130265743,
109
- "c": -0.20570391043323596,
110
- "w_re": 0.08529216192335105,
111
- "w_im": 0.4735197468892639,
112
- "b_re": 0.44026506888173583,
113
- "b_im": 0.5399124753716616
114
  },
115
  {
116
  "stage": 8,
117
  "phasor": 7,
118
  "step": 0.4,
119
- "alpha": -0.41087990743918523,
120
- "c": 0.07256860068983159,
121
- "w_re": 0.3823720953371966,
122
- "w_im": -0.2417660418214181,
123
- "b_re": -0.44376920363750716,
124
- "b_im": 0.32639335063421915
125
  }
126
  ],
127
  "inner_auc": null,
@@ -231,23 +231,23 @@
231
  "stage": 2,
232
  "phasor": 22,
233
  "step": 0.4,
234
- "alpha": -0.5218475053040909,
235
- "c": 0.20654377501331828,
236
- "w_re": 0.5737368348201293,
237
- "w_im": 0.2613228622132786,
238
- "b_re": -0.4995866787833157,
239
- "b_im": -0.4573768258447395
240
  },
241
  {
242
  "stage": 3,
243
  "phasor": 36,
244
  "step": 0.4,
245
- "alpha": -0.5532747031581059,
246
- "c": 0.1917986098386808,
247
- "w_re": -0.6108002894371353,
248
- "w_im": -0.04549416976617552,
249
- "b_re": 0.5772025627532236,
250
- "b_im": 0.24881085975244113
251
  }
252
  ],
253
  "inner_auc": null,
@@ -554,613 +554,613 @@
554
  1.0
555
  ],
556
  "GEO": [
557
- 0.007230118383537505,
558
- 0.010556200685467186,
559
- 0.017565822664219376,
560
- 0.02104963481927567,
561
- 0.025821574976098886,
562
- 0.03829478198750062,
563
- 0.05174491978233718,
564
- 0.06591403787501797,
565
- 0.07920045366453221,
566
- 0.09420389022267457,
567
- 0.10913337709500776,
568
- 0.12209806371594485,
569
- 0.13850618922087318,
570
- 0.15208107982514885,
571
- 0.1634188042713012,
572
- 0.17471455399698818,
573
- 0.18466676398231444,
574
- 0.1979540370278402,
575
- 0.20654468596416642,
576
- 0.2134558265938659,
577
- 0.2215816420505973,
578
- 0.22974627448466647,
579
- 0.2364765644904154,
580
- 0.24391551382243046,
581
- 0.25003829218168394,
582
- 0.2572600517640495,
583
- 0.26193051426481234,
584
- 0.26748923711233513,
585
- 0.27258846143019766,
586
- 0.2771194435865134,
587
- 0.28131143659210955,
588
- 0.2852804225674934,
589
- 0.2878953481999496,
590
- 0.2912392732609023,
591
- 0.2948667059588204,
592
- 0.29868956527606333,
593
- 0.30235821504370053,
594
- 0.3054576675289054,
595
- 0.3088008310965889,
596
- 0.311360472766341,
597
- 0.31393640233061704,
598
- 0.317013596510426,
599
- 0.31991948002374454,
600
- 0.3230360443615657,
601
- 0.326182729704221,
602
- 0.3292698613047133,
603
- 0.33159782126035525,
604
- 0.3335991782743359,
605
- 0.3363441905746489,
606
- 0.33908323628143383,
607
- 0.34146702096319215,
608
- 0.34349997075946037,
609
- 0.34588994500790693,
610
- 0.348783003312088,
611
- 0.3514132693758017,
612
- 0.3538976997024303,
613
- 0.3560570276666884,
614
- 0.35798919730603146,
615
- 0.3601933066403858,
616
- 0.3621795523648526,
617
- 0.36448301326657995,
618
- 0.3666713463466634,
619
- 0.36955526079204987,
620
- 0.3724496704461292,
621
- 0.3749158064764914,
622
- 0.3772700018997619,
623
- 0.3794544911394793,
624
- 0.3820609574638862,
625
- 0.3848053085883099,
626
- 0.38648396726061984,
627
- 0.3882106657124021,
628
- 0.3902142970387561,
629
- 0.39160026608879694,
630
- 0.3933667394265273,
631
- 0.3950476643301997,
632
- 0.3973801554995016,
633
- 0.39970810879682966,
634
- 0.4016006019024733,
635
- 0.40384689298914056,
636
- 0.40543061749925896,
637
- 0.4086562908011455,
638
- 0.4101692622573408,
639
- 0.4123503744345678,
640
- 0.41383679052627564,
641
- 0.415698485893254,
642
- 0.4175320225234493,
643
- 0.41988864155550515,
644
- 0.42212090874796004,
645
- 0.42366904120056015,
646
- 0.42584633052112925,
647
- 0.42738578627020213,
648
- 0.42881155665996745,
649
- 0.4303288435572353,
650
- 0.43216526408330136,
651
- 0.4339613937105857,
652
- 0.43575818387725135,
653
- 0.4372459628646258,
654
- 0.43910693375411525,
655
- 0.440532798838686,
656
- 0.442123166410972,
657
- 0.4438217550713137,
658
- 0.44555375436581984,
659
- 0.44715289306411093,
660
- 0.44876323892386394,
661
- 0.4501576597722348,
662
- 0.451785367736317,
663
- 0.45334132741991645,
664
- 0.4546524096890181,
665
- 0.45624674974632673,
666
- 0.4577631845050415,
667
- 0.4598181557705826,
668
- 0.4616185711048158,
669
- 0.46363445309455315,
670
- 0.46556556227980356,
671
- 0.4672934548282726,
672
- 0.4696580081141998,
673
- 0.47084997900690784,
674
- 0.4723424111592358,
675
- 0.47435274238328623,
676
- 0.4755440724294448,
677
- 0.4773188551858134,
678
- 0.47945293743859246,
679
- 0.4811357804887957,
680
- 0.48291503888478393,
681
- 0.484387881059166,
682
- 0.486074824958392,
683
- 0.48770703570250135,
684
- 0.48966410129804255,
685
- 0.4913170855200668,
686
- 0.4933932477933231,
687
- 0.49516138491846506,
688
- 0.4972330045861124,
689
- 0.49906291460509716,
690
- 0.5007655086361533,
691
- 0.5030842252324054,
692
- 0.5050815175884041,
693
- 0.5065607417573422,
694
- 0.5085064222873492,
695
- 0.5102815294304088,
696
- 0.512321959077772,
697
- 0.5142975538184706,
698
- 0.5165410175958152,
699
- 0.5183956180875133,
700
- 0.5202726367800259,
701
- 0.5221803697421145,
702
- 0.5236789985478061,
703
- 0.5256304338106647,
704
- 0.527830665847857,
705
- 0.5296364539364873,
706
- 0.5315032055263542,
707
- 0.5337843646798375,
708
- 0.5361069920597952,
709
- 0.5382687786458221,
710
- 0.5403237153786745,
711
- 0.5421594869228387,
712
- 0.544459304942329,
713
- 0.5463758445002054,
714
- 0.5489944981260504,
715
- 0.5508122786833157,
716
- 0.5530760257998605,
717
- 0.5553767516475098,
718
- 0.5578434316354789,
719
- 0.5599984945665767,
720
- 0.5618030410457727,
721
- 0.5644017347750588,
722
- 0.5663998255001212,
723
- 0.568437987016159,
724
- 0.5705215366794094,
725
- 0.5727152530581195,
726
- 0.5744238621684145,
727
- 0.5768860133474262,
728
- 0.5789499590918736,
729
- 0.581247152685715,
730
- 0.5835688385645801,
731
- 0.5863076182040586,
732
- 0.5893490010114807,
733
- 0.592136614701277,
734
- 0.594979451107088,
735
- 0.5975704282930902,
736
- 0.6002983141777288,
737
- 0.6030142494952305,
738
- 0.6060252302765441,
739
- 0.608562577852382,
740
- 0.6119230290726324,
741
- 0.6149417314265487,
742
- 0.617905384983401,
743
- 0.6205691693971652,
744
- 0.6237668833675657,
745
- 0.6270094319580245,
746
- 0.6296571648999301,
747
- 0.632957068052487,
748
- 0.6374048195788329,
749
- 0.6412894253648769,
750
- 0.6459369056852796,
751
- 0.6525255387643706,
752
- 0.6601164761366489,
753
- 0.6676910037731217,
754
- 0.675570578194336,
755
- 0.684791545935553,
756
- 0.7040109172904717,
757
- 0.8213361424833724
758
  ],
759
  "AM_GREEDY": [
760
- -1.2714530151731427,
761
- -0.9627983334340148,
762
- -0.9429004757839705,
763
- -0.9064275978309312,
764
- -0.8785025955940094,
765
- -0.8460545808803971,
766
- -0.8170525257662907,
767
- -0.7916938948555403,
768
- -0.7696706770664077,
769
- -0.749198440097565,
770
- -0.7333039442283817,
771
- -0.7149135361532215,
772
- -0.6967144809674427,
773
- -0.6841454900290647,
774
- -0.6697268076875376,
775
- -0.6536542235425351,
776
- -0.6390004144220012,
777
- -0.6268790743292479,
778
- -0.614730078821377,
779
- -0.604994670722963,
780
- -0.5948122721668974,
781
- -0.583781107294284,
782
- -0.5725309957606296,
783
- -0.5631549606576851,
784
- -0.5552506598657441,
785
- -0.5473999397803785,
786
- -0.53951777415264,
787
- -0.5302816254769537,
788
- -0.5235108798932501,
789
- -0.5163682101673079,
790
- -0.5096618270281743,
791
- -0.5029384450151955,
792
- -0.4970646209733358,
793
- -0.49017662930372535,
794
- -0.4842312174860726,
795
- -0.47637439617964594,
796
- -0.47039525763597667,
797
- -0.4641887499045319,
798
- -0.45840613054097096,
799
- -0.4510930373640227,
800
- -0.4466680713066252,
801
- -0.441121981597542,
802
- -0.43674389504271854,
803
- -0.43144532876155933,
804
- -0.4253546351389199,
805
- -0.42165834540483743,
806
- -0.4173665936476146,
807
- -0.4131735174951268,
808
- -0.4095516472458387,
809
- -0.4061073000511258,
810
- -0.40231459022782873,
811
- -0.3980848710918832,
812
- -0.3939278255960268,
813
- -0.3891530003907055,
814
- -0.38519856400600294,
815
- -0.38147524511917275,
816
- -0.37873817786550595,
817
- -0.37499733328755114,
818
- -0.3717351960997138,
819
- -0.36767078552255844,
820
- -0.36479052354067404,
821
- -0.361993503109884,
822
- -0.3582877834473908,
823
- -0.3545652247538035,
824
- -0.3520090905989835,
825
- -0.3493667690520933,
826
- -0.3465977069891953,
827
- -0.3438283719241542,
828
- -0.34121757513773526,
829
- -0.3383874408903541,
830
- -0.3357318893637542,
831
- -0.33312090664227306,
832
- -0.33077698708205416,
833
- -0.3284312539384777,
834
- -0.32552265592445656,
835
- -0.32269394797524237,
836
- -0.3200784133447255,
837
- -0.31785767332344966,
838
- -0.31618381640400517,
839
- -0.31409819656850557,
840
- -0.3110656929154937,
841
- -0.3095049744025406,
842
- -0.30752057633910357,
843
- -0.30556960902137525,
844
- -0.3027829439169545,
845
- -0.30115616625677594,
846
- -0.2992388882635633,
847
- -0.29790808459677326,
848
- -0.29614107582921284,
849
- -0.29460323086620077,
850
- -0.29290305747122114,
851
- -0.29096576923562706,
852
- -0.28935994393801445,
853
- -0.28819948956812763,
854
- -0.2869886835440701,
855
- -0.28586329091822255,
856
- -0.2846364522508117,
857
- -0.28269659680518916,
858
- -0.281057728028401,
859
- -0.2795759624242986,
860
- -0.2781609990609975,
861
- -0.27694288368683145,
862
- -0.27532319278844564,
863
- -0.27408854454466175,
864
- -0.2729648643288361,
865
- -0.27144185480425864,
866
- -0.2701401614423978,
867
- -0.26891918141005233,
868
- -0.26790126294981215,
869
- -0.26662186785524306,
870
- -0.2656574892883056,
871
- -0.2644098109163043,
872
- -0.26337310445488576,
873
- -0.26203543776909083,
874
- -0.2609691117641722,
875
- -0.2600188645909466,
876
- -0.2593633842298863,
877
- -0.2585314979734811,
878
- -0.2574381142162256,
879
- -0.2563098326071415,
880
- -0.2553181715455296,
881
- -0.25446215492639956,
882
- -0.2533120704005124,
883
- -0.2523496621237105,
884
- -0.25121653898605684,
885
- -0.2503924020174411,
886
- -0.24947971995999066,
887
- -0.24875181221835432,
888
- -0.24805140031120118,
889
- -0.24727582023137232,
890
- -0.24663762907134765,
891
- -0.2459616916356722,
892
- -0.24529491050407648,
893
- -0.24457917235358834,
894
- -0.24377622479663535,
895
- -0.24259497000937327,
896
- -0.24179859567796222,
897
- -0.24109330531430992,
898
- -0.24029365125427776,
899
- -0.23972439100494172,
900
- -0.23885388777692076,
901
- -0.2381948892482168,
902
- -0.23758295755174363,
903
- -0.2370817993186126,
904
- -0.2366632827464726,
905
- -0.23607594462346307,
906
- -0.23549170772074,
907
- -0.234982807469885,
908
- -0.23438479180486285,
909
- -0.23365204867547615,
910
- -0.23292524306470644,
911
- -0.23227662038953065,
912
- -0.23166258120254218,
913
- -0.23101445941782023,
914
- -0.23047525369522995,
915
- -0.23000303178175968,
916
- -0.22948725905661702,
917
- -0.2289234214735261,
918
- -0.22846647769577552,
919
- -0.22303942350564146,
920
- -0.2130046956665427,
921
- -0.20543799676998986,
922
- -0.1954480771441463,
923
- -0.18789765588051718,
924
- -0.17932300227739445,
925
- -0.1715829976167023,
926
- -0.16447580377279458,
927
- -0.15816263683439233,
928
- -0.15147394738740896,
929
- -0.14695765604037117,
930
- -0.14003333847105068,
931
- -0.13452479938308162,
932
- -0.12914856134711084,
933
- -0.12219242903613078,
934
- -0.11706584180582619,
935
- -0.11215831961720304,
936
- -0.10684005104175061,
937
- -0.10177938013604153,
938
- -0.09497492636895405,
939
- -0.0903189615863869,
940
- -0.08636031762694407,
941
- -0.08064330625623507,
942
- -0.07541400623983865,
943
- -0.07034875962321205,
944
- -0.06663113489356019,
945
- -0.06210265913720767,
946
- -0.057130413426339434,
947
- -0.05263061602076697,
948
- -0.04840909565369754,
949
- -0.04377903486829952,
950
- -0.039260501120979376,
951
- -0.034040503575402024,
952
- -0.02830404158603614,
953
- -0.02294275463488927,
954
- -0.016260940436694814,
955
- -0.00990847520648451,
956
- -0.003018303156779888,
957
- 0.004025329608159861,
958
- 0.014592567467022683,
959
- 0.027329406793812426,
960
- 0.09716776290671227
961
  ],
962
  "AM_FIXED": [
963
- -0.8473305591710079,
964
- -0.6962087255700801,
965
- -0.6324967676837733,
966
- -0.5956141785098662,
967
- -0.5556282499886642,
968
- -0.5316926672719822,
969
- -0.5242697605919209,
970
- -0.514141382543335,
971
- -0.5034130217249433,
972
- -0.4919337562979936,
973
- -0.48330551063753585,
974
- -0.47496756494369474,
975
- -0.4683128004381049,
976
- -0.4616769265001095,
977
- -0.45642313056720657,
978
- -0.4506893179312893,
979
- -0.44532822297290964,
980
- -0.44087999016595214,
981
- -0.436096235716699,
982
- -0.4310325962825238,
983
- -0.4255813785557317,
984
- -0.421360109715655,
985
- -0.4169162722377251,
986
- -0.4143839831156604,
987
- -0.4093028733618852,
988
- -0.4060538516041417,
989
- -0.40247452451263405,
990
- -0.3996245302560336,
991
- -0.39677329726296917,
992
- -0.3942512521447598,
993
- -0.3912875916483035,
994
- -0.3886007594532128,
995
- -0.38584211249574607,
996
- -0.38350768672155255,
997
- -0.381012922849747,
998
- -0.3785711002967663,
999
- -0.3764589862708422,
1000
- -0.3740020613130564,
1001
- -0.37209460710829756,
1002
- -0.3697440689331832,
1003
- -0.3680256837948266,
1004
- -0.3656327246576843,
1005
- -0.3642104126291008,
1006
- -0.36223682880723934,
1007
- -0.3606027401215512,
1008
- -0.35857291535634717,
1009
- -0.35688030748979754,
1010
- -0.3553008091601993,
1011
- -0.35384783174840845,
1012
- -0.352583319057188,
1013
- -0.3512273955348394,
1014
- -0.34987566087869537,
1015
- -0.34870346626651616,
1016
- -0.346628204117248,
1017
- -0.345256821276177,
1018
- -0.3438899023065656,
1019
- -0.3429066491716653,
1020
- -0.34173287233670224,
1021
- -0.34039874159359684,
1022
- -0.3389147248992787,
1023
- -0.3377859335738315,
1024
- -0.33679271143074013,
1025
- -0.33552073917895064,
1026
- -0.3343192804381804,
1027
- -0.3332499947417455,
1028
- -0.33228673919903723,
1029
- -0.33125978107311393,
1030
- -0.33039517845729,
1031
- -0.3295728484345756,
1032
- -0.3285717243011326,
1033
- -0.32769571442355977,
1034
- -0.3270375342346605,
1035
- -0.3261325011844982,
1036
- -0.32499540294079377,
1037
- -0.32411500380901864,
1038
- -0.32341863376789703,
1039
- -0.32276298096251227,
1040
- -0.322055363134168,
1041
- -0.32112005254842246,
1042
- -0.3204772594997855,
1043
- -0.319781759919846,
1044
- -0.31908213887820086,
1045
- -0.31827726834809844,
1046
- -0.31765381281585847,
1047
- -0.31694230331558315,
1048
- -0.31646415657741656,
1049
- -0.3158806779427532,
1050
- -0.3153278935715646,
1051
- -0.31470664383874725,
1052
- -0.31409893009914214,
1053
- -0.3135854980154072,
1054
- -0.3131735407924789,
1055
- -0.31280040612584925,
1056
- -0.31238959413172046,
1057
- -0.31189062304727594,
1058
- -0.3112432692715006,
1059
- -0.31075905314549485,
1060
- -0.3102156466142811,
1061
- -0.30976256128217955,
1062
- -0.3092204116762286,
1063
- -0.30881471616264533,
1064
- -0.3084270953613516,
1065
- -0.307938487076071,
1066
- -0.30747816031176994,
1067
- -0.30709311315180904,
1068
- -0.30672896980803477,
1069
- -0.30627811622790113,
1070
- -0.3059021474925068,
1071
- -0.3055582903408423,
1072
- -0.3051755023361506,
1073
- -0.304708752032927,
1074
- -0.3043010451218694,
1075
- -0.30411100169418376,
1076
- -0.3038661548945301,
1077
- -0.30355682377915455,
1078
- -0.3031434793153953,
1079
- -0.30285349552527774,
1080
- -0.30257029521503087,
1081
- -0.3021919665309224,
1082
- -0.30188405847189653,
1083
- -0.3015006909265769,
1084
- -0.3011830761820937,
1085
- -0.30095890410228476,
1086
- -0.30065686637173683,
1087
- -0.30041010666009316,
1088
- -0.3001583593175754,
1089
- -0.2999249473084464,
1090
- -0.29973605994626895,
1091
- -0.2994761242137326,
1092
- -0.29923837350439175,
1093
- -0.29894465261550224,
1094
- -0.2985495091798922,
1095
- -0.29827004819821407,
1096
- -0.2979905866563521,
1097
- -0.29774312015293686,
1098
- -0.2975059234266093,
1099
- -0.29721819705732794,
1100
- -0.2970284241342128,
1101
- -0.29680630659923435,
1102
- -0.2966597381207855,
1103
- -0.2964942557331145,
1104
- -0.2963006819265516,
1105
- -0.2961150190925851,
1106
- -0.2959132281306637,
1107
- -0.29566109839607757,
1108
- -0.29540427321976026,
1109
- -0.2951675303416264,
1110
- -0.2949854265953558,
1111
- -0.2947443478997092,
1112
- -0.29455405720511907,
1113
- -0.29439104286706685,
1114
- -0.2942140567818914,
1115
- -0.2940210676602784,
1116
- -0.29386596457338693,
1117
- -0.29085392920477227,
1118
- -0.2859386714339165,
1119
- -0.27939908371616184,
1120
- -0.27267697476266145,
1121
- -0.26763831531548266,
1122
- -0.262373764636336,
1123
- -0.25895661123224434,
1124
- -0.25510999024314973,
1125
- -0.25107426415018647,
1126
- -0.2473972070934346,
1127
- -0.24330936558012708,
1128
- -0.24046566602995006,
1129
- -0.23758071587822466,
1130
- -0.2345321563572618,
1131
- -0.2310200887684653,
1132
- -0.2276670448085949,
1133
- -0.22455535440821944,
1134
- -0.22168840086392666,
1135
- -0.21827875304846645,
1136
- -0.21576252183112396,
1137
- -0.21309749405914616,
1138
- -0.21054760205676476,
1139
- -0.20807145934560758,
1140
- -0.20564399428956057,
1141
- -0.2034427774470263,
1142
- -0.2010516483645463,
1143
- -0.19860371400087223,
1144
- -0.19638034059790285,
1145
- -0.19430906481461963,
1146
- -0.1925068369272964,
1147
- -0.19062386389250988,
1148
- -0.18832331435858424,
1149
- -0.18643518255868158,
1150
- -0.18430768738970976,
1151
- -0.18229230969276292,
1152
- -0.1803777343251358,
1153
- -0.1785148441542739,
1154
- -0.17588484879381014,
1155
- -0.1735161892337515,
1156
- -0.17078784409222264,
1157
- -0.16857269522532362,
1158
- -0.16525784258690915,
1159
- -0.16260045835699535,
1160
- -0.15953777532072144,
1161
- -0.15555860152774814,
1162
- -0.15073703147227693,
1163
- -0.12615724908845902
1164
  ]
1165
  },
1166
  "stacker": {
@@ -1172,30 +1172,30 @@
1172
  "weights": {
1173
  "0": {
1174
  "w": [
1175
- 2.056447653386206,
1176
- 0.2807164504290539,
1177
- 0.37325839259920107
1178
  ],
1179
- "b": 0.06701045692458901,
1180
- "n_fit": 10526
1181
  },
1182
  "1": {
1183
  "w": [
1184
- 1.532941221369226,
1185
- 0.32607160783678957,
1186
  0.0
1187
  ],
1188
- "b": -0.5319627270758527,
1189
- "n_fit": 4762
1190
  },
1191
  "2": {
1192
  "w": [
1193
- 1.7449406488055552,
1194
  0.0,
1195
- 0.39856213648688676
1196
  ],
1197
- "b": 0.259186755054544,
1198
- "n_fit": 38146
1199
  }
1200
  },
1201
  "note": "logit = \u03a3 w\u00b7(rank \u2212 0.5) + b per group; member absent \u2192 rank term 0; weights fitted on forward-chained train OOF (later > 1867, recency-weighted, L2 1e-3); the two orders of a pair are averaged"
@@ -1210,7 +1210,7 @@
1210
  "scores": {
1211
  "public_board": 0.64303,
1212
  "held_out_submitted": 0.6448,
1213
- "held_out_scorer_path": 0.6975867612010785
1214
  },
1215
  "terms": {
1216
  "a": "|\u03b81 \u2212 \u03b82|: the absolute synastry angle between the two natal charts (even under swap)",
 
24
  "lon_max",
25
  "lon_min",
26
  "same_place",
27
+ "start_year_only",
28
  "n_missing_places",
29
  "start_weekday",
30
  "start_month"
 
61
  "stage": 3,
62
  "phasor": 22,
63
  "step": 0.4,
64
+ "alpha": 0.5990364962617357,
65
+ "c": -0.43700987758714416,
66
+ "w_re": 0.25597078474063595,
67
+ "w_im": -0.08743030419441683,
68
+ "b_re": 0.6697145443465238,
69
+ "b_im": -0.463872964447608
70
  },
71
  {
72
  "stage": 4,
73
  "phasor": 36,
74
  "step": 0.4,
75
+ "alpha": 0.41293968946185067,
76
+ "c": -0.2330180996070694,
77
+ "w_re": -0.4970121903590752,
78
+ "w_im": 0.04338121336913408,
79
+ "b_re": -0.5566268431158129,
80
+ "b_im": 0.38906276077602536
81
  },
82
  {
83
  "stage": 5,
84
  "phasor": 7,
85
  "step": 0.4,
86
+ "alpha": 0.2936615588993172,
87
+ "c": -0.23691300248141622,
88
+ "w_re": 0.2975206451971018,
89
+ "w_im": 0.427883413802108,
90
+ "b_re": 0.548867687621452,
91
+ "b_im": 0.18586220341891332
92
  },
93
  {
94
  "stage": 6,
95
+ "phasor": 22,
96
  "step": 0.4,
97
+ "alpha": -0.3062555862295622,
98
+ "c": 0.16257361841558501,
99
+ "w_re": 0.3349140356286359,
100
+ "w_im": -0.6381250453921768,
101
+ "b_re": -0.5769516232010882,
102
+ "b_im": 0.5470333082456773
103
  },
104
  {
105
  "stage": 7,
106
+ "phasor": 36,
107
  "step": 0.4,
108
+ "alpha": -0.4045101103468493,
109
+ "c": 0.14154005410077078,
110
+ "w_re": -0.45075487671693676,
111
+ "w_im": -0.5388790845034184,
112
+ "b_re": 0.17136323494501599,
113
+ "b_im": 0.6029890996340981
114
  },
115
  {
116
  "stage": 8,
117
  "phasor": 7,
118
  "step": 0.4,
119
+ "alpha": -0.4020384992965446,
120
+ "c": 0.06796408268599309,
121
+ "w_re": 0.3694786587017068,
122
+ "w_im": -0.24833504036014573,
123
+ "b_re": -0.4295237702592611,
124
+ "b_im": 0.3476143405218012
125
  }
126
  ],
127
  "inner_auc": null,
 
231
  "stage": 2,
232
  "phasor": 22,
233
  "step": 0.4,
234
+ "alpha": -0.5207193874852175,
235
+ "c": 0.20565202906186938,
236
+ "w_re": 0.5729178181785144,
237
+ "w_im": 0.2602162619333012,
238
+ "b_re": -0.5003166184458325,
239
+ "b_im": -0.45566929765260966
240
  },
241
  {
242
  "stage": 3,
243
  "phasor": 36,
244
  "step": 0.4,
245
+ "alpha": -0.5526874648533944,
246
+ "c": 0.19095163628020678,
247
+ "w_re": -0.6097714390516403,
248
+ "w_im": -0.04332020140377402,
249
+ "b_re": 0.577756066924335,
250
+ "b_im": 0.24685256051497378
251
  }
252
  ],
253
  "inner_auc": null,
 
554
  1.0
555
  ],
556
  "GEO": [
557
+ 0.006913272871449404,
558
+ 0.010521927907032385,
559
+ 0.017432710503627876,
560
+ 0.021971080432074772,
561
+ 0.025982452249211987,
562
+ 0.03843630234194731,
563
+ 0.05128599742667232,
564
+ 0.06411001289634158,
565
+ 0.07886289686803898,
566
+ 0.09554327615433172,
567
+ 0.11044582796954489,
568
+ 0.1245084847338069,
569
+ 0.1386037646366576,
570
+ 0.15301423234488212,
571
+ 0.1662443433734935,
572
+ 0.17683474228464927,
573
+ 0.18567119643333654,
574
+ 0.1981245059207854,
575
+ 0.2069832068153778,
576
+ 0.21427452757062876,
577
+ 0.2211752045110846,
578
+ 0.2298731966727954,
579
+ 0.2360590006628064,
580
+ 0.24253109853967647,
581
+ 0.24898871790864957,
582
+ 0.2574874774344904,
583
+ 0.26209270002864493,
584
+ 0.26784876660769447,
585
+ 0.27243928859865735,
586
+ 0.2757993648766264,
587
+ 0.2802250614917765,
588
+ 0.28346182244372614,
589
+ 0.2873396459289831,
590
+ 0.2905743785641824,
591
+ 0.2935972034250351,
592
+ 0.2979546150206091,
593
+ 0.30088721421194037,
594
+ 0.3044705328236917,
595
+ 0.3080597062456377,
596
+ 0.31111435578695756,
597
+ 0.3136495298123036,
598
+ 0.31648667471247555,
599
+ 0.31866552158616673,
600
+ 0.3213704244389614,
601
+ 0.32382036100331674,
602
+ 0.3259043513783749,
603
+ 0.32888306227659997,
604
+ 0.3322828872521735,
605
+ 0.33478104715091234,
606
+ 0.3367251694349364,
607
+ 0.3397663823618785,
608
+ 0.34164031495415237,
609
+ 0.34425475035029174,
610
+ 0.3458603829257429,
611
+ 0.3490394022507366,
612
+ 0.351250436547558,
613
+ 0.35380027079800264,
614
+ 0.3563740574886468,
615
+ 0.35908136498198007,
616
+ 0.3616758222841481,
617
+ 0.3639203739852494,
618
+ 0.36641891126585463,
619
+ 0.36825917831143523,
620
+ 0.3703655751512612,
621
+ 0.3723896303932176,
622
+ 0.37514575829224095,
623
+ 0.3777138574863825,
624
+ 0.3796395768840269,
625
+ 0.3809827849496372,
626
+ 0.3832203991920498,
627
+ 0.38491704937618637,
628
+ 0.38730289960503694,
629
+ 0.3896066405704455,
630
+ 0.39211580197611773,
631
+ 0.39420050159763714,
632
+ 0.39603231603513195,
633
+ 0.39806728777046874,
634
+ 0.4003258649473218,
635
+ 0.4024425155746257,
636
+ 0.404597532780032,
637
+ 0.4062878277832587,
638
+ 0.408486672342627,
639
+ 0.4108910473554381,
640
+ 0.4130840953384317,
641
+ 0.4157261057255928,
642
+ 0.41736301030122963,
643
+ 0.4197110788315401,
644
+ 0.4217904286369028,
645
+ 0.42358824208119045,
646
+ 0.42477944157408454,
647
+ 0.42602911874243216,
648
+ 0.4279685112149971,
649
+ 0.4298996321596881,
650
+ 0.43157772524579774,
651
+ 0.43315418022915125,
652
+ 0.43475703065491417,
653
+ 0.4363989547959423,
654
+ 0.4378347458354386,
655
+ 0.43941357624543753,
656
+ 0.4407698748334737,
657
+ 0.4426391211049754,
658
+ 0.44445744152674477,
659
+ 0.4454724055155614,
660
+ 0.44693804973710743,
661
+ 0.4486060702288222,
662
+ 0.4506183189546091,
663
+ 0.4519141808967848,
664
+ 0.4535657697304764,
665
+ 0.45531758025453306,
666
+ 0.4567745317656557,
667
+ 0.4586139945329933,
668
+ 0.4604819622608672,
669
+ 0.4624064655082171,
670
+ 0.46391589145301587,
671
+ 0.46536326806553857,
672
+ 0.4668634308026278,
673
+ 0.4686724573151632,
674
+ 0.47026402513908033,
675
+ 0.47197588608973007,
676
+ 0.47404057426564733,
677
+ 0.47551769425494905,
678
+ 0.47753998575935014,
679
+ 0.47900176970153424,
680
+ 0.48078095997263576,
681
+ 0.4831992947601016,
682
+ 0.48480971006817003,
683
+ 0.48669506409732993,
684
+ 0.4885053867923994,
685
+ 0.4910287962000111,
686
+ 0.4928768730468846,
687
+ 0.4945728712847244,
688
+ 0.49678216542166936,
689
+ 0.49880933780406084,
690
+ 0.5003287963954394,
691
+ 0.5021864297563144,
692
+ 0.5037563090465602,
693
+ 0.5059552916124482,
694
+ 0.5078139086648507,
695
+ 0.5099789241606252,
696
+ 0.5121621112384177,
697
+ 0.5138475754214405,
698
+ 0.5153526555275648,
699
+ 0.5173715887848964,
700
+ 0.5194267103178675,
701
+ 0.5210870936138616,
702
+ 0.5231486381445144,
703
+ 0.5257527862280496,
704
+ 0.5271972311179126,
705
+ 0.5297723931186873,
706
+ 0.5323594676561085,
707
+ 0.5341059312054954,
708
+ 0.5362359940211464,
709
+ 0.5383551608758781,
710
+ 0.54031665844316,
711
+ 0.5427443597921888,
712
+ 0.5447700205643082,
713
+ 0.5469444396843476,
714
+ 0.5486753078266539,
715
+ 0.5513292189776524,
716
+ 0.5544572682031577,
717
+ 0.5563003195258228,
718
+ 0.5586943035709749,
719
+ 0.5608788091714048,
720
+ 0.5635211244243078,
721
+ 0.5656936692586126,
722
+ 0.5678064066479375,
723
+ 0.5696128072441119,
724
+ 0.5712952056052951,
725
+ 0.5739853317833687,
726
+ 0.5769334310586368,
727
+ 0.5790859505739521,
728
+ 0.5812263660223614,
729
+ 0.5838546239625378,
730
+ 0.5873818037442188,
731
+ 0.5897168527346843,
732
+ 0.5920844266583635,
733
+ 0.5946572816944264,
734
+ 0.5972682024446055,
735
+ 0.6000162291819117,
736
+ 0.6028865459687814,
737
+ 0.6062936712340593,
738
+ 0.6089862117132805,
739
+ 0.6130243429119221,
740
+ 0.6152376139878898,
741
+ 0.6182251050180596,
742
+ 0.6213955115181514,
743
+ 0.6247070196059107,
744
+ 0.627575139692287,
745
+ 0.6308095797138655,
746
+ 0.6336086665600755,
747
+ 0.6385052097992436,
748
+ 0.6417355573892237,
749
+ 0.6466548447155609,
750
+ 0.6519118630773318,
751
+ 0.6581076960613654,
752
+ 0.6658130617210753,
753
+ 0.6734398486469425,
754
+ 0.6821999204881845,
755
+ 0.6903197914840303,
756
+ 0.7074505584113576,
757
+ 0.8182268090163412
758
  ],
759
  "AM_GREEDY": [
760
+ -1.3205108501619847,
761
+ -1.0041569288787995,
762
+ -0.9421640985209752,
763
+ -0.9108720916629958,
764
+ -0.8805457166248228,
765
+ -0.8549880603377625,
766
+ -0.8271992794007266,
767
+ -0.7962340213701488,
768
+ -0.7793216084263833,
769
+ -0.7577555691415724,
770
+ -0.7404390192548661,
771
+ -0.720720814861357,
772
+ -0.7030002800141256,
773
+ -0.6844725782930299,
774
+ -0.6724333929719514,
775
+ -0.6563591338070544,
776
+ -0.6418959176422449,
777
+ -0.6275497305325902,
778
+ -0.614349502582758,
779
+ -0.6013207379359173,
780
+ -0.5931210857122328,
781
+ -0.578606066912056,
782
+ -0.5687536958654935,
783
+ -0.5597847892498382,
784
+ -0.5509882195026604,
785
+ -0.5433149720318543,
786
+ -0.5357773436539571,
787
+ -0.5258539012190798,
788
+ -0.5185141721629287,
789
+ -0.5116244477618189,
790
+ -0.5053257198501145,
791
+ -0.497892557878059,
792
+ -0.4911772633241255,
793
+ -0.4845948419025868,
794
+ -0.4780123481239426,
795
+ -0.4721413076133428,
796
+ -0.46491922889360543,
797
+ -0.4588097900389938,
798
+ -0.4527182807045245,
799
+ -0.4469281139206777,
800
+ -0.44029075440555804,
801
+ -0.43534414596610105,
802
+ -0.4302665007930714,
803
+ -0.42550220751790085,
804
+ -0.4189723165770285,
805
+ -0.4153644624508289,
806
+ -0.4113500817885448,
807
+ -0.4072056612075271,
808
+ -0.40378570583349216,
809
+ -0.3995882466295672,
810
+ -0.39564664554730616,
811
+ -0.39138557195030094,
812
+ -0.3872264560358562,
813
+ -0.3821535265836669,
814
+ -0.3781182167110346,
815
+ -0.37478949091817737,
816
+ -0.3720155597768711,
817
+ -0.3684783267770344,
818
+ -0.36540901496619504,
819
+ -0.3611467911439354,
820
+ -0.3580465432501802,
821
+ -0.35498267037516873,
822
+ -0.3511570499031965,
823
+ -0.3477352494252278,
824
+ -0.3447132043222438,
825
+ -0.3425629542455028,
826
+ -0.3396581125193903,
827
+ -0.33676046212294314,
828
+ -0.33433040721509893,
829
+ -0.33171204457004067,
830
+ -0.32881826984795326,
831
+ -0.32604118619339956,
832
+ -0.3239908657494657,
833
+ -0.32121007237173377,
834
+ -0.31803103671394295,
835
+ -0.3151420980798851,
836
+ -0.3126120683563423,
837
+ -0.3106080903069213,
838
+ -0.3087208082600632,
839
+ -0.30592804935575796,
840
+ -0.30389903882995445,
841
+ -0.3025769142967587,
842
+ -0.3001122929630943,
843
+ -0.2981663135022613,
844
+ -0.2958530700593529,
845
+ -0.293742024318197,
846
+ -0.2921760668291662,
847
+ -0.290925674710342,
848
+ -0.2890560386418439,
849
+ -0.2872068944240543,
850
+ -0.2854224450957358,
851
+ -0.28371983891307906,
852
+ -0.28215695579343486,
853
+ -0.2808990861916441,
854
+ -0.27979352972169,
855
+ -0.2786868000253699,
856
+ -0.27726950984193266,
857
+ -0.27526993676012246,
858
+ -0.27399597789737407,
859
+ -0.2724549619113009,
860
+ -0.27099425864486626,
861
+ -0.2696194054222247,
862
+ -0.26817213413733565,
863
+ -0.267093384677856,
864
+ -0.2654806872197129,
865
+ -0.264266584338725,
866
+ -0.2628222563449039,
867
+ -0.26191828496367275,
868
+ -0.2605542448990662,
869
+ -0.2595198761610245,
870
+ -0.25817756072409037,
871
+ -0.25725925494545854,
872
+ -0.25609383547261827,
873
+ -0.2549150418591246,
874
+ -0.253709812746634,
875
+ -0.25314218968794006,
876
+ -0.25243298461182384,
877
+ -0.2514315439793563,
878
+ -0.2501960532151788,
879
+ -0.24918373455829573,
880
+ -0.24835244743036128,
881
+ -0.24716864197939206,
882
+ -0.2463173037397145,
883
+ -0.24517091476764918,
884
+ -0.24421998716650567,
885
+ -0.24354091567974936,
886
+ -0.24261103329766887,
887
+ -0.24183583949720058,
888
+ -0.24099523458953334,
889
+ -0.24028420435562978,
890
+ -0.23963893901998481,
891
+ -0.23886776642707144,
892
+ -0.2382121083297919,
893
+ -0.23732574595012287,
894
+ -0.23612136997311706,
895
+ -0.23526462238024118,
896
+ -0.23441963561794987,
897
+ -0.2336958194218948,
898
+ -0.23305047655069286,
899
+ -0.2322121250113868,
900
+ -0.23159347874075617,
901
+ -0.23095947579896844,
902
+ -0.2304950124692746,
903
+ -0.22995932065451238,
904
+ -0.2293742380336353,
905
+ -0.22881917068893615,
906
+ -0.22829855703317536,
907
+ -0.2275876540897722,
908
+ -0.22685425238549542,
909
+ -0.22610114832919653,
910
+ -0.22558334856687912,
911
+ -0.2249560465278932,
912
+ -0.22434158618301328,
913
+ -0.22384287837636596,
914
+ -0.223330158088311,
915
+ -0.22279475265549872,
916
+ -0.22227679382078702,
917
+ -0.22180729377150982,
918
+ -0.2136588059353889,
919
+ -0.20346164692658714,
920
+ -0.19497269763222047,
921
+ -0.18579143779973575,
922
+ -0.17729160676664152,
923
+ -0.16937100410306105,
924
+ -0.16197696463085043,
925
+ -0.1546042503074948,
926
+ -0.14775725104309584,
927
+ -0.1409810538156795,
928
+ -0.13603250514996293,
929
+ -0.13086857724679873,
930
+ -0.1254049851067388,
931
+ -0.12004679050259583,
932
+ -0.11480501952811159,
933
+ -0.10952476235242789,
934
+ -0.10403727451400108,
935
+ -0.09929829537201375,
936
+ -0.09418217404723171,
937
+ -0.08842701886178131,
938
+ -0.08335059435052575,
939
+ -0.07930401050265286,
940
+ -0.07530794356989803,
941
+ -0.07019676188364646,
942
+ -0.06594590756018485,
943
+ -0.061269831710332394,
944
+ -0.05695524334398717,
945
+ -0.05325330909895849,
946
+ -0.0495590350086045,
947
+ -0.04488140645501275,
948
+ -0.04085264804819716,
949
+ -0.03658493536664498,
950
+ -0.032659867689721137,
951
+ -0.0281157333596679,
952
+ -0.023071036100595858,
953
+ -0.01880620841261058,
954
+ -0.011467999653440867,
955
+ -0.007818704603232033,
956
+ -0.0016940156243354515,
957
+ 0.0065558511738080215,
958
+ 0.01471646216006183,
959
+ 0.027657730549579703,
960
+ 0.08285085492001593
961
  ],
962
  "AM_FIXED": [
963
+ -0.8456658532563975,
964
+ -0.6949972402744292,
965
+ -0.6317924252402076,
966
+ -0.5960719803591344,
967
+ -0.5565013735210735,
968
+ -0.5328248619856897,
969
+ -0.5244491987817956,
970
+ -0.5144916657779723,
971
+ -0.5039098406536369,
972
+ -0.4927463089744633,
973
+ -0.48422907688750816,
974
+ -0.4754168513088867,
975
+ -0.46906531255475997,
976
+ -0.46227755776109336,
977
+ -0.4567743654311398,
978
+ -0.45099946085629267,
979
+ -0.4454779183092233,
980
+ -0.4411063888413298,
981
+ -0.4359890323007902,
982
+ -0.43113159532183315,
983
+ -0.42555894430498065,
984
+ -0.4214729911066741,
985
+ -0.41700752761660753,
986
+ -0.4144623053058562,
987
+ -0.40926185842723856,
988
+ -0.4056184875824262,
989
+ -0.40252914003560303,
990
+ -0.3995853109119786,
991
+ -0.3969169361408867,
992
+ -0.39432790061299067,
993
+ -0.3912271506339057,
994
+ -0.38847134381303766,
995
+ -0.3859125466994669,
996
+ -0.38335160405120466,
997
+ -0.381013566498004,
998
+ -0.3785746684137355,
999
+ -0.3764831125612473,
1000
+ -0.3741403603887917,
1001
+ -0.37194567340336593,
1002
+ -0.3698134163091122,
1003
+ -0.3679175258040157,
1004
+ -0.36570342594594957,
1005
+ -0.3642998843416434,
1006
+ -0.3623530738609496,
1007
+ -0.3606498894559878,
1008
+ -0.358624747196905,
1009
+ -0.35690930140316746,
1010
+ -0.3554230366926345,
1011
+ -0.353935070770653,
1012
+ -0.35262882933389683,
1013
+ -0.3512946495901031,
1014
+ -0.34991076607454913,
1015
+ -0.34856721098171006,
1016
+ -0.34673340273235914,
1017
+ -0.34524271399052686,
1018
+ -0.34382063439523397,
1019
+ -0.3430057539713945,
1020
+ -0.34183790359995647,
1021
+ -0.3403898937639184,
1022
+ -0.33903304403478224,
1023
+ -0.3378099789652305,
1024
+ -0.3368852107947495,
1025
+ -0.3354277268871099,
1026
+ -0.3343694792281055,
1027
+ -0.33333960744955543,
1028
+ -0.3323759791043472,
1029
+ -0.33138788853892187,
1030
+ -0.3305262071420632,
1031
+ -0.3296797839462504,
1032
+ -0.3286700885240855,
1033
+ -0.32771644318553766,
1034
+ -0.32714093071098255,
1035
+ -0.3260979903979929,
1036
+ -0.3250767550741307,
1037
+ -0.32420365580125565,
1038
+ -0.32351718116186895,
1039
+ -0.3228155589492711,
1040
+ -0.32212563497910096,
1041
+ -0.3211431698541842,
1042
+ -0.3205983017599226,
1043
+ -0.3198767102319001,
1044
+ -0.31918673806736136,
1045
+ -0.31828739314362586,
1046
+ -0.31768006524650033,
1047
+ -0.3170415164462999,
1048
+ -0.316608440789286,
1049
+ -0.31600709057229404,
1050
+ -0.31539014765082796,
1051
+ -0.31474667839430887,
1052
+ -0.31422239287720505,
1053
+ -0.31371441908877024,
1054
+ -0.3132763760864393,
1055
+ -0.31289781454649834,
1056
+ -0.3124686543162527,
1057
+ -0.31190562224817153,
1058
+ -0.31130838936757654,
1059
+ -0.3108237971155024,
1060
+ -0.31027556005855056,
1061
+ -0.30988058793195056,
1062
+ -0.3093370796102442,
1063
+ -0.3089110309125706,
1064
+ -0.30854513993702737,
1065
+ -0.3079950392849323,
1066
+ -0.3075448904726379,
1067
+ -0.30715185205337914,
1068
+ -0.30674669195533083,
1069
+ -0.3063641960818693,
1070
+ -0.3059090798713832,
1071
+ -0.30564616440861664,
1072
+ -0.3052036113706947,
1073
+ -0.30475162415580326,
1074
+ -0.3044017248981601,
1075
+ -0.30418670061384945,
1076
+ -0.3039039619025844,
1077
+ -0.30360148145003224,
1078
+ -0.30324076327324717,
1079
+ -0.30287947093191986,
1080
+ -0.30258907120294026,
1081
+ -0.30219358510660893,
1082
+ -0.30186809165367356,
1083
+ -0.30150456980767465,
1084
+ -0.30123411371023867,
1085
+ -0.30093352683010755,
1086
+ -0.3006923137064026,
1087
+ -0.3004598066754017,
1088
+ -0.30020478653644006,
1089
+ -0.29998509343462604,
1090
+ -0.2997437623897424,
1091
+ -0.2994760439997792,
1092
+ -0.2992166652373361,
1093
+ -0.2988482262654641,
1094
+ -0.29853473589486673,
1095
+ -0.29828754536656304,
1096
+ -0.29798026456911025,
1097
+ -0.2977695391925532,
1098
+ -0.29748183394430994,
1099
+ -0.29723812917706793,
1100
+ -0.2970379404707912,
1101
+ -0.29686582862231337,
1102
+ -0.2966986192322115,
1103
+ -0.2964925503225897,
1104
+ -0.2963172627271645,
1105
+ -0.29611801248798486,
1106
+ -0.29588010690494765,
1107
+ -0.2955933255506107,
1108
+ -0.2953458048539656,
1109
+ -0.29516662454179393,
1110
+ -0.29493507430277127,
1111
+ -0.29473890060386937,
1112
+ -0.2945556905506928,
1113
+ -0.2943988058922422,
1114
+ -0.2941902259902521,
1115
+ -0.2940383776468646,
1116
+ -0.2914853262545533,
1117
+ -0.2866590229533158,
1118
+ -0.2804886510602516,
1119
+ -0.2742027931831893,
1120
+ -0.26834300677185896,
1121
+ -0.26359091078872166,
1122
+ -0.2598670026587419,
1123
+ -0.2558810743941832,
1124
+ -0.25195112139303383,
1125
+ -0.24823573154210893,
1126
+ -0.2443785180774634,
1127
+ -0.24128761482438332,
1128
+ -0.23840771409267228,
1129
+ -0.23547997420652342,
1130
+ -0.23248090432192534,
1131
+ -0.22865557462370598,
1132
+ -0.225979655108728,
1133
+ -0.22288973422815694,
1134
+ -0.21954973766746685,
1135
+ -0.21697023907785484,
1136
+ -0.2143149560262177,
1137
+ -0.21206617087146953,
1138
+ -0.20945684194415948,
1139
+ -0.20700087697664443,
1140
+ -0.20477322806738502,
1141
+ -0.20271966550865872,
1142
+ -0.20031301466055287,
1143
+ -0.1978484812064158,
1144
+ -0.1957613464563549,
1145
+ -0.19390054230880777,
1146
+ -0.19232819221378009,
1147
+ -0.1898328922362551,
1148
+ -0.18818571829330577,
1149
+ -0.1860400559662708,
1150
+ -0.18385987714737087,
1151
+ -0.18227232649167152,
1152
+ -0.18039374775606407,
1153
+ -0.17830970689370895,
1154
+ -0.1760113161161982,
1155
+ -0.17334031031680305,
1156
+ -0.1710081539047637,
1157
+ -0.16839533067360996,
1158
+ -0.16517832897595222,
1159
+ -0.16268620413126883,
1160
+ -0.15961073215093907,
1161
+ -0.15552827713170767,
1162
+ -0.14986900443173945,
1163
+ -0.1255956531056165
1164
  ]
1165
  },
1166
  "stacker": {
 
1172
  "weights": {
1173
  "0": {
1174
  "w": [
1175
+ 2.0584983041343254,
1176
+ 0.18896591382489294,
1177
+ 0.4678732138937597
1178
  ],
1179
+ "b": 0.06665233764199774,
1180
+ "n_fit": 10620
1181
  },
1182
  "1": {
1183
  "w": [
1184
+ 1.5481887598143498,
1185
+ 0.3347197374457492,
1186
  0.0
1187
  ],
1188
+ "b": -0.533994986643654,
1189
+ "n_fit": 4698
1190
  },
1191
  "2": {
1192
  "w": [
1193
+ 1.7511274341966216,
1194
  0.0,
1195
+ 0.42574597994451
1196
  ],
1197
+ "b": 0.2597240660575039,
1198
+ "n_fit": 38116
1199
  }
1200
  },
1201
  "note": "logit = \u03a3 w\u00b7(rank \u2212 0.5) + b per group; member absent \u2192 rank term 0; weights fitted on forward-chained train OOF (later > 1867, recency-weighted, L2 1e-3); the two orders of a pair are averaged"
 
1210
  "scores": {
1211
  "public_board": 0.64303,
1212
  "held_out_submitted": 0.6448,
1213
+ "held_out_scorer_path": 0.6981671903580872
1214
  },
1215
  "terms": {
1216
  "a": "|\u03b81 \u2212 \u03b82|: the absolute synastry angle between the two natal charts (even under swap)",
stack_iv_predictor.py CHANGED
@@ -148,8 +148,8 @@ def _geo_x(age1, age2, la, lo, lb, lob, start_year, jan1, wd=float("nan"), mo=fl
148
  def predict(dob_1, lat_1, lon_1, dob_2, lat_2, lon_2, start):
149
  """Probability that the relationship lasted thirty years, with every member's part. Exactly symmetric in the pair."""
150
  M = _M; labels = M["members"]["AM_GREEDY"]["labels"]
151
- jan1 = 1.0 if start[5:] == "01-01" else 0.0
152
- wed = start if jan1 == 0.0 else start[:4] + "-00-00"
153
  t1, t2, tw = theta(dob_1, lat_1, lon_1), theta(dob_2, lat_2, lon_2), theta(wed, natal=False)
154
  P12, P21 = phases(t1, t2, tw, labels), phases(t2, t1, tw, labels)
155
  g12, acc_g = am_logit(M["members"]["AM_GREEDY"], P12); g21, _ = am_logit(M["members"]["AM_GREEDY"], P21)
@@ -159,7 +159,9 @@ def predict(dob_1, lat_1, lon_1, dob_2, lat_2, lon_2, start):
159
  age1 = float(ys - y1) if y1 else float("nan"); age2 = float(ys - y2) if y2 else float("nan")
160
  import datetime as _dt
161
  try:
162
- _sd = _dt.date(ys, int(start[5:7]), int(start[8:10])); wd_, mo_ = (float(_sd.weekday()), float(_sd.month)) if jan1 == 0.0 else (float("nan"), float("nan"))
 
 
163
  except Exception:
164
  wd_, mo_ = float("nan"), float("nan")
165
  x = _geo_x(age1, age2, lat_1, lon_1, lat_2, lon_2, ys, jan1, wd_, mo_)
@@ -240,14 +242,14 @@ def best_matches(dob, lat, lon, start=None, top=20, min_age=18, max_age=100, cap
240
  M = _M; labels = M["members"]["AM_GREEDY"]["labels"]; caps = capitals if capitals is not None else _CAPS
241
  if caps is None:
242
  raise RuntimeError("capitals not loaded — pass capitals=[{country, capital, lat, lon}, ...] or set stack_iv_predictor._CAPS")
243
- today = dt.date.today(); start = start or today.isoformat(); jan1 = 1.0 if start[5:] == "01-01" else 0.0
244
  sy, sm, sd = int(start[:4]), max(1, int(start[5:7])), max(1, int(start[8:10]))
245
  # the candidate days: everyone aged min_age..max_age at the start
246
  d_lo = dt.date(sy - max_age, sm, sd); d_hi = dt.date(sy - min_age, sm, sd); ndays = (d_hi - d_lo).days + 1
247
  days = [d_lo + dt.timedelta(days=i) for i in range(ndays)]; jds = np.array([_jd(d.year, d.month, d.day, 9.0) for d in days])
248
  yrs = np.array([d.year for d in days]); cand_years = np.arange(yrs.min(), yrs.max() + 1)
249
  # the person's and the start's phases (exact), the candidates' outer planets per day
250
- t1 = theta(dob, lat, lon); wed = start if jan1 == 0.0 else start[:4] + "-00-00"; tw = theta(wed, natal=False)
251
  L = _outer_lon_by_day(jds); col = {b: j for j, b in enumerate(BODIES14)}
252
  cand = np.full((ndays, len(BODIES14)), np.nan); cand[:, col["uranus"]] = L["uranus"]; cand[:, col["neptune"]] = L["neptune"]; cand[:, col["pluto"]] = L["pluto"]
253
  # ArtaModel logits per day, both orders (person = slot 1 / slot 2), vectorised over the stages' phasors
@@ -271,7 +273,9 @@ def best_matches(dob, lat, lon, start=None, top=20, min_age=18, max_age=100, cap
271
  # geography per (year, capital)
272
  y1 = int(dob[:4]) if _prec(dob) else None; age1 = float(sy - y1) if y1 else float("nan")
273
  try:
274
- _sd = dt.date(sy, sm, sd); wd_, mo_ = (float(_sd.weekday()), float(_sd.month)) if jan1 == 0.0 else (float("nan"), float("nan"))
 
 
275
  except Exception:
276
  wd_, mo_ = float("nan"), float("nan")
277
  rows = []
@@ -301,7 +305,7 @@ def best_matches(dob, lat, lon, start=None, top=20, min_age=18, max_age=100, cap
301
  out.append({"dob": days[di].isoformat(), "country": cp["country"], "capital": cp["capital"], "lat": cp["lat"], "lon": cp["lon"],
302
  "probability": float(1 / (1 + np.exp(-Z[di, ci]))), "geo_probability": float(geo[y_i, ci]), "am_greedy_logit": float(am_g[di]), "am_fixed_logit": float(am_f[di])})
303
  return {"start": start, "group": group, "n_candidates": int(ndays * len(caps)), "n_days": int(ndays), "n_capitals": len(caps), "matches": out,
304
- "note": "the candidate's phases are the outer planets at 09:00 UT of the day (weekly samples interpolated); the capital enters through the geography member"}
305
 
306
 
307
  # ── THE BEST START DAY (electional) ─────���────────────────────────────────────────────────────────────────────────
@@ -313,8 +317,7 @@ def best_start_days(dob_1, lat_1, lon_1, dob_2, lat_2, lon_2, from_date=None, ye
313
  import datetime as dt
314
  M = _M; labels = M["members"]["AM_GREEDY"]["labels"]; col = {b: j for j, b in enumerate(BODIES14)}
315
  today = dt.date.today(); d0 = dt.date.fromisoformat(from_date) if from_date else today
316
- ndays0 = int(round(365.2425 * years)); days = [d for d in (d0 + dt.timedelta(days=i) for i in range(ndays0)) if not (d.month == 1 and d.day == 1)] # 1 January is the dataset's year-only placeholder: never a scorable day
317
- ndays = len(days)
318
  jds = np.array([_jd(d.year, d.month, d.day, 12.0) for d in days])
319
  t1, t2 = theta(dob_1, lat_1, lon_1), theta(dob_2, lat_2, lon_2)
320
  L = _outer_lon_by_day(jds); TW = np.full((ndays, len(BODIES14)), np.nan); TW[:, col["uranus"]] = L["uranus"]; TW[:, col["neptune"]] = L["neptune"]; TW[:, col["pluto"]] = L["pluto"]
@@ -344,13 +347,15 @@ def best_start_days(dob_1, lat_1, lon_1, dob_2, lat_2, lon_2, from_date=None, ye
344
  iu = col["uranus"]; hasA = np.isfinite(t1[iu]) and np.isfinite(t2[iu]); hasT = (np.isfinite(t1[iu]) or np.isfinite(t2[iu]))
345
  group = "0" if hasT else ("1" if hasA else "2"); w = M["stacker"]["weights"].get(group) or M["stacker"]["weights"]["2"]
346
  Z = w["w"][0] * (rk(geo, "GEO") - 0.5) + w["w"][1] * (rk(am_g, "AM_GREEDY") - 0.5) + w["w"][2] * (rk(am_f, "AM_FIXED") - 0.5) + w["b"]
347
- order = np.argsort(-Z)[:top]
348
- out = [{"start": days[i].isoformat(), "weekday": days[i].strftime("%A"), "probability": float(1 / (1 + np.exp(-Z[i]))), "geo_probability": float(geo[i]), "am_greedy_logit": float(am_g[i]), "am_fixed_logit": float(am_f[i])} for i in order]
349
- # the month-by-month profile too, for the page: the best day of each calendar month in the horizon
350
- by_month = {}
351
  for i, d in enumerate(days):
352
  k = d.strftime("%Y-%m")
353
- if k not in by_month or Z[i] > by_month[k][1]:
354
- by_month[k] = (d.isoformat(), float(Z[i]))
355
- return {"from": d0.isoformat(), "years": years, "n_days": ndays, "group": group, "best_days": out, "note": "1 January is skipped (the dataset's year-only placeholder)",
356
- "best_day_per_month": [{"month": k, "start": v[0], "probability": float(1 / (1 + np.exp(-v[1])))} for k, v in sorted(by_month.items())]}
 
 
 
148
  def predict(dob_1, lat_1, lon_1, dob_2, lat_2, lon_2, start):
149
  """Probability that the relationship lasted thirty years, with every member's part. Exactly symmetric in the pair."""
150
  M = _M; labels = M["members"]["AM_GREEDY"]["labels"]
151
+ jan1 = 1.0 if start.endswith("-00-00") else 0.0 # "year only" is spelled YYYY-00-00; a 1 January is a day
152
+ wed = start
153
  t1, t2, tw = theta(dob_1, lat_1, lon_1), theta(dob_2, lat_2, lon_2), theta(wed, natal=False)
154
  P12, P21 = phases(t1, t2, tw, labels), phases(t2, t1, tw, labels)
155
  g12, acc_g = am_logit(M["members"]["AM_GREEDY"], P12); g21, _ = am_logit(M["members"]["AM_GREEDY"], P21)
 
159
  age1 = float(ys - y1) if y1 else float("nan"); age2 = float(ys - y2) if y2 else float("nan")
160
  import datetime as _dt
161
  try:
162
+ if start.endswith("-00-00"): wd_, mo_ = float("nan"), float("nan")
163
+ elif start.endswith("-00"): wd_, mo_ = float("nan"), float(int(start[5:7]))
164
+ else: _sd = _dt.date(ys, int(start[5:7]), int(start[8:10])); wd_, mo_ = float(_sd.weekday()), float(_sd.month)
165
  except Exception:
166
  wd_, mo_ = float("nan"), float("nan")
167
  x = _geo_x(age1, age2, lat_1, lon_1, lat_2, lon_2, ys, jan1, wd_, mo_)
 
242
  M = _M; labels = M["members"]["AM_GREEDY"]["labels"]; caps = capitals if capitals is not None else _CAPS
243
  if caps is None:
244
  raise RuntimeError("capitals not loaded — pass capitals=[{country, capital, lat, lon}, ...] or set stack_iv_predictor._CAPS")
245
+ today = dt.date.today(); start = start or today.isoformat(); jan1 = 1.0 if start.endswith("-00-00") else 0.0
246
  sy, sm, sd = int(start[:4]), max(1, int(start[5:7])), max(1, int(start[8:10]))
247
  # the candidate days: everyone aged min_age..max_age at the start
248
  d_lo = dt.date(sy - max_age, sm, sd); d_hi = dt.date(sy - min_age, sm, sd); ndays = (d_hi - d_lo).days + 1
249
  days = [d_lo + dt.timedelta(days=i) for i in range(ndays)]; jds = np.array([_jd(d.year, d.month, d.day, 9.0) for d in days])
250
  yrs = np.array([d.year for d in days]); cand_years = np.arange(yrs.min(), yrs.max() + 1)
251
  # the person's and the start's phases (exact), the candidates' outer planets per day
252
+ t1 = theta(dob, lat, lon); tw = theta(start, natal=False)
253
  L = _outer_lon_by_day(jds); col = {b: j for j, b in enumerate(BODIES14)}
254
  cand = np.full((ndays, len(BODIES14)), np.nan); cand[:, col["uranus"]] = L["uranus"]; cand[:, col["neptune"]] = L["neptune"]; cand[:, col["pluto"]] = L["pluto"]
255
  # ArtaModel logits per day, both orders (person = slot 1 / slot 2), vectorised over the stages' phasors
 
273
  # geography per (year, capital)
274
  y1 = int(dob[:4]) if _prec(dob) else None; age1 = float(sy - y1) if y1 else float("nan")
275
  try:
276
+ if start.endswith("-00-00"): wd_, mo_ = float("nan"), float("nan")
277
+ elif start.endswith("-00"): wd_, mo_ = float("nan"), float(sm)
278
+ else: _sd = dt.date(sy, sm, sd); wd_, mo_ = float(_sd.weekday()), float(_sd.month)
279
  except Exception:
280
  wd_, mo_ = float("nan"), float("nan")
281
  rows = []
 
305
  out.append({"dob": days[di].isoformat(), "country": cp["country"], "capital": cp["capital"], "lat": cp["lat"], "lon": cp["lon"],
306
  "probability": float(1 / (1 + np.exp(-Z[di, ci]))), "geo_probability": float(geo[y_i, ci]), "am_greedy_logit": float(am_g[di]), "am_fixed_logit": float(am_f[di])})
307
  return {"start": start, "group": group, "n_candidates": int(ndays * len(caps)), "n_days": int(ndays), "n_capitals": len(caps), "matches": out,
308
+ "note": "the candidate's phases are the outer planets at 09:00 UT of the day (weekly samples interpolated); the capital enters through the geography member; a year-only start is spelled YYYY-00-00"}
309
 
310
 
311
  # ── THE BEST START DAY (electional) ─────���────────────────────────────────────────────────────────────────────────
 
317
  import datetime as dt
318
  M = _M; labels = M["members"]["AM_GREEDY"]["labels"]; col = {b: j for j, b in enumerate(BODIES14)}
319
  today = dt.date.today(); d0 = dt.date.fromisoformat(from_date) if from_date else today
320
+ ndays = int(round(365.2425 * years)); days = [d0 + dt.timedelta(days=i) for i in range(ndays)] # every day, 1 January included: "year only" is spelled YYYY-00-00
 
321
  jds = np.array([_jd(d.year, d.month, d.day, 12.0) for d in days])
322
  t1, t2 = theta(dob_1, lat_1, lon_1), theta(dob_2, lat_2, lon_2)
323
  L = _outer_lon_by_day(jds); TW = np.full((ndays, len(BODIES14)), np.nan); TW[:, col["uranus"]] = L["uranus"]; TW[:, col["neptune"]] = L["neptune"]; TW[:, col["pluto"]] = L["pluto"]
 
347
  iu = col["uranus"]; hasA = np.isfinite(t1[iu]) and np.isfinite(t2[iu]); hasT = (np.isfinite(t1[iu]) or np.isfinite(t2[iu]))
348
  group = "0" if hasT else ("1" if hasA else "2"); w = M["stacker"]["weights"].get(group) or M["stacker"]["weights"]["2"]
349
  Z = w["w"][0] * (rk(geo, "GEO") - 0.5) + w["w"][1] * (rk(am_g, "AM_GREEDY") - 0.5) + w["w"][2] * (rk(am_f, "AM_FIXED") - 0.5) + w["b"]
350
+ row = lambda i: {"start": days[i].isoformat(), "weekday": days[i].strftime("%A"), "probability": float(1 / (1 + np.exp(-Z[i]))), "geo_probability": float(geo[i]), "am_greedy_logit": float(am_g[i]), "am_fixed_logit": float(am_f[i])}
351
+ # TWENTY OPTIONS, not twenty copies of one week: the best day of each calendar month, ranked, `top` of them
352
+ # consecutive Tuesdays of one month are one option, not twenty (operator 2026-08-19)
353
+ best_in_month = {}
354
  for i, d in enumerate(days):
355
  k = d.strftime("%Y-%m")
356
+ if k not in best_in_month or Z[i] > Z[best_in_month[k]]:
357
+ best_in_month[k] = i
358
+ options = [dict(row(i), month=k) for k, i in sorted(best_in_month.items(), key=lambda kv: -Z[kv[1]])][:top]
359
+ raw = [row(i) for i in np.argsort(-Z)[:top]]
360
+ return {"from": d0.isoformat(), "years": years, "n_days": ndays, "group": group, "best_days": options, "raw_top_days": raw, "note": "every calendar day scored; a year-only start is spelled YYYY-00-00",
361
+ "best_day_per_month": [dict(row(i), month=k) for k, i in sorted(best_in_month.items())]}
t2m_normals.json ADDED
The diff for this file is too large to render. See raw diff
 
zodiac_members_iv.py ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ zodiac_members_iv.py — WESTERN vs EASTERN zodiacs as stack members (operator 2026-08-20). The phases in phases.npz
3
+ are sidereal Lahiri; every other zodiac is the same longitudes shifted by (ayanāṁśa difference)(t) — so the
4
+ TROPICAL, FAGAN-BRADLEY (western sidereal), KRISHNAMURTI, RAMAN and YUKTESHWAR zodiacs come free from sweshim's
5
+ ayanāṁśa table, no chart recast. What differs between systems is everything SIGN-based:
6
+ per system: each partner's Sun/Moon/Venus SIGN (order-free pair encoding), same-sign flags, element (fire/earth/
7
+ air/water) match, mode (cardinal/fixed/mutable) match, the classical sign-distance (1..6) of the pair's Suns and
8
+ Moons, the start-day Sun sign
9
+ One LightGBM member per zodiac system (no ages), one PLAIN + ALL-ZODIACS member; forward-chained OOF.
10
+ Writes AQ_OUT/zodiac_members.npz.
11
+ """
12
+ import json
13
+ import os
14
+ import sys
15
+ import time
16
+
17
+ import numpy as np
18
+ import pandas as pd
19
+
20
+ HERE = os.path.dirname(os.path.abspath(__file__)); ROOT = os.path.dirname(os.path.dirname(HERE)); sys.path.insert(0, HERE); sys.path.insert(0, os.path.join(ROOT, "web"))
21
+ from artamodel import auc # noqa: E402
22
+
23
+ PH = os.environ.get("AQ_PHASES", "/tmp/aq4feat/phases.npz"); OUT = os.environ.get("AQ_OUT", "/tmp/aq4sub")
24
+ QS = (0.40, 0.55, 0.70, 0.85, 1.0); T0 = time.time(); log = lambda *a: print(f"[{time.time()-T0:6.0f}s]", *a, flush=True)
25
+ SYSTEMS = ["TROPICAL", "FAGAN_BRADLEY", "KRISHNAMURTI", "RAMAN", "YUKTESHWAR"]
26
+
27
+
28
+ def aya_diff_tables(SW, years):
29
+ """For each system, ayanāṁśa(Lahiri) − ayanāṁśa(system) per year (0 for tropical means: add Lahiri back)."""
30
+ modes = {"FAGAN_BRADLEY": SW.SIDM_FAGAN_BRADLEY, "KRISHNAMURTI": SW.SIDM_KRISHNAMURTI, "RAMAN": SW.SIDM_RAMAN, "YUKTESHWAR": SW.SIDM_YUKTESHWAR}
31
+ out = {}
32
+ jd = {y: SW.julday(int(y), 7, 1, 0.0) for y in years}
33
+ SW.set_sid_mode(SW.SIDM_LAHIRI); lah = {y: SW.get_ayanamsa_ut(jd[y]) for y in years}
34
+ out["TROPICAL"] = {y: lah[y] for y in years} # sidereal + ayanāṁśa = tropical
35
+ for name, mode in modes.items():
36
+ SW.set_sid_mode(mode); out[name] = {y: lah[y] - SW.get_ayanamsa_ut(jd[y]) for y in years}
37
+ SW.set_sid_mode(SW.SIDM_LAHIRI)
38
+ return out
39
+
40
+
41
+ ELEM = np.arange(12) % 4; MODE = np.arange(12) % 3
42
+
43
+
44
+ def sign_feats(sunA, sunB, moonA, moonB, venA, venB, sunS):
45
+ sA, sB = np.floor(sunA / 30) % 12, np.floor(sunB / 30) % 12; mA, mB = np.floor(moonA / 30) % 12, np.floor(moonB / 30) % 12
46
+ vA, vB = np.floor(venA / 30) % 12, np.floor(venB / 30) % 12; sS = np.floor(sunS / 30) % 12
47
+ def dist(a, b):
48
+ d = np.abs(a - b); return np.fmin(d, 12 - d)
49
+ take = lambda tab, idx: np.where(np.isfinite(idx), tab[np.nan_to_num(idx).astype(int) % 12], np.nan)
50
+ return np.column_stack([np.fmax(sA, sB), np.fmin(sA, sB), dist(sA, sB), (sA == sB).astype(float),
51
+ (take(ELEM, sA) == take(ELEM, sB)).astype(float), (take(MODE, sA) == take(MODE, sB)).astype(float),
52
+ np.fmax(mA, mB), np.fmin(mA, mB), dist(mA, mB), (mA == mB).astype(float), (take(ELEM, mA) == take(ELEM, mB)).astype(float),
53
+ dist(sA, mB), dist(sB, mA), # sun-moon crossings, order-free as a set
54
+ np.fmax(vA, vB), np.fmin(vA, vB), dist(vA, vB), sS, dist(sA, sS) + dist(sB, sS)])
55
+
56
+
57
+ def main():
58
+ import lightgbm as lgb
59
+ import sweshim as SW
60
+ SW.load(os.path.join(ROOT, "web", "ephem4.bin"), os.path.join(ROOT, "web", "tables.json"))
61
+ Z = np.load(PH, allow_pickle=True); y = Z["y_train"].astype(np.int64); later = Z["yr_train"].astype(int).max(1); cuts = [np.quantile(later, q) for q in QS]
62
+ bodies = list(Z["bodies"]); s1, s2 = list(Z["slots"]); ptr, pte, pn = Z["plain_train"], Z["plain_test"], list(Z["plain_names"])
63
+ A, B, W = Z[f"theta_{s1}_train"], Z[f"theta_{s2}_train"], Z["theta_wed_train"]; Ae, Be, We = Z[f"theta_{s1}_test"], Z[f"theta_{s2}_test"], Z["theta_wed_test"]
64
+ ysA = Z["yr_train"][:, 0].astype(int); ysB = Z["yr_train"][:, 1].astype(int)
65
+ ysAe = pd.read_csv("/tmp/aq4/test.csv", dtype=str).dob_a.str[:4].astype(int).to_numpy(); ysBe = pd.read_csv("/tmp/aq4/test.csv", dtype=str).dob_b.str[:4].astype(int).to_numpy()
66
+ yrs = sorted(set(ysA[ysA > 0]) | set(ysB[ysB > 0]) | set(ysAe) | set(ysBe) | set(ptr[:, pn.index("start_year")].astype(int)) | set(pte[:, pn.index("start_year")].astype(int)))
67
+ D = aya_diff_tables(SW, yrs); log(f"ayanāṁśa tables for {len(yrs)} years, {len(SYSTEMS)} systems")
68
+ i_sun, i_moon, i_ven = bodies.index("sun"), bodies.index("moon"), bodies.index("venus")
69
+ sy_tr = ptr[:, pn.index("start_year")].astype(int); sy_te = pte[:, pn.index("start_year")].astype(int)
70
+ ia, ib, iy = pn.index(f"age_{s1}_at_start"), pn.index(f"age_{s2}_at_start"), pn.index("start_year")
71
+ plain = lambda p: np.column_stack([np.fmax(p[:, ia], p[:, ib]), np.fmin(p[:, ia], p[:, ib]), np.abs(p[:, ia] - p[:, ib]), p[:, iy]])
72
+ prm = dict(n_estimators=300, learning_rate=0.05, num_leaves=15, min_child_samples=200, colsample_bytree=0.7, subsample=0.8, subsample_freq=1, reg_lambda=20.0, verbose=-1)
73
+ members_tr, members_te, names, meta = [], [], [], []
74
+ def member(Xa, Xb, name):
75
+ s_tr = np.full(len(y), np.nan)
76
+ for k in range(1, len(cuts)):
77
+ lo = cuts[k - 1]; blk = (later > lo) & ((later <= cuts[k]) if k < len(cuts) - 1 else True); c = lgb.LGBMClassifier(random_state=0, **prm); c.fit(Xa[later <= lo], y[later <= lo]); s_tr[blk] = c.predict_proba(Xa[blk])[:, 1]
78
+ c = lgb.LGBMClassifier(random_state=0, **prm); c.fit(Xa, y); s_te = c.predict_proba(Xb)[:, 1]
79
+ f = np.isfinite(s_tr) & (later > cuts[0]); o = auc(y[f], s_tr[f]); members_tr.append(s_tr); members_te.append(s_te); names.append(name); meta.append({"member": name, "forward_oof": o})
80
+ log(f" {name:<40} fwd-OOF {o:.4f}")
81
+ allX_tr, allX_te = [], []
82
+ for sysname in SYSTEMS:
83
+ off_tr_a = np.array([D[sysname].get(v, np.nan) for v in ysA]); off_tr_b = np.array([D[sysname].get(v, np.nan) for v in ysB]); off_tr_s = np.array([D[sysname].get(v, np.nan) for v in sy_tr])
84
+ off_te_a = np.array([D[sysname].get(v, np.nan) for v in ysAe]); off_te_b = np.array([D[sysname].get(v, np.nan) for v in ysBe]); off_te_s = np.array([D[sysname].get(v, np.nan) for v in sy_te])
85
+ Xa = sign_feats((A[:, i_sun] + off_tr_a) % 360, (B[:, i_sun] + off_tr_b) % 360, (A[:, i_moon] + off_tr_a) % 360, (B[:, i_moon] + off_tr_b) % 360,
86
+ (A[:, i_ven] + off_tr_a) % 360, (B[:, i_ven] + off_tr_b) % 360, (W[:, i_sun] + off_tr_s) % 360)
87
+ Xb = sign_feats((Ae[:, i_sun] + off_te_a) % 360, (Be[:, i_sun] + off_te_b) % 360, (Ae[:, i_moon] + off_te_a) % 360, (Be[:, i_moon] + off_te_b) % 360,
88
+ (Ae[:, i_ven] + off_te_a) % 360, (Be[:, i_ven] + off_te_b) % 360, (We[:, i_sun] + off_te_s) % 360)
89
+ member(Xa, Xb, f"ZODIAC {sysname} signs (no ages)"); allX_tr.append(Xa); allX_te.append(Xb)
90
+ member(np.column_stack([plain(ptr)] + allX_tr), np.column_stack([plain(pte)] + allX_te), "PLAIN + ALL ZODIAC SIGN SYSTEMS")
91
+ np.savez_compressed(os.path.join(OUT, "zodiac_members.npz"), S_train=np.column_stack(members_tr), S_test=np.column_stack(members_te), names=np.array(names), meta=json.dumps(meta))
92
+ log(f"wrote {OUT}/zodiac_members.npz")
93
+
94
+
95
+ if __name__ == "__main__":
96
+ main()