AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Investment Council

skill-viktor-milev-claude-skills-investment-council · by viktor-milev

Pressure-test an investment thesis, trade, position, or mispricing claim through a council of five orthogonal advisors — Bear, Bull, Base Rate Skeptic, Market Structure Analyst, Risk Manager — who analyze independently, peer-review anonymously, and return a verdict tuned to DECISION (take/size this position) vs ANALYSIS (is this asset mispriced). Trigger on "council this trade/position/thesis/inv…

No reviews yet
0 installs
29 views
0.0% view→install

Install

$ agentstack add skill-viktor-milev-claude-skills-investment-council

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-viktor-milev-claude-skills-investment-council)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
2mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Investment Council? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Investment Council

Five advisors calibrated for capital-at-risk decisions. The failure mode this council defeats is not psychological sycophancy alone — it is also technical incompleteness: a thesis that sounds compelling because it ignores base rates, market structure, factor exposure, or position sizing relative to the existing book.

This council is for institutional-grade thesis stress-testing — capital-at-risk decisions on a specific security, fund, portfolio, or mispricing claim. It is not for life, strategy, or business decisions, and not for fund-manager due diligence.


CHANGELOG

v1.7 — Peer-review readability + standalone-memo pass (adversarial QC audit, 2026-06-22). The governing principle: the council memo must stand on its own — a reader with neither the advisor responses nor the input research dossiers in front of them must still get the full picture. Edits confined to Step 3 (peer review), one line of the Step 4 synthesis prompt, the Step 5 output spec, and one Hard Rule. Council architecture — five advisors, blind independent review, randomized mapping, chairman synthesis, verdict tiers, both output files — untouched; still a single-run chat skill. Frontmatter description unchanged (sub-1,024-char invariant preserved).

  • Peer review is de-anonymized at presentation. Generation stays blind (randomized A–E mapping preserved); in the presented transcript and HTML, Response A–E are replaced with the actual advisor names so the reader is never forced to hold a letter-to-advisor map in their head. Presentation-only — independence at generation is untouched.
  • Peer-review form norm (standalone-readability mandate). Each review point must restate the claim it refers to, define every acronym at first use, and — critically — explain in plain English any fact or mechanic it leans on that lives only in the input dossiers. The trigger: a review line flagged "pledged shares" as a left-tail amplifier without ever stating what pledging is or why it bites, so a reader without the dossier could not evaluate it. Self-containment now takes priority over terseness; word target raised 200–250 → 250–350.
  • CIO-to-IC synopsis closes the peer review. After the five reviews, a mandatory plain-English paragraph — no jargon, no acronyms, not reviewer- or letter-indexed — states what the cross-examination collectively established: the blind spots more than one reviewer flagged, the claim multiple reviewers independently elevated, and the single question the council left unresolved, in the register a CIO would use to brief an investment committee. Scoped to what the review established — explicitly not the chairman's verdict (no tier, no size, no recommendation).
  • Acronym discipline extended to the peer-review and synthesis prompts. The advisor prompt already defined acronyms at first use; the review and synthesis prompts did not, which let "PW" (probability-weighted) reach the verdict undefined. Now enforced in all three.

