portfolio-manager-agent

Portfolio allocation and rebalancing optimizer. Manages asset allocation across stocks/cash/bonds, performs periodic rebalancing, and ensures diversification according to market regime and risk tolerance.

16 stars

Best use case

portfolio-manager-agent is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Portfolio allocation and rebalancing optimizer. Manages asset allocation across stocks/cash/bonds, performs periodic rebalancing, and ensures diversification according to market regime and risk tolerance.

Teams using portfolio-manager-agent should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/portfolio-manager-agent/SKILL.md --create-dirs "https://raw.githubusercontent.com/diegosouzapw/awesome-omni-skill/main/skills/ai-agents/portfolio-manager-agent/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/portfolio-manager-agent/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How portfolio-manager-agent Compares

Feature / Agentportfolio-manager-agentStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Portfolio allocation and rebalancing optimizer. Manages asset allocation across stocks/cash/bonds, performs periodic rebalancing, and ensures diversification according to market regime and risk tolerance.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Portfolio Manager Agent - 포트폴리오 매니저

## Role
포트폴리오의 자산 배분, 리밸런싱, 다각화를 관리하여 위험 대비 수익을 최적화합니다.

## Core Capabilities

### 1. Asset Allocation Strategy

#### Dynamic Allocation by Market Regime

```python
# RISK_ON (경기 확장, VIX < 20)
allocation = {
    'stocks': 0.70,
    'bonds': 0.20,
    'cash': 0.10
}

# RISK_OFF (경기 수축, VIX > 25)
allocation = {
    'stocks': 0.40,
    'bonds': 0.40,
    'cash': 0.20
}

# TRANSITION (전환기, VIX 20-25)
allocation = {
    'stocks': 0.55,
    'bonds': 0.30,
    'cash': 0.15
}
```

#### Sector Diversification

```
Tech: 최대 40%
Finance: 최대 30%
Healthcare: 최대 25%
Other sectors: 최대 20% each
```

### 2. Rebalancing Triggers

```
IF deviation > 5%:
  → Rebalance recommended

Example:
Target: Stocks 70%
Current: Stocks 76%
Deviation: +6% → REBALANCE

IF deviation > 10%:
  → Urgent rebalance
  → Immediate notification
```

### 3. Risk Metrics Monitoring

- **Portfolio Beta**: 시장 대비 변동성
- **Sharpe Ratio**: 위험 대비 수익
- **Max Drawdown**: 최대 낙폭
- **Correlation Matrix**: 종목 간 상관관계

### 4. Position Sizing

```python
# Kelly Criterion (modified)
position_size = (win_rate * avg_win - (1 - win_rate) * avg_loss) / avg_win

# Position limits
position_size = min(position_size, MAX_SINGLE_POSITION)  # 15%
```

## Decision Framework

```
Step 1: Analyze Current Portfolio
  - Current allocation
  - Individual positions
  - Sector breakdown
  - Risk metrics

Step 2: Detect Market Regime
  from backend.ai.market_regime import MarketRegimeDetector
  regime = detector.detect_regime(market_data)

Step 3: Determine Target Allocation
  Based on regime:
    - RISK_ON → Aggressive (70/20/10)
    - RISK_OFF → Conservative (40/40/20)
    - TRANSITION → Balanced (55/30/15)

Step 4: Calculate Deviation
  deviation = |current - target|

Step 5: Rebalancing Decision
  IF deviation > threshold:
    → Generate rebalancing trades
  ELSE:
    → Hold current allocation

Step 6: Apply Constitutional Limits
  - Check Article 4 compliance
  - Ensure position limits
  - Verify sector limits
```

## Output Format

