Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
alsk1992 avatar

Risk

  • 16 installs
  • 610 repo stars
  • Updated June 26, 2026
  • alsk1992/cloddsbot

risk is a Claude skill that provides a trading risk engine with VaR, stress testing, volatility regimes, circuit breakers, and kill switches.

About

This skill is a risk management engine for trading, exposing circuit breakers, loss limits, Value-at-Risk, volatility regime detection, stress testing, and kill switches. Developers use /risk commands or a TypeScript API to validate trades through a 10-check pipeline, record P&L, view portfolio VaR and CVaR, run stress scenarios, and configure limits. It returns an adjusted position size based on Kelly and volatility regime. It is the pre-trade validation layer for a trading bot.

  • Unified pre-trade risk engine running 10 checks including VaR and Kelly sizing
  • Volatility regime detection with position-size multipliers and stress testing
  • Circuit breakers, loss limits, and an emergency kill switch

Risk by the numbers

  • 16 all-time installs (skills.sh)
  • Ranked #739 of 1,106 Finance & Trading skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

risk capabilities & compatibility

Capabilities
risk management · value at risk · stress testing · position sizing
Use cases
trading
Pricing
Free
From the docs

What risk says it does

Full risk management engine: circuit breakers, loss limits, Value-at-Risk, volatility regime detection, stress testing, and kill switches.
SKILL.md
The risk engine is the single entry point for all pre-trade validation. It orchestrates 10 checks in order:
SKILL.md
npx skills add https://github.com/alsk1992/cloddsbot --skill risk

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs16
repo stars610
Last updatedJune 26, 2026
Repositoryalsk1992/cloddsbot

What it does

Validate trades through a risk engine with VaR, stress tests, limits, and kill switches.

Who is it for?

Adding pre-trade risk validation, loss limits, and VaR/stress analytics to a trading bot.

When should I use this skill?

A developer needs to validate a trade, set loss limits, or check portfolio risk before executing.

By the numbers

  • 10 ordered pre-trade checks
  • 5 stress scenarios
  • 4 volatility regimes (low, normal, high, extreme)

Files

SKILL.mdMarkdownGitHub ↗

Risk - Complete API Reference

Full risk management engine: circuit breakers, loss limits, Value-at-Risk, volatility regime detection, stress testing, and kill switches.

---

Chat Commands

View Risk Status

/risk                               Current risk status
/risk status                        Detailed status with portfolio metrics
/risk limits                        View all limits
/risk dashboard                     Real-time risk metrics (VaR, regime, HHI, etc.)

Risk Analytics

/risk var                           Value-at-Risk and CVaR numbers
/risk regime                        Current volatility regime and size multiplier
/risk stress [scenario]             Run stress test (flash_crash, black_swan, etc.)

Available stress scenarios: flash_crash, liquidity_crunch, platform_down, correlation_spike, black_swan

Configure Limits

/risk set max-loss 1000             Max daily loss ($)
/risk set max-loss-pct 10           Max daily loss (%)
/risk set max-drawdown 20           Max drawdown (%)
/risk set max-position 25           Max single position (%)
/risk set max-trades 50             Max trades per day
/risk set consecutive-losses 5      Stop after N losses

Circuit Breaker

/risk trip "manual stop"            Manually trip breaker
/risk reset                         Reset after cooldown
/risk kill                          Emergency stop all trading
/risk check 500                     Check if a $500 trade is allowed

---

TypeScript API Reference

Unified Risk Engine

The risk engine is the single entry point for all pre-trade validation. It orchestrates 10 checks in order:

1. Kill switch (SafetyManager) 2. Circuit breaker (execution-level) 3. Max order size 4. Exposure limits 5. Daily loss limit 6. Max drawdown 7. Position concentration 8. VaR limit 9. Volatility regime 10. Kelly sizing recommendation

import { createRiskEngine } from 'clodds/risk';

