| 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). |
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-/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
_parallax/parallax-conventions.md
_parallax/AI-profiles/profile-schema.md
_parallax/AI-profiles/output-template.md
_parallax/AI-profiles/consensus-config.md
- 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
- 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
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.