F1 Commentary: A self-reflection from our agent across 2 opposite regimes

The qualitative side of F1 evals

At F1, we don't take things for granted

In late July, F1 returned +8.5% against the DJIA's +4.5% — +400 basis points of active return in less than 2 weeks. That's substantial for a systematic low-vol strategy. Meanwhile, six weeks earlier the same agent with the same book lost -156 bps over its favorite names. Active sector exposure is unavoidable in a small universe like the DJIA, but F1 strives to be regime-independent. So we set our fintel agent to reflect on itself to identify how our process could be improved.

Rotation out of AI/tech

Jun 1 – 17
-156 bps
F1 -0.75%·DJIA +0.81%

AI-monetization re-rating

Jul 23 – Aug 7
+400 bps
F1 +8.5%·DJIA +4.5%
01

Cumulative return of F1 vs benchmark (DJIA)

F1 vs DJIA — Rotation out of AI/tech, Jun 1 – 17

rebased to 1.0 at period start
-4.0%-1.7%0.6%2.8%06/0106/0306/0506/0906/1106/1506/17
F1DJIA

F1 vs DJIA — AI-monetization re-rating, Jul 23 – Aug 7

rebased to 1.0 at period start
-1.3%2.6%6.4%10.2%07/2307/2707/2907/3108/0408/0608/07
F1DJIA
02

Regime context

Jun 1-17 — Rotation out of AI/tech

A violent rotation out of mega-cap tech and into value, industrials, healthcare and financials. The DJIA rose ~0.8% while the Nasdaq fell heavily (June 5 alone: Nasdaq -4.2%). MSFT had its worst June since 2000; CRM fell 14 straight sessions on "SaaSpocalypse" fears. CAT re-rated to record highs on the AI data-center power thesis. The Dow's price-weighted, low-tech construction made it the rotation's natural beneficiary — exactly the sectors F1 was underweight.

Jul 23-Aug 7 — the AI-monetization re-rating

Microsoft's Q4 beat triggered the largest one-day market-cap gain for any U.S. company and paced the Dow's rebound. Oil slid as tensions eased, the Dow closed at a record, and it was the best week for all major indexes since April. Within the DJIA, tech/AI names led while industrials and energy lagged. F1's overweight to tech and its absence from industrials and energy aligned almost perfectly with this shape.

03

Agent score vs return

Score vs return — Rotation out of AI/tech, Jun 1 – 17

-29%-18%-7%4%16%period return-0.5600.56agent score (higher score = higher weight)AXPDISUNHGSNVDACATCRM

bubble size = active weight · color = added / detracted

added to alphadetracted from alpha

Score vs return — AI-monetization re-rating, Jul 23 – Aug 7

-9%2%13%23%34%period return-0.4900.49agent score (higher score = higher weight)MSFTCRMDISNVDACATGS

bubble size = active weight · color = added / detracted

added to alphadetracted from alpha
04

Deepdive samples

right call
Thesis was sound and played out.
right call, bad luck
Thesis was sound but only later played out.
bad call
Thesis was not sound.
bad call, good luck
Thesis was not sound but played out.
not attributable
Performance cannot be attributed to thesis.

MSFT

Jun:right call, bad luckJul:right call

Jun — Contribution: -48.1 bps

+0.35
score
+2.6%
active w
-17.7%
return

Jul — Contribution: +143.1 bps

+0.45
score
+4.7%
active w
+31.0%
return

Overarching thesis

  • PE compressed to a low percentile of its 12-month range while fundamentals accelerated = cheap = buy.
  • Same +0.35 / +0.45 thesis held across both regimes; the only open question was the timing of the catalyst that would re-rate it.

Verdict rationale

  • June: thesis was right, but the risks the agent itself flagged (capex $35B above consensus, FCF compressed to $15.8B, zero ERP vs the 10Y, operating margin compressing 48.9%→47.1%→46.3%) did not propagate into the score — a +0.35 reads as "these risks don't matter much", and the market disagreed violently. Tag: right call, bad luck.
  • July: the Jul 29 Q4 FY26 earnings beat ($90.01B rev, $4.74 EPS vs $4.25 est, Azure +43%, capex guidance held) was the dated catalyst the Jul 17 write-up explicitly flagged ("a clean quarter here could retrace a meaningful portion of the decline"). The 10% max weight was earned by score, not luck — MSFT's best month since Oct 2007. Tag: right call.

