Skip to content
SIGPULSE
AI & Compute 4 min read raw .md ↗

The Analyst Desk: 85 Points of Fact, ±13 of Feeling, One Dead Cron

● PROOF OF EXECUTION 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 · Tested 2026-08-27 · Configs published for replication

Key Takeaways — Executive & AI Summary

  • 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.

Episode 12 of One Man One Legion — sixth stop in the workshops arc, after the text factory, the quality gate, the video workshop and the pen-name rack. 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. 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:

LayerWeightWhat lives inside
Financial health35%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 strength25%rank percentile 30, growth rank 25, cycle 25, size 20
Quant quality25%base 70 + trend/CAGR/analyst/PEG adjustments
Corrections±13peers ±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.]

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.

FAQ — Direct Answers

Why did the analyst desk get shut down?
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.
How is this different from just asking a chatbot about a stock?
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.