v1.6 — Two precision sharpenings from a backtest of an ADR (American Depositary Receipt) thesis run against the company's home-market listing (2026-06-21). Both close "named-but-not-delivered" / "asserted-without-stamp" slippage; neither changes architecture. Edits confined to the Position Context Block (two rows), one Hard Rule, and the DECISION verdict bullet. Frontmatter description unchanged (sub-1,024-char invariant preserved).

  • **Short interest / borrow must be stamped even when immaterial. The run correctly dismissed the name's borrow ("easy and cheap, no squeeze") but asserted it bare, with no grounding stamp. Now: outside the shorted/squeeze-prone class, no web-search attempt is required, but the borrow/SI characterization must carry a stamp** — a number, or an explicit "immaterial / general-knowledge, not verified" tag. A bare "borrow is easy" is no longer acceptable. (Deliberately worded as a stamp, not an attempt, so it does not trigger wasteful SI searches on every mega-cap.)
  • **The cost-basis tax note must be delivered, not merely named, on a TRIM/EXIT. Both prior runs named "the tax-realization note" and never produced it. Now: on a trim/exit, state the mechanical realized P&L the action crystallizes (≈ (price − avg basis) × shares; flag that the exact figure depends on lot selection in IBKR) and whether it is a harvestable loss or a taxable gain. Scope guard:** this is a realized-P&L flag plus a "check against your own tax treatment" pointer — NOT tax advice, NOT jurisdiction-specific rules, NOT wash-sale / holding-period / liability computation (cross-border treatment is the principal's to determine). The forward-sizing fence is unchanged.

v1.5 — Two surgical findings from the first live run (a new-entry candidate, 2026-06-21). Edits confined to Step 1 (framing / Position Context Block), the Risk Manager advisor's data line, and the Hard Rules. Council architecture untouched; still a single-run chat skill. Frontmatter description unchanged (sub-1,024-char invariant preserved).

  • Short interest / borrow is now a must-attempt at framing (Finding #1). The live run correctly flagged missing short interest but never attempted it, leaving the single most informative datapoint for a shorted name memory-not-verified. The connector does not expose SI/borrow, so web search (Ortex / Fintel / S3 / NASDAQ settlement) is the source; "unavailable" is now permitted only after a genuine attempt, never a silent memory-deferral. Added as a dedicated Position Context Block row routed to the Market Structure Analyst, and enforced as a Hard Rule.
  • Held/not-held read now explicitly surfaces whole-book overlap for the Risk Manager (Finding #2). The positions call already returns the book; the run used it well (a put-as-partial-hedge read on an already-held thematic name, "you already own the theme"), but the spec under-described it. Codified: the read surfaces thematically/statistically adjacent holdings (names + weights) and routes them to the Risk Manager's correlation-to-existing-book mandate. Qualitative book-overlap is in scope; computed marginal risk (portfolio beta, MCR, quantitative concentration deltas) remains out of scope — the two out-of-scope statements were tightened to draw that line cleanly.

v1.4 — Live-data grounding pass (IBKR connector). Surgical: edits confined to Step 1 (framing), the Market Structure advisor's data line, the DECISION verdict bullet, and the Hard Rules. Council architecture — five advisors, independence, peer review, synthesis, verdict structure, both output files — untouched. Remains a single-run chat skill (no Claude Code, no scheduling, no persisted state). Frontmatter description unchanged (sub-1,024-char invariant preserved).

  • Price/52wk verification is now connector-first: get_price_snapshot for the live quote, 52wk range, prior close and distance-from-high (+ get_price_history for a trend read), each figure stamped real-time vs delayed. Web search is the price fallback only when the connector cannot resolve the instrument or the entitlement is absent, and remains the primary source for all non-price facts (catalyst, filings, borrow, short interest, news).
  • Added a single normalized Position Context Block, built once at framing from read-only calls and appended to the framed question, so all five advisors read one common pre-digested baseline (independence off a shared digest, not five raw JSON reads). Carries: price + 52wk context; live options data (IV percentile, open interest, option volume) routed to the Market Structure Analyst; and a held/not-held flag with weight from one get_account_positions call, which auto-classifies new-entry vs existing-position.
  • Cost-basis / unrealized-P&L fence: read only when held, and usable solely for the exit/trim tax-realization note and the thesis-invalidation check — never an input to forward sizing (disposition-effect guard, consistent with the anti-narrative check).
  • Book-level marginal risk (portfolio beta, MCR, correlation to book, concentration deltas) is explicitly out of scope — a dedicated portfolio-impact pass, not this first-read skill. Sizing here is % of NAV; risk-unit sizing is deferred.
  • Graceful degradation: with no IBKR connector present, price verification falls back to web search and the held-flag is skipped and noted — the skill still runs (publishable, account-agnostic).

v1.3 — HTML report restyled to a dark, low-glare "Slate & Ember" theme (neutral graphite base, warm off-white text, a single warm-ember hairline accent — no blue, no pure black). Spec-only change to the Step 5 HTML output description; council architecture, advisor prompts, peer-review and verdict structure, and the Markdown transcript are all untouched. Frontmatter description unchanged (sub-1,024-char invariant preserved).

v1.2 — QC-pass integration (adversarial audit). Closed a silent-failure gap and trimmed redundancy; architecture unchanged (single-run confirmed independently).

  • Added a degraded-run rule: if live-verification cannot retrieve (search/tools off), flag all load-bearing facts as memory-not-verified and cap conviction below FAT PITCH rather than verifying from memory.
  • Recalibrated the synthesis reasoning note for Opus 4.8: reasoning method is installed in the prompt; reasoning depth is a run-time setting, not an in-skill control.
  • Added a length-pressure safeguard: protect advisor depth + synthesis; let the HTML report spill to an immediate follow-up rather than truncating analysis.
  • Trimmed duplicate grounding/memory-flag instructions to the canonical advisor-prompt instance plus pointers.

v1.1 — Capability-activation pass for Opus 4.8 (single-run architecture confirmed; staging rejected on evidence).

  • Added mandatory live-verification of the thesis's load-bearing facts at framing (the council's highest-value demonstrated behavior, previously un-instructed).
  • Reframed council convening as independence in a single context rather than literal parallel sub-agent spawning; real sub-agents now optional.
  • Added a conviction-tiered verdict (fat pitch / favorable / fair / pass / avoid) with the fat-pitch tier gated on named conditions.
  • Activated scoped extended reasoning at the chairman synthesis; made the anti-sycophancy / anti-narrative checks mandatory in the output.
  • Empirical advisors (Base Rate Skeptic, Market Structure Analyst) now expected to ground figures in retrieved data and flag memory-vs-verified.
  • Softened hard word caps to depth-targets; varied the Risk Manager opening; pruned orphaned workspace conventions; converted header to YAML frontmatter.

v1.0 — Initial release.


Trigger Conditions

Mandatory triggers: council this trade, council this position, council this thesis, council this investment, investment council, pressure-test this trade, war room this thesis, stress-test this position.

Strong triggers (when the question involves capital at risk, a security, a fund, a portfolio decision, or a mispricing claim): should I buy/sell/short X, is X mispriced, is X a good trade, what's wrong with this thesis, sanity-check this trade, help me size this.

Do NOT trigger on macro commentary without a specific position, on portfolio construction questions, or on fund manager evaluation.


Decision vs Analysis — The Framing Fork

Before convening the council, classify the question:

  • DECISION question — "Should I take this position?" The output must end with position-sizing guidance and a fit-with-existing-book check. The Risk Manager and Market Structure Analyst lead.
  • ANALYSIS question — "Is this asset mispriced?" The output must end with a mispricing magnitude estimate (cheap/fair/rich, ideally with a sketch of fair value vs market price) and a list of what would have to be true. The Bear, Bull, and Base Rate Skeptic lead.

Some questions are both ("I think Costco is mispriced and I'm thinking of sizing it at 4% of the book"). Run both lenses; the chairman addresses both in the verdict.

State the classification in the framed question explicitly so all advisors know which mode they're in.


The Five Advisors

  1. The Bear — full short thesis. What kills this position. What the bull case is missing. Specific catalysts that mark the thesis broken. Required to commit to at least one falsifiable bear claim.
  1. The Bull — full long thesis. Asymmetric upside. What the market is mispricing and why. What has to be true for the position to compound. Required to commit to at least one falsifiable bull claim.
  1. The Base Rate Skeptic — quants out the qualitative story. What does the historical distribution say? What's the prior on companies/trades/themes that look like this? What's the hit rate on similar setups? Defaults to "the market is usually right" and forces the bull and bear to clear that bar. (Grounding/memory-flag discipline per the advisor prompt.)
  1. The Market Structure Analyst — who's on the other side of this trade and why. Liquidity, positioning, flows, factor crowding, forced sellers/buyers, derivatives overhang. Asks whether the price is set by fundamentals or by structural pressure. Critical for any trade where the thesis is "cheap" — cheap relative to whom and why are they selling. When the Position Context Block carries live options data (IV percentile, open interest, option volume), read it directly rather than reasoning from memory — measured positioning, IV only and no Greeks. (Grounding/memory-flag discipline per the advisor prompt.)
  1. The Risk Manager — position sizing, correlation to existing book, drawdown scenarios, time-to-stop-out, max acceptable loss, regret minimization. Does not care if the thesis is right; cares whether you survive being wrong. When the Position Context Block surfaces overlapping holdings, read them directly and argue concentration / correlation against the actual book (does this diversify or double down?) — qualitative overlap, not a computed portfolio beta. For decision questions, this advisor's output is load-bearing. Vary the opening line run-to-run — let the survivability stance come through in the substance, not a fixed signature sentence.

These create the right tensions for a capital-at-risk context: Bull vs Bear (direction), Base Rate Skeptic vs Bull/Bear (qualitative narrative vs prior), Market Structure vs Fundamentals (price formation), Risk Manager vs everyone else (survivability).


Session Protocol

Step 1 — Frame the Question

Bounded context scan (≤3 reads): look for any portfolio context file, recent trade notes, position-sizing rules, the user's existing book composition, any uploaded research or screen output.

Live-verify the thesis's load-bearing facts (mandatory). Before framing, verify the facts the verdict will turn on against present-day data — current price and distance from the relevant high/low, the key balance-sheet items (net cash/debt, share count), short interest / borrow, and any specific catalyst the thesis cites. Where a tool is available, ground them; where not, flag the figure as memory-not-verified. Correct any stale or wrong premise explicitly in the framed question (e.g., "thesis cites an entry near the prior high; the name now trades well below it, already through the stated stop; the headline cash balance is largely offset by convertible debt, leaving little net cash"). This verification is the single place the council most often adds value — do not skip it.

Price facts are connector-first (IBKR). Resolve the name with search_contracts (apply exact-symbol discipline), then take the live quote, 52-week range, prior close, and distance-from-high from get_price_snapshot, and a trend read from get_price_history (daily bars, include_corporate_actions=true so a split does not fake a gap, outside_rth=false). **Stamp ev

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.