```json
{
  "agent": "portfolio_manager",
  "recommendation": "REBALANCE|HOLD",
  "confidence": 0.85,
  "reasoning": "Market regime RISK_OFF로 전환, 주식 비중 축소 필요",
  "current_allocation": {
    "stocks": 0.76,
    "bonds": 0.18,
    "cash": 0.06,
    "total_value_usd": 100000
  },
  "target_allocation": {
    "stocks": 0.55,
    "bonds": 0.30,
    "cash": 0.15
  },
  "deviation": {
    "stocks": 0.21,
    "bonds": -0.12,
    "cash": -0.09,
    "max_deviation": 0.21
  },
  "rebalancing_trades": [
    {
      "action": "SELL",
      "asset_class": "stocks",
      "amount_usd": 21000,
      "reason": "주식 비중 76% → 55% 조정"
    },
    {
      "action": "BUY",
      "asset_class": "bonds",
      "amount_usd": 12000,
      "reason": "채권 비중 18% → 30% 증대"
    },
    {
      "action": "INCREASE",
      "asset_class": "cash",
      "amount_usd": 9000,
      "reason": "현금 비중 확대 (방어적 포지션)"
    }
  ],
  "risk_analysis": {
    "portfolio_beta": 1.15,
    "sharpe_ratio": 1.45,
    "max_drawdown": -0.08,
    "expected_volatility": 0.18
  },
  "sector_breakdown": {
    "Technology": 0.35,
    "Finance": 0.20,
    "Healthcare": 0.15,
    "Other": 0.30
  },
  "next_review_date": "2025-12-28"
}
```

## Examples

**Example 1**: RISK_ON → 공격적 배분
```
Input:
- VIX: 15
- GDP Growth: 3.0%
- Market Regime: RISK_ON
- Current: Stocks 55%, Bonds 30%, Cash 15%

Output:
- Recommendation: REBALANCE
- Target: Stocks 70%, Bonds 20%, Cash 10%
- Trades:
  * BUY Stocks $15,000
  * SELL Bonds $10,000
  * REDUCE Cash $5,000
```

**Example 2**: RISK_OFF → 방어적 배분
```
Input:
- VIX: 28
- Recession signals
- Market Regime: RISK_OFF
- Current: Stocks 70%, Bonds 20%, Cash 10%

Output:
- Recommendation: URGENT_REBALANCE
- Target: Stocks 40%, Bonds 40%, Cash 20%
- Trades:
  * SELL Stocks $30,000
  * BUY Bonds $20,000
  * INCREASE Cash $10,000
```

**Example 3**: 편차 작음 → 유지
```
Input:
- Current: Stocks 68%, Bonds 22%, Cash 10%
- Target: Stocks 70%, Bonds 20%, Cash 10%
- Deviation: 2%, 2%, 0%

Output:
- Recommendation: HOLD
- Reasoning: "편차 < 5%, 거래 비용 고려 시 유지가 유리"
```

**Example 4**: 섹터 리밸런싱
```
Input:
- Tech: 45% (MAX 40%)
- Finance: 15%
- Healthcare: 10%

Output:
- Recommendation: SECTOR_REBALANCE
- Trades:
  * SELL Tech stocks $5,000 (45% → 40%)
  * BUY Healthcare $3,000
  * BUY Finance $2,000
```

## Guidelines

### Do's ✅
- **정기 리뷰**: 매주 또는 격주 점검
- **Market Regime 우선**: 거시 환경에 따른 배분
- **Gradual Rebalancing**: 급격한 변화 지양
- **Tax Efficiency**: 세금 효율적 리밸런싱

### Don'ts ❌
- 과도한 거래 금지 (거래 비용 고려)
- 단기 변동성에 과민 반응 금지
- 감정적 배분 변경 금지
- 헌법 제4조 위반 금지

## Integration with Market Regime Detector

```python
from backend.ai.market_regime import MarketRegimeDetector
from backend.ai.regime_detector import detect_market_regime

detector = MarketRegimeDetector()

regime_data = {
    'vix': 18,
    'yield_curve_10y2y': 0.3,
    'fed_stance': 'neutral',
    'gdp_growth': 0.025,
    'unemployment': 0.038,
    'cpi': 0.028
}

regime = detector.detect_regime(regime_data)

# Output:
# {
#   "current_regime": "RISK_ON",
#   "confidence": 0.75,
#   "recommended_asset_allocation": {
#     "stocks": 0.70,
#     "bonds": 0.20,
#     "cash": 0.10
#   },
#   "regime_indicators": {
#     "vix_signal": "LOW_VOLATILITY",
#     "yield_curve_signal": "NORMAL",
#     "macro_signal": "EXPANSION"
#   }
# }
```

