Specialist desks debate every name — then the system stress-tests its own verdict.
AtlasVector runs a multi-desk debate (an equity desk, a risk desk, a sell-side MD, and an adversarial RED-TEAM) that argues to a calibration-weighted verdict. Then the system runs a self-falsification gate on the consolidated verdict — re-deriving every number, binding every claim, and trying to break it — and returns ship / repair / block. The whole thing is sealed to a tamper-evident chain you can re-derive yourself.
How hard the agent attacks its OWN verdicts: ship/repair/block distribution + falsifications it caught in itself, over the sealed (audit-chained) house-verdict corpus — a self-attacked track record that cannot be retroactively fabricated. Real and labelled-synthetic boards seal to SEPARATE chains, published beside this; the rates above are computed over real boards only.
Rates are shares of the 51 REAL sealed boards the gate graded. 0 synthetic boards (offline council — its degenerate gate emits one outcome by construction) are excluded, as are 0 real boards nothing could grade.
Ship-rate 0% — 0 of 51 real graded boards; every board in this sample landed the same way.
the gate is live — the first cleared verdicts are pending
All 51 sealed boards were graded by gate revision 3.
51 sealed boards carry a gate outcome, 0 sealed before the gate recorded one, and 0 are real boards this read drops for a desk stance the transcript does not back. Every sealed board falls in exactly one of the three; the rates published here divide by the real graded boards alone — which, on this corpus, are exactly the boards carrying a gate outcome.
SEPARATE CHAINS Sealed house-verdict boards by chain. 51 real boards on the main chain; 0 labelled-synthetic boards on the separate synthetic chain, which links to its own tail and never lengthens the main one. 51 + 0 + 0 = 51 boards, the whole sealed corpus. A board is counted only where a sealed board row backs the seal event (its audit root is that event's chain hash), so this breakdown adds up to the population it breaks down and to nothing else. main chain tip 90cf5404f559…
How these numbers are computed — the grading gate, and the two conviction scales
Revision 3 refuses to SHIP a board nothing could grade: with no desk sentence bound to a recorded evidence channel the verdict is UNGRADED, and faithfulness is null rather than a 1.00 scored off the board's own summary sentence. It keeps revision 2's probes — a desk sentence graded against the evidence channel the transcript actually recorded (absent channel = unverified, never a catch), each desk's transcript stance cross-checked against its scored row (a turn that spoke without a comparable stance says so), and a board whose transcript carries no desk turns refused. Rows sealed before this stamp existed carry no revision and are reported as unstamped.
Agreement was divided by the whole panel, which charged abstention a second time after the net score had already priced it. Retired 2026-08; the house no longer stands behind figures on this scale, and they are not comparable to current ones.
Agreement is computed among the desks that took a direction; how much of the panel took one at all ships separately as participation. This is the rule the house currently stands behind. AUTHORED 2026-08-13, before every board in the graded record; it has itself priced all 12 graded boards forward, and none was sealed under the retired rule.
The conviction-scale split covers all 51 real-labelled sealed boards — the same population the published rates run on.
Did the calls work?
marked AS OF 2026-09-02ACCUMULATING Accumulating — 8 independent calls graded (12 sealed boards) across 2 entry sessions, worth 1.88 effective observations once same-session calls are discounted for sharing a tape. A hit rate needs 20 of each, so it is withheld; the per-call returns below are real.
5 of 8 graded calls landed inside one standard deviation of their own excess series over their own window — an outcome that size is a direction that landed, not a magnitude that distinguishes skill from the tape.
POLICY CHOICE The breadth multiplier is LINEAR BY POLICY CHOICE. The exponent was set to 1 because that reproduces a prior number — the 0.5% caps the superseded denominator happened to produce for the thin boards — and NO evidence supports linearity over a square, a square root or a step. It was authored 2026-08-14, 46 days after the 2026-06-29 session on which every call then graded had been entered — with those outcomes already visible to the author.
- 1 of 5 long calls landed, mean excess earned −0.37% — WITHHELD as a rate: this slice carries 1.92 effective observations of the 5 required — 5 calls spread over 2 entry sessions.
- 1 of 3 short calls landed, mean excess earned −1.08% — WITHHELD as a rate: this slice carries 3 independent calls of the 5 required and 1.8 effective observations of the 5 required — 3 calls spread over 2 entry sessions.
- The boldest call in the corpus, on the current rule — TSLA short at 41/100 — lost, −1.39% to the call.
- The 7 names the desks declined and did not call moved 1.77% mean absolute excess; the 8 names they did call moved 1.79% on the same basis. Both are unsigned magnitudes: reading either as a gain won or forgone would assume the direction was called right, and the rate that would license that assumption is withheld below the sample floor. The largest single move among them was AAPL at +4.07%. An abstention is counted, never graded: it is not a miss.
- 8 names (NVDA, MSFT, TSLA, GOOGL, MSFT, META, NVDA, TSLA) had boards take no direction while OTHER boards called the same name on the same session. The house called those names, so they are graded in the call ledger and excluded from the abstentions — one market move may carry one label, not two.
- -0.64% is the arithmetic mean of 8 realized call returns, not an expected return: they disperse 2.25pp about it, the median call is -0.83%, and dropping META alone moves it to -0.07%. On 1.88 effective observations no interval can be placed around it, so reading it as an expected return is withheld on the same floor that withholds the hit rate.
- Does conviction track outcome? Not yet measurable — the corpus carries 8 independent calls of the 20 required and 1.88 effective observations of the 20 required — 8 calls spread over 2 entry sessions; every call so far landed in conviction buckets 0-24, 25-49 — monotonicity is UNMEASURED, which is not the same as absent. Below the floor this is a NOT-MEASURABLE state, not a negative finding: no claim is made in either direction.
LOOK-AHEAD The rule the house stands behind was authored on 2026-08-13, before every board in the graded record: all 12 graded boards were sealed on or after that day, on 2 entry sessions, and priced by this rule before their outcomes existed. No conviction in this record was produced by a rule that could see the outcomes it is being judged on.
How this is graded, and what is excluded
Every sealed board with a directional stance, graded on the realized EXCESS return of its name vs the benchmark (a long call in a rising market is beta, not a call). The entry is a close printed AFTER the seal — never one that already existed when the board was sealed — and both legs are read on the same entry and mark sessions. Boards on the same name entered on the same session are ONE call, and calls entered on the same session are discounted for sharing one tape: a rate needs both enough independent calls and enough EFFECTIVE observations, and it ships with a Wilson interval computed on the effective count and only as many decimals as that sample supports. Conviction buckets are cut on the figure re-derived from each row's own sealed desk stances under the rule the house stands behind today, with the sealed figure published beside it. Synthetic boards never enter and are counted as a stated exclusion, as is any name with no usable price history. This measures the desks' calls — it is separate from the self-falsification record, and it is published whichever way it comes out.
Independence. 12 sealed directional boards resolve to 8 independent calls (boards on the same name entered on the same session are ONE call), spread over 2 entry sessions and worth 1.88 effective observations. Calls entered on one session share one tape, so every rate below is floored on the EFFECTIVE count, not the call count. Calls entered on the same session are treated as perfectly correlated (they share one tape). That is the worst case, so the true effective count lies between this figure and the nominal call count: the discount can only under-claim. Computed as effective observations = 1 / Σ(share of calls per entry session)² — the Kish count for a size-weighted rate.
Conviction basis. Calibration is graded on the conviction RE-DERIVED from each sealed row's own desk stances under the rule the house stands behind today, not on the figure the row was sealed under — grading a rule the house has superseded would measure nothing anyone is standing behind. The sealed figure ships beside it, and the record counts how many rows moved (superseded), already agreed (current), or reconcile to neither rule (unreconciled). Sealed bytes are re-read and re-labeled, never rewritten.
The conviction scale. Revision 2 divides agreement by the desks ELIGIBLE to agree, not by the whole panel — abstention is priced once, in the net score, instead of twice — and publishes participation beside the figure instead of folding it in. Revision 1 figures are not comparable to revision 2 figures and are never mixed into one rate. A board whose revision cannot be determined from its stamp or its own sealed desk stances is reported unreconciled, not assigned one. Revision 2 was AUTHORED 2026-08-13, before every board in the graded record; it has itself priced all 12 graded boards forward, and 0 of 12 graded boards are superseded rows re-derived at the read. Computed as |net score| x (desks on side / desks eligible to agree) x mean on-side calibration weight.
Board and call. A call is every sealed board on this name entered on the same session, counted once. Its conviction is the arithmetic mean of those boards' current-rule figures — and so is the sealed figure printed beside it — so neither will equal any single board's number. The boards themselves are published unchanged. A call over a single board carries that board's figure exactly and is marked with nothing.
Names not called. Boards that took no direction on names the house did not otherwise call that session. Counted, never graded — an abstention is not a miss. The ledger is DISJOINT from the calls on the same (name, entry session) key: a neutral board on a name other boards called is booked to the call ledger only, so one market move never carries two labels; those names are listed as also-called rather than dropped. The mean is over INDEPENDENT abstentions (one name, one session = one abstention), the same denominator the hit rate uses, and the per-board figure ships beside it. It is a mean ABSOLUTE move — a magnitude, not a forgone gain — over a handful of correlated names, so it carries no interval and is never set against a signed return.
One basis. how far the names moved against the benchmark, unsigned — a magnitude, not a gain. Both sides are computed on ONE measure — mean absolute excess return vs the same benchmark over the same window. This record previously set the abstentions' mean ABSOLUTE move against the calls' mean SIGNED return and called the difference a cost; that comparison implies a direction accuracy of 1.0, which is precisely the figure this panel withholds. No cost is claimed here, and no gain is attributed to a move nobody positioned for.
Sized through the gate. Each call is sized through the SAME capital gate the enforcement path runs: the conviction-band cap scaled by the board's panel participation, averaged across the boards in the call. No falsification escalation and no calibration trim is applied — those need live state this record does not re-create, so the permitted size here is an UPPER bound on what the gate would have allowed. The breadth multiplier is a POLICY CHOICE, stated in full beside this figure; a different curve would move the weighted figure and nothing in this record can say which curve is right.
Breadth is policy, not a measurement. The breadth multiplier is LINEAR BY POLICY CHOICE. A 1-of-4 board is permitted exactly a quarter of what a 4-of-4 board is permitted at the same conviction because the rate is applied to the first power — not because anything measured that a quarter is right. A square, a square root or a step would all be defensible; calibrating between them needs realized outcomes bucketed by participation, and the graded record stands at 8 independent calls on 2 entry sessions. Treat the curve as policy, not as a finding. Applied as permitted = the conviction band cap x the share of the panel that took a direction.
Where the exponent came from. Chosen for continuity — it returns the thin boards to the caps they carried under the superseded conviction denominator. Calibrated to reproduce the caps the superseded whole-panel conviction denominator produced for the three 1-of-4 boards (0.5% of book).
Observation, not expectation. A rate is an inference and is withheld below the floor. The mean of the realized returns is an OBSERVATION, and every return it averages is published per call in this same record — so withholding the average would not take it out of circulation, it would hand a reader an unqualified figure computed in their own head with none of this beside it. What is withheld is the EXPECTATION reading: no interval is printed until the effective observation count clears the floor the hit rate clears, and until it does, the dispersion, the median and the leave-one-out mean ARE the qualification the figure ships with. Dispersion here is across the calls; the noise scale measures each call against its own window, and the two answer different questions.
The scale. the standard deviation of this call's daily excess return over its own graded window, scaled up to the length of that window. Sigma is measured on the SAME bars the return is measured on — realized, not modelled, not annualized from elsewhere. It is a scale for reading one return, never a significance test: 8 calls on 2 entry sessions cannot support one.
The floor. At the observed accrual (1.1429 independent calls and 0.2857 entry sessions per day) the floor is at least 63 days away — a LOWER bound, because effective observations can sit below the entry-session count.Effective observations can never exceed entry sessions, so clearing the 20-effective floor requires at least 20 distinct entry sessions. Any projection here is therefore a LOWER bound on the time to a publishable rate.
- conviction 0-24 — 1 of 4 right, mean excess −0.40%, rate withheld — this slice carries 4 independent calls of the 5 required and 2 effective observations of the 5 required — 4 calls spread over 2 entry sessions
- conviction 25-49 — 1 of 4 right, mean excess −0.88%, rate withheld — this slice carries 4 independent calls of the 5 required and 1.6 effective observations of the 5 required — 4 calls spread over 2 entry sessions
- excluded — GOOGL: no close has printed since the seal — the window has not been observed yet
- excluded — NVDA: no close has printed since the seal — the window has not been observed yet
marked 2026-09-02 · benchmark SPY · first close printed strictly after the seal instant — never a price that existed when the board was sealed
- Mark Rule
- the latest session BOTH the name and the benchmark have finished — finished meaning the tape has stopped printing for it (20:00 New York), not merely that the bell has rung, because a day print keeps absorbing late trades after the close. A session still trading is never marked, so two reads inside one session return the same figures: a close does not move
- Return Rule
- excess = name return − benchmark return over the same sessions; a short is right when the excess is negative
- Sample Rule
- rates are computed over independent calls, keyed by (name, entry session)
- Abstention Rule
- the abstention ledger is DISJOINT from the call ledger on that same key — a neutral board on a name other boards called that session belongs to the calls, and is listed as also-called rather than counted twice
- Comparison Rule
- abstained and called names are compared only on ONE basis (mean ABSOLUTE excess). A magnitude is never set against a signed return and never called a cost: that would assert a direction accuracy this record withholds
- Independence Rule
- a rate needs 20 independent calls AND 20 effective observations — calls entered on one session share one tape and are discounted for it, so twenty names on one day never clear the floor
- Interval Rule
- every published rate carries a 95% Wilson score interval computed on the effective observation count; computing it on the nominal count would narrow the band by exactly the design effect
- Precision Rule
- a rate is printed to the decimals its sample supports (a 20-observation rate resolves to 5 percentage points, so it prints to whole percent) — hits and n always ship, so the exact ratio is recoverable
- Conviction Rule
- conviction buckets are cut on the figure RE-DERIVED from each row's own sealed desk stances under the rule the house stands behind today, never on a superseded sealed figure; the sealed figure ships beside it
- Sizing Rule
- the weighted return sizes each call through the capital gate — conviction-band cap x panel participation — and the equal-weight figure it is set against is recomputed over the SAME sized calls, never over a larger set
- Noise Rule
- every call carries the realized sigma of its own daily excess series over its own window; a return inside one sigma is a direction that landed, and is reported as such rather than as a magnitude
- Mean Rule
- the mean call return carries the same discipline as a rate: its cross-sectional dispersion, its median and the mean without the single call that moves it most all ship beside it, and reading it as an EXPECTED return is withheld until the effective observation count clears the same 20 floor the hit rate clears
- Split guard
- a session move above 1.8x or below 0.55x inside the window excludes the name — unadjusted bars would read a split as a return
I'll pull the fundamentals, valuation, catalysts, and recent filings to form an independent view.
VERDICT: constructive (equity desk stance: long-bias)
- Valuation reasonable for quality: MSFT P/E TTM 27.7 vs peer median ~56; P/OCF 20.2, EV/FCF 56.5 — cheapest among mega-cap software ex-ORCL. Multiple already re-rated from ~37x → 27x per Fool 2026-08-26.
- Best-in-class profitability: Op margin 46.7% and net margin 40.3% top the peer set. ROIC 26.5%, ROA 19.4% — quality intact.
- Earnings trend positive: 4 straight beats through FY26 Q4 (EPS 4.74 vs 4.33 est, rev $90.0B vs $89.4B, 2026-07-29, get_earnings). Next print 2026-10-27, est EPS 4.82. FY26 net income +31% YoY to $133.7B (news 2026-08-26).
- Price action lagging fundamentals: 52w return −2.5% despite EPS growth — de-rating already absorbed.
- What breaks it: $175B calendar-2026 capex now exceeds operating income (Fool 2026-08-26); if Azure growth decelerates below ~30% or AI monetization slips, FCF compression forces further multiple cut. Also watch NVDA-priced server cost +15% flow-through to FY27 margins.
- Gap: get_fundamentals_history returned empty — margin trend not directly verifiable from that tool; leaned on news-reported prints.
I'll pull the core data to red-team any bull case on MSFT.
VERDICT: reconsider
Red-team opening on MSFT @ $495.94 (2026-08-27):
- Capex-to-op-income inversion is the fat tail. $175B calendar-2026 capex now *exceeds* operating income (Motley Fool, 2026-08-26); multiple has already compressed 37x→27x with mkt cap down 4.5% YoY despite +31% net income. Bull case requires Azure monetization to outrun depreciation cliff hitting FY27. That's not a given.
- Competitive erosion at the top of the stack. Google Cloud accelerated to +82% YoY in Q2'26 vs. Azure's ~$100B run-rate at slower growth (Motley Fool, 2026-08-25). Azure premium narrative is under active attack.
- Cost input shock. AI server prices rising >15% for early-2027 shipments on memory (Bloomberg via Fool, 2026-08-26) — hits MSFT's unit economics directly and it's not in consensus.
- Tape is stalled, not trending. 20-day range 478–506 with last close 491.71 → +0.86% pop today into resistance. No breakout; consolidation under $506 (2026-04 high).
- No K1/K2/K3/K4/K5 kill trigger. Earnings 2026-10-27 = 61d out. Thesis survives hard rules.
Break-it signal: reclaim of $506 on volume kills short bias; loss of $478 confirms distribution.
Instead: pair long MSFT vs. short a higher-multiple hyperscaler peer to neutralize capex-cycle beta.
VERDICT: constructive-but-trim-if-crowded
Public scope: no account, book, or venues behind this consult — position sizing and portfolio-fit rules cannot be evaluated. Assessing MSFT's standalone risk.
- Tape is firm, not euphoric: MSFT $495.94, +0.86% vs SPY +0.02% and QQQ +1.27% (as_of 2026-08-27T02:19Z, get_quote). Session range $487.31–$497.40 — a ~2% intraday swing; realized single-day vol is contained.
- Signal stack skews long, not unanimous: 4 BUY (levels, rsiTrend, momentum, relStrength), 5 HOLD, 1 SELL (macd) on the graded signal_calls (query_entity_graph links). Momentum intact, but MACD divergence is the tell that would break first.
- Concentration risk for any book: MSFT at ~$3.7T mcap correlates ~0.8 with QQQ; a full-size add on top of existing mega-cap tech exposure would push single-name and factor concentration hard — the rule "top concentration >30%" is the live tripwire.
- What breaks the view: loss of $487 session low on volume, macd SELL confirmed by trend flip, or QQQ rolling while MSFT fails to hold relative strength.
VERDICT: hold — leaning constructive, but crowded.
- Tape/frame: MSFT $495.94 (+0.86%, 2026-08-27 via get_quote), $3.65T cap. FY26 Q4 beat: EPS $4.74 vs $4.33e, rev $90.0B vs $89.4B. Next print 2026-10-27 — 61 days out, inside the institutional window.
- Positioning read: Crowded mega-cap core. XLK is *lagging* the tape (30d momentum −174bps, RS 97.1 vs SPY; get_sector_rotation) while leadership rotates to XLE/XLV/XLF. MSFT is being held, not chased.
- Flow read: Insider tape is one-way distribution — 180d net −$22.8M, zero buys, 7 sells, and a 3-insider sell cluster May-Jun (Althoff, Numoto, Hogan). Althoff most recent: −10,000 sh @ $487.89, 2026-08-05. Not panic, but no C-suite conviction bid.
- Filings clean: 10-K filed 2026-07-29, 8-K = earnings release only. No 13D/G, no M&A item. Fund-level 13F concentration not available for this name right now.
- What breaks it: Azure growth deceleration on the Oct-27 print, XLK quadrant deteriorating further (RS <95), or a fresh insider sell cluster above $500. Upside break: XLK rotates back to leading and MSFT reclaims prior highs on volume.
Desk stance: hold — accumulate only into weakness sub-$470; distribute strength above $520 pre-print.
I'll pull the fundamentals surface myself before cross-examining.
VERDICT: constructive (accumulate into weakness, don't chase)
Cross-exam of peers:
- RED-TEAM overstates multiple compression risk. MSFT P/E TTM 27.66 sits *below* peer median (NOW 78.8, FTNT 56.4, PANW 383; compare_with_peers, 2026-08-27). EV/FCF 56.5 is mid-pack, not stretched. The "37x→27x compression" red-team cites is a *de-rating already done*, not a fresh headwind.
- SELL-SIDE-MD's crowding read is fair but under-weights quality. MSFT op margin 46.73% and net margin 40.31% are *rank 1.00* in the peer set. ROIC 26.5% dwarfs ORCL 11.2%, NOW 11.0%. This is the quality premium the tape is paying for.
- Earnings cadence is a 4-for-4 beat streak — FY26 Q1–Q4 EPS actual > estimate every quarter, Q4 +9.5% beat ($4.74 vs $4.33e; get_earnings). Next print 2026-10-27, 61d out — outside compliance blackout.
- Fundamentals history tool returned empty for MSFT — cannot verify FCF trend or capex/OI inversion claim independently. That gap is real; red-team's capex thesis is unfalsified here.
- Balance sheet clean: D/E 0.24 (rank 0.96), current ratio 1.23.
What breaks it: Azure decel on Oct-27 print, capex/OI inversion confirmed in FY27 guide, or loss of $478 with peer-set multiple compression resuming.
I'll verify the key claims before ruling.
VERDICT: reconsider
Peer numbers largely check out — but the "constructive" framing understates two tapes.
- K1 not triggered: MSFT prints 2026-10-27, 61 days out — no earnings-window kill. Next print EPS est 4.82 vs prior 4.74 actual — bar is raised.
- Equity peer's "reasonable valuation" is spun: 27x TTM on a $3.65T name where $175B calendar-2026 capex now exceeds operating income is not "cheap" — it's a name whose FCF denominator is actively compressing. The re-rate from 37→27x is the market pricing that in, not an entry point.
- Sell-side-MD's insider tape is the strongest signal in the pack and equity ignored it: 180d net −$22.8M, 7 sells / 0 buys, Althoff selling at $487.89 on 2026-08-05 — MSFT at $495.94 is *above* the most recent insider exit. That's distribution into strength.
- Tape divergence today: MSFT +0.86% while QQQ +1.27% — mega-cap tech leader *underperforming* its own index on an up day. Risk desk's "firm tape" reading is generous.
- Invalidation the desk watches: loss of $487 session low on volume, or Azure growth sub-30% on Oct-27 print. Above $520 pre-print = distribute, not chase.
- Lower-variance alternative: XLK basket over single-name MSFT, or wait for sub-$470 accumulation zone the sell-side desk flagged.
VERDICT: caution — public-scope risk read on MSFT, not a book view.
Public scope: no account, venue, or position behind this consult — account tools withheld. Concentration/beta-tilt rules can't be evaluated; assessing the name's own risk only.
Cross-examination of peers:
- Equity desk under-weights the capex/op-income inversion they themselves flagged. $175B '26 capex > op income is a durable FCF risk, not a footnote — it caps the "cheap at 27x" argument (Fool, 2026-08-26, cited by peers).
- Sell-side MD's "hold, accumulate <$470" ignores realized-vol asymmetry: 20d range 478–506 (~5.8%) is tight; a break of $478 on an Azure miss 61d out (earnings 2026-10-27) is a gap-risk event, not a scale-in.
- Red-team is directionally right on GOOGL competitive pressure — GOOGL −1.14% to $343 today doesn't refute the +82% cloud growth data.
- Tape today: MSFT $495.94 +0.86%, XLK +0.61%, SPY +0.02% — MSFT leading a lagging sector into resistance ($506). Low-quality bid.
Break-it: Azure sub-30% print 10-27, or loss of $478 on volume. Upside invalidation: $506 reclaim.
I'll pull the positioning + flow data before cross-examining the peers.
VERDICT: hold (leaning underowned on weakness)
Positioning read: Insiders net sellers 12 of last 12 months — d365 net −$123.7M, d90 net −$17.3M, d30 net −$7.3M. Recent cluster: Althoff, Numoto, Coleman selling May-Jun 2026. No buyers of size since Stanton's $2M (2026-02-18). Not a red flag on a $3.7T cap — it's programmatic — but there is zero insider conviction bid. 13F holder detail not available for this name right now.
Flow read: XLK is *lagging* — 14d momentum −174bps vs SPY, RS 97.1, flow score −0.70. Money is rotating to XLE, XLV, XLF. MSFT +0.86% today into a heavy tape (QQQ +1.27%) is underperformance, not leadership.
Cross-examination:
- Equity desk understates the sector headwind — tech is not receiving flow.
- Red-team overstates the kill case; no 13D, no 8-K item 2.02 surprise, 10-K clean (2026-07-29), earnings 61d out.
- Risk desk's MACD tell is consistent with XLK lagging quadrant.
Desk stance: patient. Buyer of MSFT into the $478 shelf; not chasing $497 with the sector lagging. Break: XLK flow score turning positive OR loss of $478 on volume.