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

Parallax Portfolio Checkup

skill-bencharoenwong-parallax-workflows-parallax-portfolio-checkup · by bencharoenwong

Individual investor portfolio checkup: health flags, factor scores, redundancy, macro context, and plain-language recommendations via Parallax MCP tools. Holdings as [{symbol, weight}]. NOT for fund manager briefs (use /parallax-morning-brief), not for client reviews (use /parallax-client-review).

No reviews yet
0 installs
0 views
view→install

Install

$ agentstack add skill-bencharoenwong-parallax-workflows-parallax-portfolio-checkup

✓ 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-bencharoenwong-parallax-workflows-parallax-portfolio-checkup)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
yesterday

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 Parallax Portfolio Checkup? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Portfolio Checkup

When not to use

  • Fund manager morning brief → use /parallax-morning-brief
  • Client portfolio review (RIA) → use /parallax-client-review
  • Single stock analysis → use /parallax-should-i-buy
  • Portfolio with significant ETF allocation → equity scope only in v1; ETF holdings will fail V2 scoring and may silently mismap in V1. ETF-aware health-check is on the v2 roadmap; for now use /parallax-explain-portfolio (which handles ETFs via etf_profile pre-classification) for ETF-heavy portfolios.

Gotchas

  • JIT-load _parallax/parallax-conventions.md for RIC resolution (§1), symbol cross-validation (§2), parallel execution (§3), and fallback patterns (§4)
  • JIT-load references/health-flags.md for the 5-flag health system, thresholds, and mixed-exchange fallback
  • Holdings must be in RIC format with weights summing to ~1.0
  • Per-holding get_peer_snapshot + get_company_info cross-validation is the primary scoring path (matches morning-brief V2 pattern). quick_portfolio_scores is the V1 fallback — known symbol-mapping bugs for non-US numeric tickers (HK / TW / KR), so retail portfolios with mixed exchanges silently mismap without the cross-validation gate.
  • Mixed-exchange portfolios may have partial scoring coverage — apply split-and-merge fallback
  • Plain language output — no finance jargon. Surface name mismatches in user-friendly terms ("Some holdings could not be verified") rather than technical jargon.
  • JIT-load _parallax/house-view/loader.md if an active CIO view is present; this is a portfolio-level skill, so apply §3 (multipliers) to factor scoring of verified holdings, §4 (conflict resolution if user-stated preferences contradict view), §5 (preamble + view-aware sections), §6 (audit log). The view biases the recommendations in Consider — view-aligned tilts get implicit support; view-misaligned holdings get a gentle question framing. Health flags themselves are unchanged by the view; the view adds context, not a sixth flag.
  • When active view is present, use the view-aware disclaimer per loader.md §5 rule 5; otherwise use the standard disclaimer.
  • 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.
  • Integration note: the underlying figures come from the structured JSON of the MCP tools listed in the workflow — production integrations call those tools directly; this markdown report is the interactive/chat tier.

Plain-language portfolio health check with health flags for individual investors.

Usage

/parallax-portfolio-checkup [{"symbol":"AAPL.O","weight":0.30},{"symbol":"MSFT.O","weight":0.25},{"symbol":"VZ.N","weight":0.20},{"symbol":"JNJ.N","weight":0.25}]
/parallax-portfolio-checkup [{"symbol":"AAPL.O","weight":0.30},{"symbol":"MSFT.O","weight":0.25}] audience=client_safe

Optional audience= argument: client_safe | internal_analyst; precedence follows parallax-conventions.md §13.1.

Workflow

Execute using mcp__claude_ai_Parallax__* tools. JIT-load _parallax/parallax-conventions.md for execution mode and fallback patterns. JIT-load references/health-flags.md for the health flag system.

Pre-Workflow — Load Active House View

Per _parallax/house-view/loader.md §1 and §2: load and validate any active house view BEFORE running the workflow. If view present and validated, capture the load preamble (banner from view_status helper, low-confidence warnings) for rendering at the top of Output Format per §5.1. Capture the tilt vector + excludes — applied in Step A.5 to verified-holdings factor aggregates per §3. If no active view (or any §2 validation failure): run the workflow normally with the standard disclaimer.

Batch 0 — Tool Loading

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

Batch A — V2 scoring + redundancy + market coverage (parallel)

Fire ALL rows below in a single tool-call turn. Every row is independent. For per-holding rows (get_peer_snapshot, get_company_info), fan out one call per holding within the same turn so all N×2 holding-level calls run concurrently with the portfolio-level calls. Sequential per-holding loops are the largest latency leak in this skill — do not introduce one.

