Skip to content
Back to skills

Collection

ASecurity

Calculates optimal position sizes using volatility-adjusted methods, Kelly Criterion, and risk management

  • 24 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 8, 2026
ai-agentspythonbash

Works with

  • cli

Security analysis

A100/100

Pro scans all 21 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add mattnigh/skills_collection --skill collection --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Collection?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Collection
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mattnigh-collection-21bd9f4e/badge)](https://www.skillsdirectory.com/skills/mattnigh-collection-21bd9f4e)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
skill_id: position_sizer
name: Position Sizer
version: 1.0.0
description: Calculates optimal position sizes using volatility-adjusted methods, Kelly Criterion, and risk management
author: Trading System CTO
tags: [position-sizing, risk-management, volatility, kelly-criterion, trading]
tools:
  - calculate_position_size
  - calculate_portfolio_heat
  - adjust_position_for_volatility
  - calculate_kelly_fraction
dependencies:
  - src/core/risk_manager.py
  - src/agents/risk_agent.py
integrations:
  - src/core/risk_manager.py::RiskManager.calculate_position_size
  - src/agents/risk_agent.py::RiskAgent._calculate_position_size
---

# Position Sizer Skill

Advanced position sizing using multiple methodologies to optimize risk-adjusted returns.

## Overview

This skill provides:
- Fixed percentage method (simple risk-based sizing)
- Volatility-adjusted sizing (normalizes risk across assets)
- Kelly Criterion (optimal growth rate calculation)
- ATR-based sizing (Average True Range volatility)
- Portfolio heat management (total risk exposure)
- Dynamic position adjustments based on volatility changes

## Position Sizing Methods

### 1. Fixed Percentage Method
Risk a fixed % of account per trade (e.g., 1-2%).

**Formula**: `Position Size = (Account Value × Risk %) ÷ (Entry Price - Stop Price)`

**Best For**:
- Consistent risk management
- Beginning traders
- Low volatility markets

### 2. Volatility-Adjusted Method
Adjusts size based on asset volatility.

**Formula**: `Adjusted Size = Base Size × (Target Vol ÷ Asset Vol)`

**Best For**:
- Multi-asset portfolios
- Variable volatility regimes
- Professional risk management

### 3. Kelly Criterion
Maximizes long-term growth rate based on edge.

**Formula**: `Kelly % = (Win Rate × Avg Win/Loss Ratio - (1 - Win Rate)) ÷ Avg Win/Loss Ratio`

**Best For**:
- Systems with known edge
- Experienced traders
- Always use fractional Kelly (25-50%)

### 4. ATR-Based Method
Uses Average True Range for volatility assessment.

**Formula**: `Position Size = (Account × Risk %) ÷ (ATR × Multiplier)`

**Best For**:
- Trend-following strategies
- Volatile markets
- Technical traders

## Tools

### 1. calculate_position_size

Calculates optimal position size for a trade.

**Parameters:**
- `symbol` (required): Trading symbol
- `account_value` (required): Current account value
- `risk_per_trade_pct` (optional): Risk per trade % (default: 1.0)
- `method` (optional): Sizing method ("fixed_pct", "volatility_adjusted", "kelly", "atr", default: "volatility_adjusted")
- `current_price` (optional): Current market price
- `stop_loss_price` (optional): Planned stop loss price
- `win_rate` (optional): Historical win rate (for Kelly, default: 0.55)
- `avg_win_loss_ratio` (optional): Average win/loss ratio (for Kelly, default: 1.5)

**Returns:**
```json
{
  "success": true,
  "symbol": "AAPL",
  "recommendations": {
    "primary_method": {
      "method": "volatility_adjusted",
      "position_size_dollars": 5420.00,
      "position_size_shares": 35,
      "rationale": "Adjusted for 18.5% annualized volatility"
    },
    "alternative_methods": {
      "fixed_percentage": {
        "position_size_dollars": 5000.00,
        "position_size_shares": 32
      },
      "kelly_criterion": {
        "position_size_dollars": 6250.00,
        "position_size_shares": 40,
        "kelly_fraction": 0.25
      },
      "atr_based": {
        "position_size_dollars": 5100.00,
        "position_size_shares": 33
      }
    }
  },
  "risk_metrics": {
    "dollar_risk": 500.00,
    "risk_pct": 1.0,
    "position_value_pct": 5.42,
    "estimated_volatility": 0.185,
    "max_loss_at_stop": 500.00
  },
  "constraints": {
    "max_position_size_dollars": 10000.00,
    "max_position_size_pct": 10.0,
    "min_position_size_dollars": 100.00,
    "constrained": false
  },
  "validation": {
    "within_risk_limits": true,
    "sufficient_buying_power": true,
    "liquidity_adequate": true
  }
}
```

**Usage:**
```bash
python scripts/position_sizer.py calculate_position_size \
    --symbol AAPL \
    --account-value 100000 \
    --risk-per-trade-pct 1.0 \
    --method volatility_adjusted \
    --current-price 155.00 \
    --stop-loss-price 150.00
```

### 2. calculate_portfolio_heat

Calculates total risk exposure across all positions.

**Parameters:**
- `account_value` (required): Current account value
- `positions` (required): Array of current open positions
- `pending_trades` (optional): Array of trades being considered

**Returns:**
```json
{
  "success": true,
  "portfolio_heat": {
    "total_risk_dollars": 2500.00,
    "total_risk_pct": 2.5,
    "individual_positions": [
      {
        "symbol": "AAPL",
        "position_value": 5000.00,
        "risk_dollars": 500.00,
        "risk_pct": 0.5,
        "stop_loss": 148.50
      }
    ],
    "risk_distribution": {
      "tech_sector": 1.2,
      "finance_sector": 0.8,
      "healthcare_sector": 0.5
    },
    "capacity": {
      "max_total_risk_pct": 5.0,
      "remaining_capacity_pct": 2.5,
      "remaining_capacity_dollars": 2500.00
    }
  },
  "recommendations": {
    "can_add_position": true,
    "max_new_position_dollars": 1000.00,
    "warnings": []
  }
}
```

### 3. adjust_position_for_volatility

Adjusts existing position size based on volatility changes.

**Parameters:**
- `symbol` (required): Trading symbol
- `current_position_value` (required): Current position value
- `target_volatility` (optional): Target volatility % (default: 20.0)
- `rebalance_threshold` (optional): Rebalance if exceeds threshold (default: 0.15)

**Returns:**
```json
{
  "success": true,
  "symbol": "AAPL",
  "analysis": {
    "current_position_value": 5000.00,
    "current_volatility": 0.28,
    "target_volatility": 0.20,
    "volatility_ratio": 1.40
  },
  "recommendation": {
    "action": "reduce",
    "target_position_value": 3571.00,
    "adjustment_amount": -1429.00,
    "adjustment_shares": -9,
    "rationale": "Current volatility 40% above target"
  },
  "execution_plan": {
    "recommended": true,
    "urgency": "medium",
    "method": "market_order"
  }
}
```

### 4. calculate_kelly_fraction

Calculates Kelly Criterion for position sizing.

**Parameters:**
- `win_rate` (required): Probability of winning (0-1)
- `avg_win_loss_ratio` (required): Average win ÷ average loss
- `kelly_multiplier` (optional): Conservative multiplier (default: 0.25)

**Returns:**
```json
{
  "success": true,
  "kelly_calculation": {
    "raw_kelly_pct": 25.5,
    "adjusted_kelly_pct": 6.375,
    "kelly_multiplier": 0.25,
    "inputs": {
      "win_rate": 0.55,
      "avg_win_loss_ratio": 1.8
    },
    "formula": "(win_rate * avg_win_loss_ratio - (1 - win_rate)) / avg_win_loss_ratio"
  },
  "recommendation": {
    "position_size_pct": 6.375,
    "rationale": "Using 25% Kelly for conservative approach",
    "warnings": [
      "Full Kelly (25.5%) is aggressive - using fractional Kelly"
    ]
  }
}
```

## Safety Constraints

### Hard Limits
- **Max Single Position**: 10% of account value (configurable)
- **Max Total Risk**: 5% of account value
- **Min Position Size**: $100 (avoid excessive trading costs)
- **Max Leverage**: 2x (if using margin)

### Dynamic Adjustments
- Reduce size after losing streaks
- Increase size cautiously after winning streaks
- Scale down in high volatility
- Respect circuit breakers

## Integration with Risk Manager

This skill wraps and extends the existing `src/core/risk_manager.py`:

```python
from claude_skills import load_skill

position_skill = load_skill("position_sizer")

# Calculate position size for new trade
position = position_skill.calculate_position_size(
    symbol="AAPL",
    account_value=100000,
    risk_per_trade_pct=1.0,
    method="volatility_adjusted",
    current_price=155.00,
    stop_loss_price=150.00
)

# Check portfolio capacity before adding
heat = position_skill.calculate_portfolio_heat(
    account_value=100000,
    positions=current_positions,
    pending_trades=[position]
)

if heat["recommendations"]["can_add_position"]:
    execute_trade(position)
```

## Usage Example

```python
from claude_skills import load_skill

position_skill = load_skill("position_sizer")

# Calculate position size for new trade
position = position_skill.calculate_position_size(
    symbol="AAPL",
    account_value=100000,
    risk_per_trade_pct=1.0,
    method="volatility_adjusted",
    current_price=155.00,
    stop_loss_price=150.00
)

# Check portfolio capacity
heat = position_skill.calculate_portfolio_heat(
    account_value=100000,
    positions=current_positions
)

if heat["recommendations"]["can_add_position"]:
    execute_trade(position)
```

## CLI Usage

```bash
# Calculate position size
python scripts/position_sizer.py calculate_position_size \
    --symbol AAPL --account-value 100000 --risk-per-trade-pct 1.0

# Calculate portfolio heat
python scripts/position_sizer.py calculate_portfolio_heat \
    --account-value 100000 --positions-file positions.json

# Calculate Kelly fraction
python scripts/position_sizer.py calculate_kelly_fraction \
    --win-rate 0.55 --avg-win-loss-ratio 1.8
```

Files in this skill

  • 0Chan-smc__claude-code-workflow-lab__claude__skills__frontend-dev-guidelines__SKILL.md15.1 KB
  • 17hz__nextjs-template__claude__skills__example-skill__SKILL.md316 B
  • 1ambda__dataops-platform__claude__skills__context-synthesis__SKILL.md3.5 KB
  • 1natsu172__dotfiles__claude__skills__git-analysis__SKILL.md5.4 KB
  • 1natsu172__dotfiles__claude__skills__github-pr-best-practices__SKILL.md7.7 KB
  • 23Maestro__prospect-pipeline__claude__skills__npid-fastapi-skill.md26.1 KB
  • 360AYA25__ClaudeN8N__claude__skills__n8n-code-javascript__SKILL.md15.7 KB
  • 360AYA25__ClaudeN8N__claude__skills__n8n-code-python__SKILL.md17.5 KB
  • 360AYA25__ClaudeN8N__claude__skills__n8n-expression-syntax__SKILL.md9.4 KB
  • 360AYA25__ClaudeN8N__claude__skills__n8n-mcp-tools-expert__SKILL.md12.5 KB
  • 360AYA25__ClaudeN8N__claude__skills__n8n-node-configuration__SKILL.md16.6 KB
  • 360AYA25__ClaudeN8N__claude__skills__n8n-workflow-patterns__SKILL.md11.2 KB
  • 3x-Projetos__claude-memory-framework__claude__skills__scientist__SKILL.md14.8 KB
  • 5MinFutures__futures-arena__claude__skills__migration-tracker__SKILL.md16.2 KB
  • 5MinFutures__futures-arena__claude__skills__planning-guidelines__SKILL.md11.8 KB
  • 92Bilal26__TaskPilotAI__claude__skills__assessment-builder__SKILL.md17.5 KB
  • 92Bilal26__TaskPilotAI__claude__skills__book-scaffolding__SKILL.md19.1 KB
  • 92Bilal26__TaskPilotAI__claude__skills__code-validation-sandbox__SKILL.md6.2 KB
  • 92Bilal26__TaskPilotAI__claude__skills__exercise-designer__SKILL.md18.1 KB
  • 92Bilal26__TaskPilotAI__claude__skills__learning-objectives__SKILL.md24.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…