## Rebalancing Algorithm

### Threshold-Based Rebalancing

```python
def check_rebalancing_needed(
    current: Dict[str, float],
    target: Dict[str, float],
    threshold: float = 0.05
) -> bool:
    """Check if rebalancing is needed"""
    
    for asset_class in target.keys():
        deviation = abs(current[asset_class] - target[asset_class])
        
        if deviation > threshold:
            return True
    
    return False

# Example
current = {'stocks': 0.76, 'bonds': 0.18, 'cash': 0.06}
target = {'stocks': 0.70, 'bonds': 0.20, 'cash': 0.10}

needs_rebalance = check_rebalancing_needed(current, target)  # True
```

### Optimal Trade Calculation

```python
def calculate_rebalancing_trades(
    current_allocation: Dict[str, float],
    target_allocation: Dict[str, float],
    total_portfolio_value: float
) -> List[Dict]:
    """Calculate optimal trades for rebalancing"""
    
    trades = []
    
    for asset_class, target_pct in target_allocation.items():
        current_pct = current_allocation[asset_class]
        current_value = current_pct * total_portfolio_value
        target_value = target_pct * total_portfolio_value
        
        diff = target_value - current_value
        
        if abs(diff) > 1000:  # Minimum trade $1,000
            action = "BUY" if diff > 0 else "SELL"
            trades.append({
                "asset_class": asset_class,
                "action": action,
                "amount_usd": abs(diff),
                "from_pct": current_pct,
                "to_pct": target_pct
            })
    
    return trades
```

## Performance Metrics

- **Rebalancing Frequency**: 목표 월 1-2회
- **Transaction Costs**: < 0.5% of portfolio value
- **Sharpe Ratio Improvement**: 목표 +10% vs buy-and-hold
- **Drawdown Reduction**: 목표 -20% vs unmanaged portfolio

## Constitutional Compliance

```python
from backend.constitution import Constitution

constitution = Constitution()

# Validate rebalancing trades
for trade in rebalancing_trades:
    # Check if new allocation violates Article 4
    new_allocation = apply_trade(current_allocation, trade)
    
    is_valid, violations, _ = constitution.validate_allocation(
        new_allocation,
        current_positions
    )
    
    if not is_valid:
        # Adjust trade to comply
        trade = adjust_trade_for_compliance(trade, violations)
```

## Risk-Adjusted Position Sizing

### Modern Portfolio Theory (MPT) Integration

```python
import numpy as np
from scipy.optimize import minimize

def optimize_portfolio(
    returns: np.array,
    covariance: np.array,
    risk_free_rate: float = 0.03
) -> np.array:
    """Optimize portfolio using MPT"""
    
    n_assets = len(returns)
    
    # Objective: Maximize Sharpe Ratio
    def objective(weights):
        portfolio_return = np.dot(weights, returns)
        portfolio_std = np.sqrt(np.dot(weights, np.dot(covariance, weights)))
        sharpe = (portfolio_return - risk_free_rate) / portfolio_std
        return -sharpe  # Minimize negative Sharpe
    
    # Constraints
    constraints = [
        {'type': 'eq', 'fun': lambda w: np.sum(w) - 1},  # Sum to 1
        {'type': 'ineq', 'fun': lambda w: w}  # Non-negative
    ]
    
    # Bounds (max 15% per stock)
    bounds = tuple((0, 0.15) for _ in range(n_assets))
    
    # Initial guess
    x0 = np.array([1/n_assets] * n_assets)
    
    # Optimize
    result = minimize(objective, x0, method='SLSQP', bounds=bounds, constraints=constraints)
    
    return result.x
```

## Collaboration with Other Agents