const engine = createRiskEngine(
  {
    varLimit: 500,           // Reject trades if portfolio VaR > $500
    varConfidence: 0.95,
    varWindowSize: 100,
    volatilityConfig: {
      lookbackWindow: 30,
      haltOnExtreme: true,   // Stop trading in extreme volatility
    },
  },
  {
    riskContext,              // From trading/risk.ts
    safetyManager,           // From trading/safety.ts
    circuitBreaker,          // From execution/circuit-breaker.ts
    kellyCalculator,         // From trading/kelly.ts
    getPositions: () => positions,
    getPositionValues: () => positions.map(p => p.value),
  }
);

Validate a Trade

const decision = engine.validateTrade({
  userId: 'user-123',
  platform: 'polymarket',
  marketId: 'market-456',
  outcome: 'YES',
  side: 'buy',
  size: 500,
  price: 0.65,
  estimatedEdge: 0.05,    // 5% edge
  confidence: 0.8,
  category: 'politics',
});

if (decision.approved) {
  // Use adjustedSize — may be smaller than requested (Kelly + regime)
  await executeTrade(decision.adjustedSize);
  console.log(`Regime: ${decision.regime}`);
  console.log(`Warnings: ${decision.warnings}`);
} else {
  console.log(`Blocked: ${decision.reason}`);
  // Check which step failed:
  for (const check of decision.checks) {
    console.log(`  ${check.name}: ${check.passed ? 'PASS' : 'FAIL'} — ${check.message}`);
  }
}

Record Trade P&L (feeds VaR + volatility)

engine.recordPnL({
  pnlUsd: -45.20,
  pnlPct: -0.09,
  positionId: 'polymarket:market-456:YES',
  timestamp: new Date(),
});

Portfolio Risk Snapshot

const risk = engine.getPortfolioRisk();
console.log(`Total value: $${risk.totalValue}`);
console.log(`VaR (95%): $${risk.var95}`);
console.log(`VaR (99%): $${risk.var99}`);
console.log(`CVaR (95%): $${risk.cvar95}`);
console.log(`Regime: ${risk.regime}`);
console.log(`Drawdown: ${risk.drawdownPct}%`);

Value-at-Risk

import { createVaRCalculator, calculateVaR, calculateCVaR } from 'clodds/risk';

// Full calculator with rolling window
const calc = createVaRCalculator({ windowSize: 100, confidenceLevel: 0.95 });
calc.addObservation({ pnlUsd: -50, pnlPct: -0.05, timestamp: new Date() });
const result = calc.calculateAt(0.99);
console.log(`VaR (99%): $${result.historicalVaR}`);
console.log(`CVaR (99%): $${result.cvar}`);

// Quick one-liners
const var95 = calculateVaR(pnlArray, 0.95);
const cvar95 = calculateCVaR(pnlArray, 0.95);

Volatility Regime Detection

import { createVolatilityDetector, detectRegime } from 'clodds/risk';

const detector = createVolatilityDetector({
  lookbackWindow: 30,
  haltOnExtreme: false,
  regimeMultipliers: { low: 1.2, normal: 1.0, high: 0.5, extreme: 0.25 },
});

detector.addObservation(0.03);  // 3% P&L
const snapshot = detector.detect();
console.log(`Regime: ${snapshot.regime}`);          // 'low' | 'normal' | 'high' | 'extreme'
console.log(`Size multiplier: ${snapshot.sizeMultiplier}x`);
console.log(`Should halt: ${snapshot.shouldHalt}`);

// One-shot from array
const regime = detectRegime(recentPnLPcts);

Stress Testing

import { runStressTest, runAllScenarios, getAvailableScenarios } from 'clodds/risk';

const result = runStressTest(positions, 'flash_crash');
console.log(`Estimated loss: $${result.estimatedLoss} (${result.estimatedLossPct}%)`);
console.log(`Severity: ${result.severity}`);
console.log(`Recommendations: ${result.recommendations.join(', ')}`);

// Run all scenarios at once
const all = runAllScenarios(positions);  // sorted by severity

