---
title: "The Analyst Desk: 85 Points of Fact, ±13 of Feeling, One Dead Cron"
date: 2026-08-27
description: "E12: the shut-down analyst desk — six agents, four signal layers, a score of 85% fact plus ±13 of feeling, and dual-source gates that verified 29/29 points."
category: "AI & Compute"
tags:
  - "One Man One Legion"
  - "AI Agents"
  - "Multi-Agent Systems"
  - "Stock Analysis"
  - "Automation"
verifiedHardware: "Workstation openclaw workspace · evidence = US_STOCK_ANALYSIS_SOP.md (V4.1a, 2026-06-21), skills/sec-filing-monitor (MULTI_AGENT_FRAMEWORK_SUMMARY.md V2.0, 2026-03-16; STRESS_TEST_REPORT_20260314.md 10/10; v4_stress_test_report.json 26 pass / 4 warn / 0 fail, 2026-06-17), STOCK_REPORT_PRESSURE_TEST.md (9 sources, 2026-03-13), filings/US (49 files, 13 tickers) vs config/companies_mvp.json (14 companies, 5+5+4), wechat-editor-team/daily stock artifacts (4 analysis html + 6 push records + 3 verifications, 2026-06-17 to 07-20), cron jobs.json (US-stock job last run 2026-07-23, error, disabled) · counted 2026-08-27 · timestamps Asia/Shanghai"
keyTakeaways:
  - "The desk's score engine split a stock rating into 85 points of fact — financials ×35%, industry ×25%, quant ×25%, each with its own factor tree — plus a correction envelope of ±13 (peers ±5, news ±5, community ±3). The stress test T9 confirmed the weights sum to 0.85, leaving 15% for corrections; T11 pinned the envelope at +13/-13 (85→98 clamped to 100, or down to 72)."
  - "Feeling was caged by consensus thresholds: a Reddit post counts as high-signal only at ≥100 upvotes, ±3 score movement requires multiple subreddits plus HN agreeing, and a single-source viral post is annotated but never moves the score. Asymmetry was deliberate — extreme-negative news hit the -5 floor in testing while extreme-positive only earned +3, with the harness itself flagging 'could be more aggressive'."
  - "Every number that reached readers passed a verification gate the SOP marks as unskippable: it evolved from dual-round re-pulls (29/29 data points, 0 errors on June 17) to claimed-vs-actual ledgers to dual-source cross-validation against yfinance × Sina quotes for 7 tickers. The desk is now dark — its cron last ran July 23 and exited with an error — leaving 4 analysis posts, 6 push records, and a filings library of 49 files under 13 tickers against a 14-company config."
measuredOn: 2026-08-27
faq:
  - q: "Why did the analyst desk get shut down?"
    a: "Its cron job — a Monday-to-Saturday 07:00 run — last executed on July 23, 2026 and ended in an error, part of the same contraction that took 22 cron entries down to 4 (see Episode 19). The workspace keeps the full apparatus: the SOP, the six-agent framework, three generations of verification records, and the filings library. A shut-down line with its instrumentation intact is cheaper to restart than to rebuild."
  - q: "How is this different from just asking a chatbot about a stock?"
    a: "Three structural differences. Sources are layered and labeled: yfinance and SEC EDGAR are treated as fact, Reddit/HN/Polymarket explicitly as opinion, with a written citation format for each. The score arithmetic is fixed in the SOP and verified by its own stress suite — including edge cases like BRK.B tickers and concurrent runs of 7 tickers in 4.7 seconds. And nothing ships without the data-verification gate returning exit code 0."
---
*[Episode 12 of One Man One Legion](/posts/2026-08-27-one-man-one-legion-fleet-audit/) — sixth stop in the workshops arc, after [the text factory](/posts/2026-08-27-one-man-legion-ep9-text-factory/), [the quality gate](/posts/2026-08-27-one-man-legion-ep11-quality-gate/), [the video workshop](/posts/2026-08-27-one-man-legion-ep7-video-workshop/) and [the pen-name rack](/posts/2026-08-27-one-man-legion-ep10-pen-names/). This one is a ruin: the fleet's analyst desk is the only workshop that got switched off.*

Every other workshop in this series is still warm. The analyst desk is not. Its cron job — "US stock analysis, 07:00, Monday to Saturday" — last ran on July 23, 2026, exited with an error, and went dark in [the great contraction](/posts/2026-08-27-one-man-legion-ep19-cron-contraction/). What it left behind answers a question none of the other workshops face: **when a legion of AI agents rates a stock, how many points of the score come from fact, and how many from feeling?**

