---
name: parallax-ai-consensus
description: "Runs all installed Parallax AI Investor Profiles (Buffett, Greenblatt, Klarman, Soros, PTJ) against a single ticker or short basket (cap 5). Returns the per-profile verdict matrix, the super-majority consensus signal per consensus-config.md, and a factor-level agreement detail showing which factors/criteria were flagged by multiple profiles. Cross-profile agreement is the strongest-agreement signal. Third-person framing throughout, AI-inferred from public information. NOT financial advice. NOT personalized. NOT for a single investor profile only (use /parallax-ai-buffett etc.). NOT for portfolio-level health check (use /parallax-portfolio-checkup)."
---

<!-- white-label: integration-pattern.md -->

# Parallax AI Investor Profiles — Consensus Meta-Skill

## When not to use

- Single profile only → use /parallax-ai-buffett, /parallax-ai-greenblatt, /parallax-ai-klarman, or /parallax-ai-soros
- Broader macro outlook → use /parallax-macro-outlook
- Portfolio analysis → use /parallax-morning-brief or /parallax-portfolio-checkup
- Full due diligence → use /parallax-due-diligence
- Running backtests → use /backtest

## Gotchas

- JIT-load _parallax/parallax-conventions.md, profile-schema.md, output-template.md, consensus-config.md
- JIT-load ALL installed profile specs under _parallax/AI-profiles/profiles/ — buffett.md, greenblatt.md, klarman.md, soros.md, ptj.md
- Do NOT re-implement profile logic — invoke each profile dispatcher's workflow as documented in skills/parallax-ai-<name>/SKILL.md
- Cap basket input at 5 tickers per call. For single-ticker queries, all 5 profiles are applicable (Soros and PTJ run single-ticker dual/tri-channel modes)
- Super-majority math uses ceiling rounding per consensus-config.md — required = ceil(0.75 × applicable)
- Partial matches do NOT count toward the super-majority signal but DO count toward factor-level agreement surfacing
- Factor-level agreement is the highest-value section — do not skip it
- Disclaimer verbatim; use umbrella phrasing "Parallax AI Investor Profiles framework" rather than any single investor name
- If a profile fails (cross-validation, timeout, missing data) mark as `skipped` and continue with remaining profiles
- INSUFFICIENT_PROFILES if applicable count < 3 (per consensus-config.md minimum_applicable_count)
- JIT-load `_parallax/white-label/integration-pattern.md` before the Pre-Render step. Loader call is `load_visual_branding()` (7-key visual subset; voice structurally excluded — `branding["voice"]` raises `KeyError`). Apply §5 (Branding Header) and §7 (About This Report) in Output Format.

Runs all installed AI Investor Profiles in parallel against a ticker (or short basket), aggregates the verdicts, computes the super-majority consensus signal, and surfaces factor-level agreement detail.

## Usage

```
/parallax-ai-consensus AAPL.O                         # single ticker — all 5 profiles run
/parallax-ai-consensus BRKb.N,KO.N,AXP.N              # basket mode — cap 5 tickers
/parallax-ai-consensus --only buffett,greenblatt AAPL # subset (rare; min 3 still required)
```

## Workflow

### Step 0 — JIT-load dependencies

1. `_parallax/parallax-conventions.md`
2. `_parallax/AI-profiles/profile-schema.md`
3. `_parallax/AI-profiles/output-template.md`
4. `_parallax/AI-profiles/consensus-config.md`
5. ALL installed profile specs:
   - `_parallax/AI-profiles/profiles/buffett.md`
   - `_parallax/AI-profiles/profiles/greenblatt.md`
   - `_parallax/AI-profiles/profiles/klarman.md`
   - `_parallax/AI-profiles/profiles/soros.md`
6. Each profile's dispatcher (`skills/parallax-ai-<name>/SKILL.md`) for workflow reference.

Call `ToolSearch` with query `"+Parallax"` to load deferred MCP tool schemas before the first Parallax call.

### Step 1 — Parse input

- Single ticker → **single-ticker mode**, 5 profiles applicable
- Comma-separated list of 2-5 tickers → **basket mode**
- > 5 tickers → reject: "Consensus skill takes at most 5 tickers per call. Please split your request."
- Optional `--only <profile1>,<profile2>` flag restricts which profiles run (minimum 3 still required for a valid consensus signal)

### Step 2 — Run all applicable profiles in parallel

For each installed profile, execute its workflow per its dispatcher:

- **Buffett** — `get_company_info` + `get_peer_snapshot` + `get_financials(statement=summary)` + `get_score_analysis` + apply 4 factor thresholds. DO NOT pass `weeks=52` explicitly — server default is correct; explicit numeric parameters fail with MCP serialization errors.
- **Greenblatt** — `get_company_info` + `build_stock_universe` (sector-scoped peer universe) + `get_financials(statement=ratios)` for top-30 peers + rank. Universe query MUST be sector-scoped (broad queries time out).
- **Klarman** — `get_company_info` + `get_peer_snapshot` + `get_financials(statement=balance_sheet)` + `get_financials(statement=cash_flow)` + `get_financials(statement=ratios)` + 4 balance-sheet checks. DO NOT pass `periods=4` explicitly — server default is correct.
- **Soros** — `list_macro_countries` + `macro_analyst(component=tactical) × N` + `get_telemetry` + `get_company_info` + `build_stock_universe` per theme + dual-channel exposure check (Channel A has two sub-paths: universe membership OR sector/industry match; `get_telemetry` may return `UNAVAILABLE` in current env).
- **PTJ** — `list_macro_countries` + `macro_analyst(component=tactical) × N` + `get_company_info` + `get_score_analysis` + `get_technical_analysis` + `get_stock_outlook(aspect=risk_return)` + `get_peer_snapshot` + tri-channel conviction evaluation (Technical setup, Macro regime, Volatility asymmetry).

