Install
openclaw skills install finskills-portfolio-managerMonitor and rebalance a multi-asset portfolio using real-time quotes, sector allocation, and risk metrics from the Finskills API.
openclaw skills install finskills-portfolio-managerMonitor, analyze, and optimize a multi-asset US equity portfolio using live batch quotes, market summary data, and sector performance from the Finskills API. Computes real-time P&L, risk metrics, sector concentration, and generates rebalancing recommendations aligned with your target allocation.
API Key required — Register at https://finskills.net to get your free key.
Header: X-API-Key: <your_api_key>
Get your API key: Register at https://finskills.net — free tier available, Pro plan unlocks real-time quotes, history, and financials.
Activate when the user:
Before starting, collect:
ticker, shares (or current_value), and optionally cost_basisExample holdings input format:
AAPL: 50 shares @ $150 cost basis
MSFT: 30 shares @ $280 cost basis
NVDA: 20 shares @ $400 cost basis
SPY: 100 shares @ $420 cost basis
GET https://finskills.net/v1/stocks/quotes?symbols={TICKER1,TICKER2,...}
Extract for each: price, changePercent, marketCap, volume
GET https://finskills.net/v1/market/summary
Extract: S&P 500, Nasdaq, Dow Jones — current level, daily change, YTD performance
GET https://finskills.net/v1/market/sectors
Extract: All 11 GICS sector ETF performances (1D, 1W, 1M, YTD) for context
For each unique ticker not already classified:
GET https://finskills.net/v1/stocks/profile/{SYMBOL}
Extract: sector, industry (to assign sector weight in portfolio)
For each holding:
Current Value = shares × current_price
Daily P&L = shares × (current_price − prev_close_price)
Daily P&L % = current_price / prev_close_price − 1
Total P&L = current_value − (shares × cost_basis) [if cost basis provided]
Total P&L % = (current_value / (shares × cost_basis)) − 1
Portfolio Weight = current_value / total_portfolio_value
Performance:
Portfolio Daily Return = Σ (weight_i × daily_return_i)
Portfolio Total Return = (total_current_value / total_cost_basis) − 1 [if basis known]
Best Performer (1D) = max daily_return_i
Worst Performer (1D) = min daily_return_i
Risk Metrics (estimate from weights and sector exposure):
20%: High concentration ⚠️
35%: Very high concentration 🚨
40%: Sector-concentrated ⚠️
Benchmark Comparison:
Relative Return (1D) = Portfolio Daily Return − S&P 500 Daily Return
Group holdings by sector (using profile data):
Flag overweight (> +10pp vs benchmark) and underweight (< -10pp vs benchmark) sectors.
Target deviation detection:
For each position:
Target Weight = stated_target_%
Current Weight = current_value / total_value
Drift = Current Weight − Target Weight
Rebalance Action = BUY/SELL if abs(Drift) > 5%
Rebalance Quantity = abs(Drift × total_value) / current_price [shares to trade]
Tax-aware note: Flag positions with > 1 year holding for LTCG treatment before suggesting sells.
Generate 3–5 specific recommendations:
╔══════════════════════════════════════════════════════╗
║ PORTFOLIO REPORT — {DATE} ║
╚══════════════════════════════════════════════════════╝
💼 PORTFOLIO SUMMARY
Total Value: ${total_value}
Daily P&L: ${daily_pnl} ({daily_pnl_pct}%)
Total Return: ${total_pnl} ({total_pnl_pct}%) [vs. cost basis]
vs. S&P 500 (1D): {+/- bps} bps
📋 HOLDINGS BREAKDOWN
{Ticker} {Shares}sh ${price} {weight}% Day: {+/-}% Total: {+/-}%
─────────────────────────────────────────────────────
AAPL 50 sh $189.40 18.4% +1.2% +26.3%
MSFT 30 sh $415.20 24.2% -0.3% +48.2%
...
─────────────────────────────────────────────────────
TOTAL — — 100% {port_day}% {port_total}%
🏆 Best Today: {ticker} +{%}
📉 Worst Today: {ticker} -{%}
🏛️ SECTOR ALLOCATION
Sector Portfolio S&P 500 Over/Under
Technology {%} 29% {+/-pp}
Healthcare {%} 13% {+/-pp}
...
[⚠️ Any sectors > 40% or > +15pp vs benchmark]
⚠️ RISK FLAGS
• Largest position: {ticker} at {%} [{normal/concentrated}]
• Est. Portfolio Beta: {beta} [vs SPY]
• {Any other flags}
📊 MARKET CONTEXT
S&P 500: {level} {day_change}% YTD: {ytd}%
Nasdaq: {level} {day_change}% YTD: {ytd}%
{Leading sector today}: +{%}
{Lagging sector today}: -{%}
🔄 REBALANCING RECOMMENDATIONS
1. {Action}: {Ticker} — {rationale}
2. {Action}: {Ticker} — {rationale}
3. {Action}: Consider adding {sector} exposure (currently underweight {pp})