// Override scenario parameters
const custom = runStressTest(positions, 'flash_crash', {
  scenarios: { flash_crash: { lossPct: 30, description: 'Severe crash' } },
});

Risk Dashboard

import { getRiskDashboard } from 'clodds/risk';

const dashboard = engine.getDashboard();
console.log(`VaR (95%): $${dashboard.portfolioVaR95}`);
console.log(`Regime: ${dashboard.regime} (${dashboard.regimeSizeMultiplier}x)`);
console.log(`Daily P&L: $${dashboard.dailyPnL} / $${dashboard.dailyLossLimit}`);
console.log(`Drawdown: ${dashboard.currentDrawdown}% / ${dashboard.maxDrawdown}%`);
console.log(`Concentration HHI: ${dashboard.concentrationHHI}`);
console.log(`Kill switch: ${dashboard.killSwitchActive}`);
console.log(`Warnings: ${dashboard.warnings}`);

Circuit Breaker (Standalone)

import { createCircuitBreaker, MODERATE_CONFIG } from 'clodds/risk';

// Feature-engineering circuit breaker (market-condition-aware)
const breaker = createCircuitBreaker(MODERATE_CONFIG);
breaker.startMonitoring();

if (!breaker.canTrade('polymarket', marketId)) {
  return; // Trading halted
}

breaker.recordTrade({ success: true, pnl: 2.5 });

Kill Switch

// Emergency stop via SafetyManager — no auto-resume
safetyManager.killSwitch('Market anomaly detected');

// Resume manually after review
safetyManager.resumeTrading();

---

Risk Engine Checks

#CheckModuleBlocks Trade?
1Kill switchSafetyManagerYes
2Circuit breakerCircuitBreakerYes
3Max order sizetrading/riskYes
4Exposure limitstrading/riskYes
5Daily loss limitSafetyManagerYes
6Max drawdownSafetyManagerYes
7ConcentrationSafetyManagerYes
8VaR limitVaRCalculatorYes (if configured)
9Volatility regimeVolatilityDetectorYes (if extreme + halt)
10Kelly sizingDynamicKellyNo (adjusts size)

Circuit Breaker Triggers

TriggerDefaultDescription
Daily loss (USD)$1,000Absolute loss limit
Daily loss (%)10%Percentage of capital
Drawdown20%Peak-to-trough
Consecutive losses5Losses in a row
Error rate50%Failed order rate
Max trades50Trades per day

Volatility Regimes

RegimeSize MultiplierDescription
low1.2xCalm markets, slightly larger positions
normal1.0xBaseline conditions
high0.5xElevated volatility, half size
extreme0.25xCrisis — quarter size or halt trading

Stress Test Scenarios

ScenarioLossDescription
flash_crash20%All positions lose value instantly
liquidity_crunch10%Slippage doubles, partial fills
platform_down15%Primary platform offline
correlation_spike25%All positions move together
black_swan40%3-sigma tail event

Status Levels

StatusDescription
armedNormal, trading allowed
warningApproaching limits (80%)
trippedLimit exceeded, trading stopped
killedEmergency stop, manual reset required

---

Recovery Process

1. Auto-reset: Next day at midnight (daily counters) 2. Cooldown: Circuit breaker auto-resets after cooldown period 3. Manual reset: /risk reset to re-arm 4. Kill recovery: /risk reset after manual review (no auto-resume)

---

Best Practices

1. Start conservative — Lower limits while learning 2. Don't override — Respect the circuit breaker 3. Review trips — Understand why limits were hit 4. Monitor VaR — Use /risk var and /risk dashboard regularly 5. Run stress tests — Use /risk stress before large position changes 6. Watch regime — Use /risk regime to understand current volatility 7. Adjust limits — Based on strategy performance and regime

Related skills

FAQ

How many checks run before a trade is approved?

The unified engine runs 10 checks in order, from kill switch through Kelly sizing.

What stress scenarios are available?

flash_crash, liquidity_crunch, platform_down, correlation_spike, and black_swan.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.