How could we improve

  • Risk-flag propagation: when risks are identified with no near-dated catalyst to resolve them, score lower (June); when a dated catalyst could resolve them, full weight is justified (July).
  • This is catalyst-conditioned risk weighting, not blanket risk aversion — preserve the trailing-valuation discipline that generated July's alpha.

NVDA

Jun:right call, bad luckJul:right call

Jun — Contribution: -64.1 bps

+0.45
score
+7.0%
active w
-8.8%
return

Jul — Contribution: +53.6 bps

+0.45
score
+7.7%
active w
+7.3%
return

Overarching thesis

  • +0.45 on strong fundamentals (Q1 blowout, Q2 guide $91B, buyback $80B) at a compressed 33x multiple.
  • Largest single active weight in the book (+7.0% June, +7.7% July) — sized by score, not by sector tilt.

Verdict rationale

  • June: a sector-level crowding unwind the agent itself flagged (BofA 73%-long-semis survey, four consecutive post-earnings declines). Fundamentals did nothing wrong; the further de-rating was a rotation event, not a thesis violation. Tag: right call, bad luck.
  • July: drifted up with the AI re-rating and hyperscaler capex confirmation (Alphabet $195–205B, TSMC >40% growth guidance), but lagged MSFT/CRM as the market stayed skeptical of extreme margins. A +7.7% overweight returning +7.3% vs DJIA +5.2% is a modest win, honestly scored as "strong fundamentals, capped conviction". Tag: right call.

How could we improve

  • No fix without becoming a momentum trader — the crowding unwind was flagged but not timed, and timing it would abandon the fundamentals-led discipline.
  • Preserve the honest scoring discipline: conviction was capped at +0.45 (not pushed higher on strong fundamentals) with the bear anchors (earnings yield 3.4% below the 10Y 4.68%, 74.9% gross margin sustainability) explicitly flagged.

CRM

Jun:right call, bad luckJul:right call

Jun — Contribution: -123.6 bps

+0.32
score
+4.2%
active w
-26.0%
return

Jul — Contribution: +89.3 bps

+0.30
score
+4.6%
active w
+22.8%
return

Overarching thesis

  • Trailing PE at the floor of its 1-year range = cheap = buy (+0.25 → +0.35 across both periods).
  • Franchise quality with explicitly flagged leverage ($25B debt-funded ASR / Informatica) keeping conviction below +0.5.

Verdict rationale

  • June: the agent raised CRM from +0.25 to +0.35 on June 5 into a 4.2% overweight, treating the AI-disruption question as an "open question" rather than the market's live thesis — a value-trap stance in a regime change (the trailing floor exists precisely because the earnings base is in question). Bailed out by the fear being temporary. Tag: right call, bad luck.
  • July: software-wide re-rating off MSFT's Jul 30 "AI is monetizing" signal plus a depressed base (trailing PE at the bottom decile of its 16.3–55.8x range after a ~33% drawdown), Agentforce ARR +205%, $1.6B VA contract (Jul 27). Evidence-driven updating (raising the score as the VA contract validated federal AI adoption) is exactly the right behavior; good PIT-leak hygiene on Jul 31. Tag: right call.

How could we improve

  • Soft guardrail: when trailing cheapness coincides with a live structural narrative, flag it and require an earnings-base durability check before sizing up.
  • Not a hard exclusion — the agent was right — but a check that would have caught it if the fear had been structural rather than temporary.

CAT

Jun:bad callJul:bad call, good luck

Jun — Contribution: -114.5 bps

-0.52
score
-11.2%
active w
+10.5%
return

Jul — Contribution: +51.1 bps

-0.41
score
-9.3%
active w
-5.9%
return