**Cross-validation gate — use the correct field name per tool:** `get_peer_snapshot` returns the target company as `target_company` (top-level), NOT `name`. Cross-check against `get_company_info`'s `name` field.

Profiles run IN PARALLEL where their tool sequences don't share dependencies. Do NOT sequentialize — the whole point is independent cross-profile execution.

Each profile returns:
- `verdict`: `match` | `partial_match` | `no_match` | `skipped`
- `verdict_detail`: e.g., "3 of 4 factor criteria met" | "top 15% of peer universe" | "both channels flagged"
- `factor_flags`: dict of factor/criterion → `FLAGGED` | `NOT_FLAGGED` | `NOT_APPLICABLE`
- `fallback_notes`: any graceful fallback that affected the result

### Step 3 — Cross-validation gate (each profile self-checks)

Each profile runs its own pre-render cross-validation per `profile-schema.md §2 Step 2`. If ANY profile refuses to render due to name mismatch, the meta-skill emits:

```
Warning: Profile <name> refused to render for <ticker> due to cross-validation failure. This profile is marked as `skipped` for this ticker. Proceeding with remaining applicable profiles.
```

If NO profiles render successfully, the meta-skill returns `INSUFFICIENT_PROFILES` and does not compute consensus.

### Step 4 — Compute consensus per `consensus-config.md`

- `A` = applicable profiles (returned `match` | `partial_match` | `no_match`; excludes `skipped`)
- `M` = profiles that returned `match` (NOT `partial_match`)
- `required_matches = ceil(0.75 × A)`
- `minimum_applicable_count = 3`

Consensus signal:
- **`INSUFFICIENT_PROFILES`** if `A < 3`
- **`YES`** if `A ≥ 3` AND `M ≥ required_matches`
- **`NO`** if `A ≥ 3` AND `M < required_matches`

### Step 5 — Compute factor-level agreement

For each unique factor/criterion across all profiles' `factor_flags`:
- Count profiles (matching + partially-matching) where it is `FLAGGED`
- Sort by count descending

Surface three buckets:
- **Shared signals** — flagged by ≥ 2 matching/partial profiles
- **Single-profile signals** — flagged by 1 profile
- **Absence signals** — NOT flagged by any matching profile (informative — collective blind spot)

### Step 6 — Render consensus output

```
Parallax AI Investor Profiles — Consensus for <ticker>

Profiles run: <N> of <total installed>
<any skipped profiles and why>

## Per-profile verdict matrix

| Profile               | Verdict       | Detail                                    |
|-----------------------|---------------|-------------------------------------------|
| AI-buffett            | <verdict>     | <N of 4 factor criteria met>              |
| AI-greenblatt         | <verdict>     | <top X% of peer universe / no match>      |
| AI-klarman            | <verdict>     | <N of 4 balance-sheet checks passed>      |
| AI-soros              | <verdict>     | <dual-channel: A=<status> B=<status>>     |
| AI-ptj                | <verdict>     | <tri-channel: T=<status> M=<status> V=<status>> |

## Super-majority consensus signal

Applicable profiles (A): <count>
Full matches (M):        <count>
Super-majority threshold: 75%
Required matches:        ceil(0.75 × <A>) = <required>
Consensus signal:        YES / NO / INSUFFICIENT_PROFILES
Verdict sensitivity:     If signal is NO, M is <M> vs required <required>; <required − M> more applicable profile(s) reaching full match would move the signal to YES. If signal is YES, M is <M> vs required <required>; <M − required + 1> full match(es) falling away would move the signal to NO.

## Shared factor signal (factors/criteria flagged across profiles)

Informational per conventions §12 — a ranked agreement count, not a ranked trade instruction.

Factors flagged by ≥ 2 matching profiles:
  - <Factor>: flagged by <N> of <M> (<profile names>)
  - <Factor>: flagged by <N> of <M> (<profile names>)

Single-profile signals:
  - <Factor>: flagged by 1 profile (<profile name>)

NOT flagged by any matching profile (collective blind spot):
  - <Factor>: no profile currently flags this dimension

Interpretation: <2-3 sentence plain-language summary — where profiles
converge, where they diverge, what dimensions are collectively absent.>

## Methodology footer

Profiles executed: <list with token costs>
Total token cost: <sum>
Cross-validation gate: PASSED for all rendered profiles
Consensus config: 75% super-majority, minimum 3 applicable profiles, ceiling rounding

---
This output is an AI-inferred synthesis produced by the Parallax AI Investor Profiles framework. Each individual profile is derived solely from publicly available information — peer-reviewed academic sources or the investors' own published books, as cited per profile. It is not financial advice, not personalized, not endorsed by any of the named investors or their representatives, and not a recommendation to buy or sell any security. For illustrative and educational use only. Past characterization does not guarantee future relevance. Please consult a qualified financial advisor before making investment decisions.
```