| Tool | Parameters | Notes | |---|---|---| | get_peer_snapshot | per holding — all N calls fan out in parallel within Batch A | Primary scoring source (V2 path). Aggregate factor scores client-side. | | get_company_info | per holding — all N calls fan out in parallel within Batch A | Ground-truth name oracle for cross-validation per conventions §2. Records expected_name to cross-check against get_peer_snapshot.target_company. | | check_portfolio_redundancy | holdings | Overlap detection | | list_macro_countries | — | Check which markets are covered |

quick_portfolio_scores is NOT fired in Batch A. It is reserved for the V1 fallback path in Step A.5 below; firing it unconditionally violates conventions §2 (V1 known to silently mismap symbols for non-US numeric tickers) and would consume tokens for output that the V2 path supersedes.

Step A.5 — Cross-validation gate + fallback decision (sequential, MUST complete before Batch B)

This step gates Batch B and Batch C; do not start them until A.5 is complete.

  1. Cross-validation (per conventions §2): for each holding, compare get_peer_snapshot.target_company (top level — the response has no name field; peer names are comparison[].company) against get_company_info.name. Mismatches are flagged ⚠ MISMATCH and excluded from aggregate factor calculations; their per-position scores are not displayed.
  2. Compute V2 coverage: weight share of holdings that returned non-empty get_peer_snapshot AND passed cross-validation.
  3. Fallback ladder — apply the first tier whose precondition holds:
  • V2 (primary) — V2 coverage ≥ 50% → use V2-aggregated scores; do NOT fire V1.
  • V1 fallback — V2 coverage 15%? Top-3 >45%? (computed over original holdings, not just verified — concentration is a structural property)
  1. Redundancy — ≥ 2 redundant pairs? (flag as low-confidence if check_portfolio_redundancy coverage `):
DRAFT="$(mktemp "${TMPDIR:-/tmp}/pcheckup.XXXXXX")"
cat > "$DRAFT" 
REPORT
python3 "/../_parallax/render_gate.py" --skill portfolio-checkup  **** —  of 5 flags raised`

(When a house view or white-label client is active, the House View Preamble / Branding Header precede this line per the rules below; the no-preamble rule still applies — those are rendered output, not internal scaffold.)

- **House View Preamble** (only if view active) — render per loader.md §5 rule 1 (banner from Pre-Workflow + low-confidence warnings). Per loader.md §5.1 the preamble goes at the very top — it precedes the Branding Header.
- **Branding Header** (only if `white_label_active` AND `client_name != ""`) — single line immediately below the House View Preamble (or at the very top if no view): `**** portfolio checkup`. Logo handling per integration-pattern.md §5: empty path → text only; URL → embed; absolute local (`/` or `~`) → skip embed and append `Logo on file: ` to About This Report.
- **Portfolio Health Status** (Healthy/Monitor/Attention badge with flag count)
- **Verification Note** *(only render if any cross-validation mismatches were detected)* — plain-language note: "Some holdings (X out of N) could not be matched to verified data and were excluded from aggregate factor analysis: [list of symbols]. The remaining N-X holdings drive the scores below."
- **Your Portfolio Scorecard** (simple factor table with plain-language labels; flag indicators per holding. Mismatched holdings show "—" instead of scores.)
- **Health Flags** (each triggered flag explained in plain language — what it means, why it matters)
- **Verdict sensitivity**: the 1-2 nearest-boundary flags and their arithmetic flip condition for moving Health Status to the adjacent tier, per `references/health-flags.md` "Verdict sensitivity" (renders `parallax-conventions.md` §11 by reference; internal_analyst mode only — omitted under `audience=client_safe` per conventions §13.2; the Health Status verdict itself renders in both modes).
- **Overlap Alert** (if redundancy found, explain why; include reliability note if coverage ` as a second About This Report line. Under `audience=client_safe`, append the §13.4 mode line.

Keep tone friendly and educational.

**AI-interaction disclosure (required regardless of view state):** Render `parallax-conventions.md §9.2` immediately above the disclaimer below.

If active view: use the view-aware disclaimer per loader.md §5 rule 5. Otherwise: render the standard disclaimer verbatim from `parallax-conventions.md` §9.1.

## Source & license

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

- **Author:** [bencharoenwong](https://github.com/bencharoenwong)
- **Source:** [bencharoenwong/parallax-workflows](https://github.com/bencharoenwong/parallax-workflows)
- **License:** MIT

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.