クライアント(顧客)または世帯の投資ポートフォリオ(資産の組み合わせ)の見直しを実行します。Orion(投資管理システム)から取得した実績データを基に、IPS(投資方針声明書)またはモデルポートフォリオに対する配分乖離(ずれ)の分析、モデルポートフォリオへのマッピング、税効率を考慮したリバランス(配分調整)の機会検討、そしてコンプライアンス(規制遵守)ファイル用のリバランス根拠メモを提供します。 **次のような場合に使用:** 「portfolio review」「/portfolio-rebalance-review」「drift analysis」「rebalance [クライアント名]」「how is [クライアント名]'s portfolio positioned」「rebalance rationale」「map [クライアント名] to a model」
Run a portfolio review for a client or household — performance pulled from Orion, allocation drift analysis vs. IPS or model portfolio, model-portfolio mapping, rebalance preparation with tax-aware rebalance opportunities to consider, and a rebalance rationale memo for the compliance file. Triggers on "portfolio review", "/portfolio-rebalance-review", "drift analysis", "rebalance [client]", "how is [client]'s portfolio positioned", "rebalance rationale", or "map [client] to a model".
Review a client portfolio end to end: performance → drift → model mapping → rebalance prep → rebalance rationale memo.
Required: client/household name. Optional: which accounts to include, the model portfolio or IPS targets (if not on file), and whether the advisor wants analysis only or a full rebalance prep.
Disambiguation rule: confirm which household before pulling anything, the same as every other skill in this plugin — if a name search returns more than one match, show the advisor the candidates and ask which one before proceeding. Never proceed on a name match alone.
Query the household's connected portfolio-data system for:
Which system to query: this data can live in Orion, Addepar, or Envestnet/Tamarac depending on the firm. Check ListConnectors (load via ToolSearch if not already available) to see which is actually connected — don't guess at tool-name prefixes, use ToolSearch by system name once you know which is live.
Look for the tools before you trust the registry. ToolSearch by the system's own name is the check that decides: if its tools come back, that system is connected and callable — use them. ListConnectors can answer "No installed connectors found" even in a session with several live, working connectors, and in some clients it renders a user-facing card rather than returning data at all. So it explains a gap, it never establishes one, and an empty result means unknown, never "nothing is connected". When it does return entries, read enabledInChat, not connected: connected: true with enabledInChat: false is authenticated but switched off for this chat, so tell the advisor they can enable it here rather than reporting it as unconnected; a missing or null connected is unknown, not disconnected.
Held-away accounts: ask the advisor whether the household has accounts held away from this system (a spouse's 401k, assets at another custodian) relevant to wash-sale coordination or the overall allocation picture. If yes, request those holdings manually — there's no connector for outside accounts.
Addepar specifics: call get_portfolio_data with lookthrough=false for drift purposes. Lookthrough decomposition (fund → underlying constituents) is a separate risk-review lens — an IPS names sleeves at the fund-commitment level, and lookthrough silently returns an incompatible set of buckets with no warning. Group by direct_owner, not account — the latter is not a valid grouping key and errors. For tax-lot detail, pass a tax-lot value in groupings only if the live tool schema actually documents one — cost basis and lot-level fields are not confirmed to exist on every Addepar deployment. If the schema doesn't support it or the returned columns don't include cost basis, say so explicitly rather than presenting fabricated lot data; this feeds the same "Completeness" gate below.
Orion specifics: Orion Connect's tools (household search, report catalog, report parameters, oc_generate_report) are identity and report-catalog/generation only — they do not return structured holdings, cost basis, or tax lots. Generating a report yields a link to the finished report, not its contents — hand it to the advisor and say it expires after 24 hours (a unique per-run URL; regenerate rather than troubleshoot an expired one); don't fetch it to scrape a holdings table out of, and don't treat having produced a link as having read the data. If Orion is the only connected system, holdings/cost-basis data has to come from the advisor (upload/paste) rather than being inferred from a report. If Orion later ships a structured holdings or cost-basis tool, wire it into this same Step 1 data shape alongside Addepar.
Before generating an Orion report: confirm with the advisor first — oc_generate_report runs a job in Orion Connect rather than reading from it. No confirmation is needed for household search, the report catalog, or report-parameter lookups; those are identity/catalog calls, not report generation.
Data-sanity gate — run before Step 2, don't skip. Dispatch this to the claude-for-financial-advisors:holdings-sanity subagent — Agent(claude-for-financial-advisors:holdings-sanity) — rather than working through it inline: hand it the holdings data, the reported portfolio/household value, and the sleeve structure from the IPS or model if one is on file. It returns a flag table with a Contaminates column naming which downstream figure each problem feeds, plus an explicit list of the checks that passed.
Act on what comes back before touching Step 2. A BLOCKING verdict means a flag would corrupt the drift table itself — resolve it with the advisor first. FLAGS means the review continues with the caveats carried into the output. The subagent never repairs data, drops a position, or estimates a missing field, so anything it raises is still yours to decide about.
The seven checks it runs, which are also the checks to run by hand if the subagent is unavailable:
Compare current allocation to the IPS targets / assigned model. Sourcing the target:
list_models — which also carries the firm's entitled third-party models), hydrate the target from get_model: roll its holdings up by their asset_class tags into sleeve targets and carry the model's as_of date into the drift table. The model supplies point targets only, never bands — bands stay firm/IPS policy; ask if unknown.Source sleeve names, targets, and bands from whatever IPS/model you end up with — don't assume a fixed set of asset classes. Fall back to the table below only when no IPS/model sleeve structure is on file:
| Asset Class | Target % | Current % | Drift | $ Over/Under |
|---|---|---|---|---|
| US Large Cap Equity | ||||
| US Small/Mid Cap | ||||
| International Developed | ||||
| Emerging Markets | ||||
| Investment Grade Bonds | ||||
| High Yield / Credit | ||||
| Alternatives | ||||
| Cash |
Flag positions exceeding the rebalancing band (default ±5% absolute or the firm's stated band — ask if unknown). Bands may differ by liquidity tier — illiquid sleeves (private equity, venture, real assets) typically carry a wider band than liquid ones; use what the IPS specifies, ask if it doesn't distinguish. A breach in an illiquid sleeve is a commitment-pacing signal, not a trade instruction — it can't be traded back — so surface it as context rather than generating a change against it.
Also flag: concentrated single positions (>10% of household), cash drag, and style drift within an asset class.
IPS review cadence: check the IPS's own "last reviewed" date against the firm's stated review cadence. If none is on file, default to flagging anything not reviewed in the last 12 months (a common industry norm for fiduciary accounts) and ask the advisor for the firm's actual policy — same pattern as the band default above. Note staleness alongside the drift table; don't block the rebalance on it.
Analysis-only path: if the advisor asked for analysis only (see Inputs), stop here — output the drift analysis and the plain-English summary from Step 6, and skip Steps 3–5.
Which model source: check for BlackRock Advisor Center the same way Step 1
checks for a portfolio-data system — ToolSearch by name first (never guess
an mcp__blackrock__* prefix), ListConnectors only to explain a gap, and
read enabledInChat rather than connected. If it's connected, source the
model lineup from list_models and the chosen model's holdings from
get_model. If it isn't, work from the model definition the advisor supplies
— and if none is supplied, say so and skip the mapping rather than scoring
against an assumed model. A BlackRock model is not automatically the drift
target — when the household has its own IPS, models feed only this step's
mapping. When Step 2 sourced the target from an assigned or advisor-selected
model, score against that same model here, never a different one.
Advisor Center's MCP doesn't expose synced client accounts today: its
"households" are proposal groupings, and accounts imported or synced from the
book of business aren't readable over MCP yet — so don't look a client
household up there; this instruction upgrades automatically once the MCP
exposes synced accounts. Independent of that: never offer to create or update
anything there — create_portfolio and every other Advisor Center write is
out of scope for this skill.
Terms gate: a [terms_not_acknowledged] or [terms_unavailable] refusal
from any BlackRock call means the advisor hasn't accepted (or needs to
re-accept) Advisor Center's terms. Call show_terms and present the terms
text in full — never summarized or paraphrased. Once the advisor explicitly
accepts, call acknowledge_terms with displayed_hash set to show_terms's
content_hash, then retry the original call. Never call show_terms or
acknowledge_terms on your own initiative or as a routine check — only on an
actual refusal, or if the advisor asks about terms directly.
Identify the adjustments that would bring the household back to target, tax-aware:
Cash locked for capital calls (alts path): if Addepar is the connected system, call its upcoming private-fund capital-activity tool before treating cash balances as available — net out committed-but-uncalled capital-call obligations from what counts as deployable cash, same as an illiquid-sleeve band breach is a pacing signal rather than a trade instruction. Surface any near-term call as a flag/context line next to the cash figures it affects, don't silently consume it into the options list. No connected system currently supplies forward-looking call dates for Orion/Envestnet-only households — note that gap rather than guessing.
Zocks AI results as a rebalance-rationale input: if Zocks is connected, pull its AI results/insights for the household and check whether the potential changes line up with what the client has actually expressed — stated risk tolerance, life events — and with the IPS on file. Flag a mismatch inline against the specific change it bears on (e.g. a risky change against an explicitly stated low risk tolerance, or a life event suggesting the IPS itself may be stale), not as a general blurb at the top of the output. Zocks is a sentiment/context source, never a portfolio book of record.
Execution feasibility check before finalizing the options list — flag, don't silently assume:
Rebalancing options:
| Account | Action | Security | Shares/$ | Reason | Est. Tax Impact |
|---|
Include totals: estimated realized gains/losses, transaction costs, and before/after drift.
Execution note: this skill lays out rebalancing options; it never executes anything. Once custodian connectors (e.g., Schwab) support order staging, offer to stage the order file — until then say: "This is where I'd stage these orders to [Schwab/custodian] once that connector is built" and output the options list in the custodian's upload format if known.
Every rebalance gets a memo for the compliance file. Use templates/rebalance-rationale-memo.md in this skill's folder. It must state: client objective/IPS reference, what drifted and why, what is being changed and why each adjustment serves the client's interest, tax impact considered, and alternatives considered. Leave the template's Approval table empty — nothing in this review establishes who approved a change, and the advisor and any reviewer the firm requires sign for themselves. Never fill in a name or a date there, and never describe the memo as approved.
Write everything to a markdown file first:
templates/rebalance-rationale-memo.md)Then ask the advisor whether they'd like the options list exported to Excel and/or the rationale memo converted to Word/PDF — don't create those formats unless they ask.
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。