**Basket mode output:** same structure per ticker, with the per-profile matrix, super-majority signal, and factor-level agreement computed per-ticker. Output is organized ticker-by-ticker.

### Step 7 — Emit

**Steps 1–6 are silent.** Perform the profile runs, cross-validation, consensus computation, and factor-level agreement internally — none of that working appears in your reply. Your **entire visible response consists only of the rendered Step 6 template plus every required Output addition below**. The analytical template begins at the Header line `Parallax AI Investor Profiles — Consensus for <ticker>`; in basket mode, that Header begins each ticker block. Before the first analytical Header, render only the leading white-label elements required by `integration-pattern.md` §5, in its prescribed order, including a URL logo and the conditional Branding Header when applicable. If no leading white-label element applies, the analytical Header is the absolute first output. The About This Report footer, AI-interaction disclosure, and standard disclaimer remain required parts of the visible response in the positions specified below. In both modes, do NOT add `**Step N**` labels, "Cross-validation passed", "All data verified", a "Let me…" preamble, or any other workflow narration.


## Output additions (white-label branding + §9.2 disclosure)

These additions apply to the rendered output ABOVE in addition to the persona-specific disclaimer shown in the output example. They are required regardless of view state.

### Pre-Render — Load white-label branding

Load `_parallax/white-label/integration-pattern.md` §2 and compute `white_label_active` + `client_name` per that section. Apply §5 (Branding Header) and §7 (About This Report) when composing the Output Format.

- **Branding Header** (only if `white_label_active` AND `client_name != ""`) — single line at the very top of the rendered output: `**<client_name>** AI investor consensus`. Logo handling per integration-pattern.md §5.
- **About This Report** (always present): one line stating branding state per integration-pattern.md §7. If a logo was skipped, append `Logo on file: <basename>` as a second About This Report line.

**AI-interaction disclosure (required regardless of view state):** Render `parallax-conventions.md §9.2` immediately above the disclaimer below. The persona-specific disclaimer in the output example characterizes the source of the framing; the §9.2 banner characterizes the LLM-generated synthesis itself.

Render the standard disclaimer verbatim from `parallax-conventions.md` §9.1.

## Graceful fallback

- 3 of 5 profiles run successfully → consensus proceeds with `A=3` (effectively requiring unanimity per ceiling rule)
- 2 of 5 profiles run successfully → return `INSUFFICIENT_PROFILES` (do NOT compute a 2-profile signal)
- Any single profile's tool calls fail after retry → that profile is `skipped` (with fallback note) and consensus continues
- Input ticker not resolvable → emit standard conventions §1 error and exit, do not run profiles

## Token cost estimate (single ticker)

- Buffett: ~4 tokens
- Greenblatt ticker-check: ~10-15 tokens (universe build + peer ratios)
- Klarman: ~5-7 tokens (balance sheet + cash flow + ratios + peer snapshot)
- Soros single-ticker: ~25-30 tokens (macro + telemetry + universe)
- PTJ single-ticker: ~14-16 tokens (macro + technical + peer snapshot + outlook + score analysis)

**Total per single-ticker consensus call: ~60-70 tokens.** Most expensive skill in the family, but the value is the cross-profile agreement signal no single profile provides.

For basket mode (5 tickers), Buffett/Klarman/Greenblatt run per-ticker; Soros and PTJ's macro workflows run once and only the per-ticker exposure check repeats. Approximate basket-of-5 cost: ~180-240 tokens.

**Cheap subset — factor-profiles-only.** `--only buffett,klarman,greenblatt` runs the three factor/mechanical profiles for ~20-26 tokens (Buffett ~4 + Klarman ~5-7 + Greenblatt ~10-15), skipping Soros and PTJ's macro fan-out entirely. Arithmetic consequence: `A = 3` → `required_matches = ceil(0.75 × 3) = 3` — all three must match for a `YES` signal. Label this invocation's output as a reduced-ensemble read, not the full five-profile consensus.

## Why this meta-skill exists

The consensus is the product's value proposition, not a convenience feature. Individual profiles are interesting but noisy — each reflects a single investor's framework and may flag for reasons unrelated to the investor's actual behavior today. Cross-profile consensus is informative precisely because the profiles are structurally different: Buffett is factor-tilted, Greenblatt is mechanical, Klarman is balance-sheet, Soros is top-down, PTJ is trend-and-regime. When four or five agree, the agreement is unlikely coincidental.

The factor-level agreement section is pedagogically load-bearing. It tells users:
- **Where the profiles converge** (the strongest-agreement shared signal)
- **Where they diverge** (informative tension)
- **What dimensions are collectively absent** (the profiles' shared blind spots)

This gives users a framework for building their own views using Parallax data — the stated product goal.