The desk's answer was an architecture: 85 points of fact, at most ±13 of feeling, and a gate under both.

## Four months from pressure test to production

The desk started, like everything in this fleet, with a refusal to guess. On March 13, 2026, a nine-source pressure test probed where financial data actually comes from: SEC EDGAR returned 403 until the request declared a User-Agent; Singapore's SGX sat behind Akamai with no solution at five stars of difficulty; China's CNINFO was reachable but needed HTML parsing. Two days later a monitoring MVP passed 10/10 tests — RSS parsing, deduplication, a bulk insert of 100 records in 0.00 seconds, 5 concurrent instances. By March 16 the six-agent framework was declared production-ready: a Lead agent over Monitor, Delivery, and three parallel analysts (financial, industry, quant), with shared memory and a five-star rating map — 85–100 strong buy, down to 0–39 strong sell.

## The formula: 85 fixed, ±13 movable

The score engine, fixed in the V4 SOP of June 21, is arithmetic rather than vibes:

| Layer | Weight | What lives inside |
|---|---|---|
| Financial health | 35% | 8 factors: revenue growth 15, profit growth 15, net margin 12, gross margin 10, FCF 12, leverage 12, cash-flow quality 12, ROE 12 |
| Industry strength | 25% | rank percentile 30, growth rank 25, cycle 25, size 20 |
| Quant quality | 25% | base 70 + trend/CAGR/analyst/PEG adjustments |
| Corrections | ±13 | peers ±5, news ±5, community ±3 |

The stress suite verified its own arithmetic: one test confirmed the three weights sum to 0.85 — exactly 15% left for corrections — and another pinned the envelope, 85+13=98 clamped at 100, 85−13=72. On real tickers the corrections stayed small and one-sided: six mega-caps earned news adjustments of +3, +1, +2, +2, 0 and 0, while an extreme-negative scenario hit the −5 floor immediately and the extreme-positive case managed only +3, with the harness annotating — in a note it wrote about its own scoring — that the positive side deserved to bite harder. Bad news outweighs good by design.

## The cage around feeling

The correction layer is where the desk did its most careful engineering. Community sentiment could only touch the score on consensus: a Reddit post qualifies as high-signal at 100+ upvotes, ±3 movement requires multiple subreddets and Hacker News agreeing on direction, Polymarket divergence is worth ±2 — and a single viral post from one source is *annotated but never scores*. Fact and opinion were separated in writing: yfinance numbers are facts; Reddit and HN are opinions, cited with subreddit, username, and upvote count. When news said −5 and community said +3, the suite's conflict test ruled −2: news outranks mood.

## The gate under the numbers

Every number that reached readers passed a verification step the SOP marks "automatic, cannot be skipped," exit code 0 or nothing ships. Its three surviving generations show it evolving: June 17 re-pulled all 29 data points in a 29/29 pass with 0 errors; June 27 logged claimed-vs-actual pairs line by line (NVDA close 192.53, −1.64% day, −8.62% week — every pair equal); July 12 upgraded to dual-source cross-validation, checking 7 tickers against yfinance and Sina quotes independently.

On top of the gate sat a voice: a July 19 style guide transcribed from a human analyst's formula — empathy hook, suspense, surprise answer, plain-language metaphors, explicit verdict — banning price numbers from the first paragraph. Its first product shipped July 17: "Four Ways to Die," a 5,290-character piece on one chip crash killing Asian markets while only tickling America.

## An honest inventory

The ruin counts cleanly: 4 analysis posts, 6 push records (June 29 to July 20), 3 verification files, a filings library of 49 files under 13 tickers — against a 14-company config where AMAT and Enphase were listed but never downloaded, and Apple sits on disk but off the list. The A-share picker exists only as a row in the March pressure test. The four WARN items in the final stress run name the fragility plainly: one ticker got zero news when SearXNG hiccupped, and an old table was missing columns.

A desk that scores 85 points of fact, cages ±13 of feeling, and gates every number — and still ends up dark — is not a failed workshop. It is a complete one, waiting.

*[Next in the fleet: the audio workshop. Back to the anchor, **[One Man, One Legion](/posts/2026-08-27-one-man-one-legion-fleet-audit/)**.]*

*[All measurements above were taken read-only from the workstation workspace on 2026-08-27; the evidence trail lives in the SOP, stress-test JSON, verification records, and cron state cited in the frontmatter. The Telegram group identifier and push credentials are deliberately absent.](/posts/2026-08-27-one-man-one-legion-fleet-audit/)*