Overarching thesis

  • "PE 46.5x vs 20–25x historical implies 84–88% drawdown" → expensive → hard exclude (zero weight).
  • A pure historical-multiple mean-reversion call, amplified by CAT's 11.2% DJIA weight (price-weighted distortion at ~$940/share makes zero weight a massive active bet).

Verdict rationale

  • June: the agent acknowledged the AI-power secular thesis was real, then let valuation-pillar discipline veto it entirely while fundamentals accelerated (record $63B backlog +79% YoY, Power & Energy margin expansion, engine capacity tripling). When a multiple regime breaks for a structural reason, "expensive vs own history" stops being a usable signal. Tag: bad call (wrong on the merits, not just unlucky).
  • July: the agent called a full decoupling ("AI-power proxy trade has decoupled from fundamentals") on strong grounds (PE expanded 90–116% in 12 months, earnings yield 2.3–2.5% vs risk-free 4.6%+, QoQ OCF −50%, Baird downgrade Jul 29, insider selling). CAT fell −5.85% (biggest DJIA laggard), confirming direction — but our analysis finds the AI-power driver had only half-recovered by then, so the thesis overstated the deflation. Tag: bad call, good luck.

How could we improve

  • When a live structural narrative is re-rating a sector, "expensive vs own history" is not a usable signal — distinguish "fully decoupled" from "half-decoupled" and require a fundamentals-based case for how much of the driver is still alive before excluding on trailing alone.
  • For high-share-price DJIA components, treat exclusion as a large active bet requiring a higher conviction bar (or an explicit sector-level cap), rather than letting score-threshold mechanics make the bet implicitly.
05

Verdict — across both regimes

July's +400 bps was mostly earned; June's -156 bps was mostly bad luck. Names that worked in both directions of the rotation — JPM, AXP, CVX — were fundamental franchise-quality calls that weren't regime-dependent. CRM, MSFT, and NVDA shared the same mean-reversion thesis when we trust the company and its management — right calls once the catalyst arrived (MSFT's Jul 29 earnings, the software re-rating, the AI re-rating). June's -156 bps = ~236 bps of "right call, bad luck" (CRM -123.6, MSFT -48.1, NVDA -64.1) against one genuine bad call (CAT -114.5), partially offset by financials/energy wins. CAT was the only unsound thesis in both periods: June hard-excluded an industrial mid-structural re-rating (bad call); July called a full decoupling when the driver had only half-recovered (bad call, good luck). The trailing framework isn't regime-fragile — it fails narrowly when a structural narrative re-prices a sector, and the fixes below target that failure mode without sacrificing the discipline that generated July's alpha.

Agent — judgment improvements

Trailing-multiple guardrail in a live structural narrative (CAT, CRM)

When a structural narrative is re-pricing a sector, trailing-multiple percentile is not a usable signal in either direction — a cheap floor exists because the earnings base is in question (CRM), and an expensive ceiling exists because the driver has re-based the multiple (CAT). Fix: when a live structural narrative coincides with trailing cheapness or expensiveness, require an earnings-base durability check before sizing — and on the expensive side distinguish "fully decoupled" from "half-decoupled" with a fundamentals-based case for how much of the driver is still alive. CRM/MSFT were vindicated because the structural fear fully recovered; CAT was not because the driver was still alive.

Risk flags must move the score (MSFT)

MSFT's thesis was right (trailing cheapness, vindicated in July) — but in June the agent identified risks (capex vs FCF divergence, margin compression, zero ERP) and still scored +0.35. Fix: distinguish "risk identified, no near-dated catalyst to resolve it" (June — score lower) from "risk identified, dated catalyst could resolve it" (July — full weight justified). Catalyst-conditioned risk weighting, not blanket risk aversion.

Systematic process — framework & caps

Price-weighted benchmark cap (CAT)

CAT's 11.2% DJIA weight (price-weighted distortion at ~$940/share) meant zero weight was a -114.5 bps active bet made on trailing alone, via score-threshold mechanics. Fix: for high-share-price DJIA components, treat exclusion as a large active bet requiring a higher conviction bar — or apply an explicit sector-level cap on the active weight that can come from a single exclusion — rather than letting the threshold make the bet implicitly.