The sixth alpha I could not find, and what remains
In episode 8, I finalized and submitted the fifth alpha. This episode opens with that alpha being reflected and the scoreboard jumping sharply. But the real subject of this episode is something else. While waiting for the update, I ran dozens of batches searching for a sixth alpha, and in the end I failed. There is a reason I am recording the failure this plainly.
0. Summary
When the fifth alpha was reflected, my Silver score rose sharply and Gold came within reach. In the meantime, I explored two new directions for a sixth alpha, network centrality among competitors and customers, and conditional trading gating, but both hit a wall. The real gain of this episode is not that I failed, but that I confirmed numerically why these paths fail and closed them for good.
1. The update, and why it was late
I submitted the fifth alpha two mornings ago. The platform reflects the previous day's submissions every day at 3:00 AM US Eastern Time. The moment 3:00 arrived I checked, but the score was unchanged. It was still unchanged fifteen minutes later, and again thirty minutes later. Instead of staring at the clock, I assumed that 3:00 is the start of the day's settlement rather than the exact moment the numbers appear, and that batch processing could add more time. The reflection was finally confirmed at 3:51 AM, fifty-one minutes after the hour. The score moved from 7,464 to 9,429, and the number of held alphas rose from four to five. The distance to Gold (10,000 points) shrank from 2,536 to 571. The fifth alpha alone had pushed the score up by nearly 2,000 points. Now a single sixth alpha passing the gate would effectively lock in Gold.
2. I decided not to sit idle while waiting
There was no reason to do nothing during the three or four hours of waiting. In earlier episodes I had already combed through four financial-statement datasets using the industry-rank transform (ranking items within an industry strengthens the signal). The result was clear: only items tied to debt, leases, and trading activity were strong; the rest (valuation, profitability, cash-related items) remained weak even with this method. The strong items were already inside the fifth alpha. I found one more new item, capital lease obligations, but it overlapped so much with the fifth alpha that using them together pushed the correlation to 0.97. That meant it was practically a variant of the same alpha, so it could not be used. Since this path had already been checked repeatedly, I decided not to repeat it. Instead, I opened two completely new directions.
3. Searching for centrality in the network
The platform has data on relationships between a company and its competitors, customers, and partners. Until now I had only used simple values such as "average return of competitors" or "number of connected competitors" (material already in the third and fourth alphas). But the same dataset contained far more refined values. PageRank, the method web search engines used to score page importance, and hub-authority scores, which measure how well a node is connected to other important nodes in a network, had already been precomputed for each company within the competitor network and the customer network. These were not counts of connections; they measured how important the connected nodes were. That made them qualitatively different from anything I had used before.
I tested the seven fields one by one. The strongest was PageRank in the competitor network, but even that only reached a Sharpe 0.78 (the gate requires at least 1.25). The rest were weaker, and two were negative. I applied the same technique that had worked for the fifth alpha: even if individual ingredients are weak, adding several of them together can make them strong. The result was the opposite of expectations. Adding the two strongest items left the number unchanged, and mixing in customer-side items made it worse. In the fifth alpha, each ingredient had already been somewhat strong, so addition worked. This time, every ingredient was weak. I had relearned the lesson from episode 2: weak items added to weak items do not become strong.
4. Testing conditional trading again
The platform has a feature that lets you follow a signal only under certain conditions instead of always trading. For example, you can set a condition like "only follow this signal on days when the market is choppier than usual, otherwise close the position." I had actually tried conditional trading a few episodes earlier and recorded that "it had no effect at all." At that time I applied it to an alpha that multiplied a competitor signal with a quality score. This time I applied the same condition to a completely unrelated new ingredient, the competitor-network PageRank I had just found. I wanted to know whether the earlier failure was specific to that combination, or whether the method itself does not work.
The result was strikingly clear. The numbers were identical to the decimal place with and without the condition. Sharpe 0.78, Fitness 0.48, turnover almost unchanged. The condition might as well not have run. The reason makes sense on reflection. This condition checks "whether the market moved today" and decides whether to trade each day, but signals derived from financial statements do not change much from day to day; they move slowly over months. Day to day, the alpha's positions barely change, so there was nothing for the condition to gate. After confirming this a second time, I concluded that this method should be retired for this class of slow signals.
5. Knowing why it does not work is progress too
Closing both directions is not a loss. If anything, it makes the next place to spend time clearer. I already knew the industry-rank transform works only on debt, lease, and trading-activity items. This episode confirmed that network centrality, a completely new dataset, is weak in this market, and that conditional trading gating, a completely new mechanism, does not fit slow signals. Both data and method were explored and both are now firmly closed. What remains is to revisit datasets I have not yet touched using combination methods other than industry rank, and to pull out the remaining templates I have built in the batch miner but not yet used.
The next episode should be the moment I find the sixth alpha and reach Gold.
Technical notes (Appendix)
- Confirmation of Alpha 5 reflection (07-03 03:51 EDT): score 7,464 → 9,429, held alphas 4 → 5, remaining to Gold (10,000) 2,536 → 571. Timing measurement: Alpha 5 was submitted at 07-02 04:22 EST and was eligible for the next-day 07-03 03:00 EST refresh, but checks at 03:03, 03:19, and 03:35 all showed no reflection; reflection was confirmed at 03:51. 3:00 AM EST is the batch trigger time, not the reflection completion time, and delays of up to about one hour are possible.
- pv13 network centrality, single-field measurements (
rank(group_rank(ts_backfill(field,120),subindustry)), decay5/INDUSTRY/trunc0.02):
Combinations (z-score sum, same pattern as Alpha 5): 2-way (com_page_rank + com_rk_au) 0.77 (unchanged), 3-way (competitor + customer crossover) 0.48, 4-way 0.49 (both down). Unlike Alpha 5, the legs themselves were too weak to create additive synergy, so the line is closed.0.78/0.48 pv13_com_page_rank (competitor-network PageRank) 0.68/0.36 pv13_com_rk_au (competitor-network HITS authority score) 0.52/0.25 pv13_ustomergraphrank_page_rank (customer-network PageRank) 0.45/0.22 pv13_ustomergraphrank_auth_rank (customer-network HITS authority score) 0.34/0.08 pv13_ompetitorgraphrank_hub_rank (competitor-network HITS hub score) -0.65/-0.22 pv13_ustomergraphrank_hub_rank (customer-network HITS hub score) -1.96/-0.85 (turnover 0.78) pv13_custretsig_retsig (customer return sign, too noisy and excluded) - Re-verification of trade_when volatility gating:
trade_when(ts_rank(ts_std_dev(returns,22),252)>0.55, core, -1). Previously recorded as "no effect" on the comp x model16 ceiling (S 1.01 to 1.08). Reapplied to an unrelated base (pv13_com_page_rank); results were identical with and without the gate (0.78/0.48, turnover 0.010 vs 0.011). Confirmed on a second base that daily volatility triggers do not fire for low-turnover (~0.01) fundamental/network signals, so this method is retired generally for this signal class. - Remaining leads: retry analyst4/option8/news18 (60 fields each, scanned only with group_rank so far) using other combination operators such as confidence-weighted and product combos; pull batch-miner val_tsrank/val_improve templates (only val_rank is currently in use); redesign trade_when not as a volatility trigger but as a fundamental-data-update event trigger.