```
War Room → Trading Signals
  ↓
Portfolio Manager → Check current allocation
  ↓
IF new position causes imbalance:
  → Suggest partial position size
  OR
  → Recommend selling other positions first

Example:
War Room: BUY AAPL $15,000
Portfolio Manager: "Tech sector already 38%, BUY only $10,000"
```

## Reporting

### Weekly Portfolio Report

```markdown
# Portfolio Performance Report - Week of 2025-12-21

## Asset Allocation
- Stocks: 68% (Target: 70%) ✓
- Bonds: 22% (Target: 20%) ⚠️
- Cash: 10% (Target: 10%) ✓

## Performance
- Weekly Return: +2.3%
- YTD Return: +15.7%
- Sharpe Ratio: 1.45
- Max Drawdown: -8.2%

## Actions Taken
- None (within tolerance)

## Next Review: 2025-12-28
```

## Version History

- **v1.0** (2025-12-21): Initial release with MPT optimization and market regime integration

Related Skills

llm-manager

16
from diegosouzapw/awesome-omni-skill

Claude acts as manager/architect while delegating all coding to external LLM CLIs (Gemini, Codex, Qwen). Claude never writes code - only plans, delegates, and verifies. Use when user says "manage", "architect mode", "delegate to", or wants Claude to drive another LLM.

data-pipeline-manager

16
from diegosouzapw/awesome-omni-skill

Design and troubleshoot robust data pipelines with comprehensive quality validation, error handling, and monitoring capabilities for bioinformatics and data processing workflows

analyzing-innovation-portfolio

16
from diegosouzapw/awesome-omni-skill

Analyze the CustomGPT.ai Labs Innovation workbook and cost tracking data to surface portfolio-level insights, trends, and recommendations for where to focus Innovation efforts.

agent-risk-manager

16
from diegosouzapw/awesome-omni-skill

Expert risk manager specializing in comprehensive risk assessment, mitigation strategies, and compliance frameworks. Masters risk modeling, stress testing, and regulatory compliance with focus on protecting organizations from financial, operational, and strategic risks.

agent-project-manager

16
from diegosouzapw/awesome-omni-skill

Expert project manager specializing in project planning, execution, and delivery. Masters resource management, risk mitigation, and stakeholder communication with focus on delivering projects on time, within budget, and exceeding expectations.

agent-manager-skill

16
from diegosouzapw/awesome-omni-skill

Manage multiple local CLI agents via tmux sessions (start/stop/monitor/assign) with cron-friendly scheduling.

agent-customer-success-manager

16
from diegosouzapw/awesome-omni-skill

Expert customer success manager specializing in customer retention, growth, and advocacy. Masters account health monitoring, strategic relationship building, and driving customer value realization to maximize satisfaction and revenue growth.

advanced-math-trading/portfolio-factors

16
from diegosouzapw/awesome-omni-skill

Factor modeling and portfolio construction (Markowitz, Black-Litterman, constraints, turnover).

social-media-manager

16
from diegosouzapw/awesome-omni-skill

Agente especialista em Social Media para múltiplas empresas (Multi-tenant). Cria estratégias semanais, gerencia perfis de marca e gera conteúdo (texto e imagem) em massa para publicação manual.

athlete-social-media-manager

16
from diegosouzapw/awesome-omni-skill

Create brand-safe content for athletes. Personal branding strategy, engagement optimization, crisis communication, sponsor integration.

state-directory-manager

16
from diegosouzapw/awesome-omni-skill

Manage persistent state directories for bash scripts

pixi-package-manager

16
from diegosouzapw/awesome-omni-skill

This skill should be used when the user asks to "set up pixi", "add pixi dependencies", "create pixi environment", "migrate from conda to pixi", "configure pixi.toml", "add pixi tasks", "set up reproducible environment", "manage conda-forge packages", "create multi-environment project", or needs guidance on pixi package manager, conda-forge integration, PyPI dependencies in pixi, pixi task automation, or replacing conda/mamba workflows with pixi.