risk-model-config
Invoke before analyze_portfolio_risk when the portfolio contains illiquid, private, or real estate holdings that lack yfinance market data.
Skill by hvkshetry
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/hvkshetry-risk-model-config
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: data, finance
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/risk-model-config
What's inside
- Skill name
risk-model-config- Description
- Invoke before analyze_portfolio_risk when the portfolio contains illiquid, private, or real estate holdings that lack yfinance market data. Queries finance-graph for asset metadata and valuation history, then assembles the illiquid_overrides parameter for portfolio-analytics risk analysis.
- License
- MIT
- Instructions
- 144 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# risk-model-config — Illiquid Risk Overlay Configuration
This skill runs **before** `portfolio-analytics.analyze_portfolio_risk` when the portfolio contains illiquid or private holdings that lack yfinance market data.
## Purpose
The portfolio-analytics risk engine drops symbols without yfinance data and renormalizes weights, causing risk to be computed on only the liquid slice. This skill bridges the gap by:
1. Querying finance-graph for illiquid asset metadata (PE, real estate, private holdings)
2. Estimating volatility and equity correlation for each illiquid position
3. Assembling the `illiquid_overrides` parameter for `analyze_portfolio_risk`
## MCP Tool Map
- Asset metadata: `finance-graph.list_assets`
- Valuation history: `finance-graph.list_valuation_observations`
- Portfolio context (liquid weights): `portfolio-analytics.get_condensed_portfolio_state`
- Risk analysis target: `portfolio-analytics.analyze_portfolio_risk`
## Execution Workflow
### 1. Identify Illiquid Positions
Query finance-graph for positions that will not have yfinance data:
```
finance-graph.list_assets(asset_class_code="securities")
finance-graph.list_assets(asset_class_code="real_estate")
```
Filter to positions with `data_source="MANUAL"` or no yfinance-compatible ticker.
### 2. Gather Valuation History
For each illiquid position, check for valuation time series:
```
finance-graph.list_valuation_observations(asset_id=<id>)
```
If a position has >= 8 quarterly observations, compute realized annual volatility from the observation series.
### 3. Check Valuation Staleness
For each illiquid position, after querying `finance-graph.list_valuation_observations(asset_id=...)`:
- Compute `days_since_valuation = (today - most_recent_observation.valuation_date).days`
- Classify with asset-class-specific thresholds:
| Asset Class | Current | Stale Mark | Very Stale Mark |
|----------------|---------------|----------------|-----------------|
| Real Estate | < 365 days | 365–730 days | > 730 days |
| Private Equity | < 180 days | 180–365 days | > 365 days |
| Other Illiquid | < 180 days | 180–365 days | > 365 days |
- Vol uplift: `stale_mark` → +5pp to annual_vol, `very_stale_mark` → +10pp
- Include in override: `"valuation_age_days": N, "mark_staleness": "stale_mark"` or `"very_stale_mark"`
- The risk engine passes these fields through to output and generates alerts for `very_stale_mark`
### 4. Apply Category Defaults
For positions without sufficient valuation history, use these defaults:
| Asset Category | Annual Vol | ρ (equity) | Liquidity Discount |
|----------------|-----------|------------|-------------------|
| Private Equity (US) | 30% | 0.65 | 15% |
| Private Equity (India) | 35% | 0.50 | 20% |
| Real Estate (US) | 12% | 0.30 | 10% |
| Real Estate (India) | 15% | 0.20 | 15% |
| Venture / Early Stage | 40% | 0.40 | 25% |
These are conservative estimates. Override with realized data when available.
### 5. Compute Position Weights
For each illiquid position, compute its weight relative to total portfolio value (including liquid positions). Use `portfolio-analytics.get_condensed_portfolio_state` or `ghostfolio.portfolio(operation="summary")` to obtain total portfolio value.
### 6. Assemble illiquid_overrides
Build the list of override dicts:
```json
[
{
"symbol": "PVTCO",
"weight": 0.10,
"annual_vol": 0.30,
"rho_equity": 0.65,
"liquidity_discount": 0.15,
"valuation_age_days": 200,
"mark_staleness": "stale_mark"
}
]
```
The `valuation_age_days` and `mark_staleness` fields are optional. When present, the risk engine passes them through to the overlay output and generates alerts for `very_stale_mark` positions.
### 7. Pass to Risk Analysis (First Pass)
Call `portfolio-analytics.analyze_portfolio_risk` with the assembled overrides, passing through any scope parameters from the calling skill:
```
portfolio-analytics.analyze_portfolio_risk(
risk_model="auto",
illiquid_overrides=<assembled list>,
include_fx_risk=true
)
```
### 8. Regime-Conditional Adjustments (Second Pass)
After the first `analyze_portfolio_risk` call, check `vol_regime.current_regime`:
| Regime | ρ Multiplier | Vol Adjustment (India PE) | Action |
|------------|-------------------|-----------------------------------------|-----------------------------------|
| low/normal | 1.0× | none | Use base overrides |
| elevated | 1.25× (cap 0.95) | max(USDINR, NIFTY) vol ratio if > 1.0 | Re-run with stressed overrides |
| crisis | 1.50× (cap 0.95) | max(USDINR, NIFTY) vol ratio if > 1.0 | Re-run with stressed overrides |From hvkshetry/StewardOS, MIT.
More from hvkshetry/StewardOS
- 0.490score
practitioner-heuristics
hvkshetry
Practitioner heuristic overlay for portfolio review.
SkillDFreshness: D★ 16Claude Code +9 - 0.490score
tax-doc-scan
hvkshetry
Visual inspection and classification of tax documents.
SkillDFreshness: D★ 16Claude Code +9 - 0.490score
paperless-canonical-ingestion
hvkshetry
Canonical ingestion workflow for family-office records: discover candidate files in Google Drive, Gmail attachments, OneDrive, and SharePoint; deduplicate…
SkillDFreshness: D★ 16Claude Code +9 - 0.487score
family-email-formatting
hvkshetry
Generate family-office HTML emails for family personas.
SkillDFreshness: D★ 16Claude Code +9 - 0.487score
memory-management
hvkshetry
Two-tier memory system that makes Codex CLI a true household collaborator.
SkillDFreshness: D★ 16Claude Code +9 - 0.486score
tax-form-prep
hvkshetry
End-of-year IRS form preparation: document checklist, form identification, form completion guidance, and audit review.
SkillDFreshness: D★ 16Claude Code +9 - 0.485score
household-admin
hvkshetry
Household administration skill covering Homebox inventory management, maintenance scheduling, and Memos for household notes and decisions.
SkillDFreshness: D★ 16Claude Code +9 - 0.485score
budgeting
hvkshetry
Personal budgeting and financial planning skill.
SkillDFreshness: D★ 16Claude Code +9 - 0.485score
estate-overview
hvkshetry
Query the estate knowledge graph for family ownership maps, entity hierarchies, net worth by jurisdiction, and critical dates.
SkillDFreshness: D★ 16Claude Code +9 - 0.485score
document-filing
hvkshetry
Paperless-ngx document filing skill with tagging taxonomy, retention policies, and batch filing workflows.
SkillDFreshness: D★ 16Claude Code +9 - 0.485score
document-management
hvkshetry
Personal document management skill using Paperless-ngx.
SkillDFreshness: D★ 16Claude Code +9 - 0.485score
investing
hvkshetry
Personal portfolio management and investment analysis skill.
SkillDFreshness: D★ 16Claude Code +9
Signals
- Stars
- 16
- Forks
- 7
- Open issues
- 2
- Last commit (this folder)
- Mar 4, 2026 (7 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/hvkshetry/StewardOS
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from hvkshetry
- 0.490score
practitioner-heuristics
hvkshetry
Practitioner heuristic overlay for portfolio review.
SkillDFreshness: D★ 16Claude Code +9 - 0.490score
paperless-canonical-ingestion
hvkshetry
Canonical ingestion workflow for family-office records: discover candidate files in Google Drive, Gmail attachments, OneDrive, and SharePoint; deduplicate…
SkillDFreshness: D★ 16Claude Code +9 - 0.490score
tax-doc-scan
hvkshetry
Visual inspection and classification of tax documents.
SkillDFreshness: D★ 16Claude Code +9 - 0.487score
family-email-formatting
hvkshetry
Generate family-office HTML emails for family personas.
SkillDFreshness: D★ 16Claude Code +9 - 0.487score
memory-management
hvkshetry
Two-tier memory system that makes Codex CLI a true household collaborator.
SkillDFreshness: D★ 16Claude Code +9 - 0.486score
tax-form-prep
hvkshetry
End-of-year IRS form preparation: document checklist, form identification, form completion guidance, and audit review.
SkillDFreshness: D★ 16Claude Code +9
Cite this page
risk-model-config skill. Agent Mart. https://agentmart.dev/skills/hvkshetry-risk-model-config (last updated 2026-10-24)