风险管理 risk

这是一个全面的风险管理引擎,用于量化交易中的风险控制,包括价值风险评估、压力测试、波动率监测等关键功能。

风险管理 0 次安装 0 次浏览 更新于 3/5/2026

name: 风险管理 description: “统一风险引擎,包含VaR、压力测试、波动率制度和自动控制” emoji: “🛑”

风险管理 - 完整API参考

完整的风险管理引擎:熔断机制、损失限制、风险价值(Value-at-Risk)、波动率制度检测、压力测试和紧急停止开关。


聊天命令

查看风险状态

/risk                               当前风险状态
/risk status                        详细状态与投资组合指标
/risk limits                        查看所有限制
/risk dashboard                     实时风险指标(VaR、制度、HHI等)

风险分析

/risk var                           风险价值和条件风险价值
/risk regime                        当前波动率制度和大小乘数
/risk stress [scenario]             运行压力测试(flash_crash、black_swan等)

可用的压力情景: flash_crash, liquidity_crunch, platform_down, correlation_spike, black_swan

配置限制

/risk set max-loss 1000             最大日损失 ($)
/risk set max-loss-pct 10           最大日损失 (%)
/risk set max-drawdown 20           最大回撤 (%)
/risk set max-position 25           单一位置最大 (%)
/risk set max-trades 50             每日最大交易次数
/risk set consecutive-losses 5      连续损失后停止

熔断机制

/risk trip "manual stop"            手动触发熔断
/risk reset                         冷却后重置
/risk kill                          紧急停止所有交易
/risk check 500                     检查是否允许500美元的交易

TypeScript API参考

统一风险引擎

风险引擎是所有交易前验证的单一入口点。它按顺序协调10个检查:

  1. 紧急停止开关(SafetyManager)
  2. 熔断机制(执行级别)
  3. 最大订单大小
  4. 暴露限制
  5. 日损失限制
  6. 最大回撤
  7. 仓位集中
  8. VaR限制
  9. 波动率制度
  10. Kelly大小建议
import { createRiskEngine } from 'clodds/risk';

const engine = createRiskEngine(
  {
    varLimit: 500,           // 如果投资组合VaR > $500则拒绝交易
    varConfidence: 0.95,
    varWindowSize: 100,
    volatilityConfig: {
      lookbackWindow: 30,
      haltOnExtreme: true,   // 在极端波动时停止交易
    },
  },
  {
    riskContext,              // 来自 trading/risk.ts
    safetyManager,           // 来自 trading/safety.ts
    circuitBreaker,          // 来自 execution/circuit-breaker.ts
    kellyCalculator,         // 来自 trading/kelly.ts
    getPositions: () => positions,
    getPositionValues: () => positions.map(p => p.value),
  }
);

验证交易

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%的优势
  confidence: 0.8,
  category: 'politics',
});

if (decision.approved) {
  // 使用adjustedSize — 可能比请求的小(Kelly + 制度)
  await executeTrade(decision.adjustedSize);
  console.log(`Regime: ${decision.regime}`);
  console.log(`Warnings: ${decision.warnings}`);
} else {
  console.log(`Blocked: ${decision.reason}`);
  // 检查哪个步骤失败:
  for (const check of decision.checks) {
    console.log(`  ${check.name}: ${check.passed ? 'PASS' : 'FAIL'} — ${check.message}`);
  }
}

记录交易盈亏(提供VaR + 波动率)

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

投资组合风险快照

const risk = engine.getPortfolioRisk();
console.log(`总价值: $${risk.totalValue}`);
console.log(`VaR (95%): $${risk.var95}`);
console.log(`VaR (99%): $${risk.var99}`);
console.log(`CVaR (95%): $${risk.cvar95}`);
console.log(`制度: ${risk.regime}`);
console.log(`回撤: ${risk.drawdownPct}%`);

风险价值

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

// 完整的计算器与滚动窗口
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}`);

// 快速单行代码
const var95 = calculateVaR(pnlArray, 0.95);
const cvar95 = calculateCVaR(pnlArray, 0.95);

波动率制度检测

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%盈亏
const snapshot = detector.detect();
console.log(`制度: ${snapshot.regime}`);          // 'low' | 'normal' | 'high' | 'extreme'
console.log(`大小乘数: ${snapshot.sizeMultiplier}x`);
console.log(`应该停止: ${snapshot.shouldHalt}`);

// 从数组一次性
const regime = detectRegime(recentPnLPcts);

压力测试

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

const result = runStressTest(positions, 'flash_crash');
console.log(`估计损失: $${result.estimatedLoss} (${result.estimatedLossPct}%)`);
console.log(`严重性: ${result.severity}`);
console.log(`建议: ${result.recommendations.join(', ')}`);

// 一次性运行所有情景
const all = runAllScenarios(positions);  // 按严重性排序

// 覆盖情景参数
const custom = runStressTest(positions, 'flash_crash', {
  scenarios: { flash_crash: { lossPct: 30, description: '严重崩溃' } },
});

风险仪表板

import { getRiskDashboard } from 'clodds/risk';

const dashboard = engine.getDashboard();
console.log(`VaR (95%): $${dashboard.portfolioVaR95}`);
console.log(`制度: ${dashboard.regime} (${dashboard.regimeSizeMultiplier}x)`);
console.log(`每日盈亏: $${dashboard.dailyPnL} / $${dashboard.dailyLossLimit}`);
console.log(`回撤: ${dashboard.currentDrawdown}% / ${dashboard.maxDrawdown}%`);
console.log(`集中度HHI: ${dashboard.concentrationHHI}`);
console.log(`紧急停止开关: ${dashboard.killSwitchActive}`);
console.log(`警告: ${dashboard.warnings}`);

熔断机制(独立)

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

// 特性工程熔断机制(市场条件感知)
const breaker = createCircuitBreaker(MODERATE_CONFIG);
breaker.startMonitoring();

if (!breaker.canTrade('polymarket', marketId)) {
  return; // 交易停止
}

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

紧急停止开关

// 通过SafetyManager紧急停止 —— 无自动恢复
safetyManager.killSwitch('市场异常检测');

// 手动审核后恢复交易
safetyManager.resumeTrading();

风险引擎检查

# 检查 模块 阻止交易?
1 紧急停止开关 SafetyManager
2 熔断机制 CircuitBreaker
3 最大订单大小 trading/risk
4 暴露限制 trading/risk
5 日损失限制 SafetyManager
6 最大回撤 SafetyManager
7 集中度 SafetyManager
8 VaR限制 VaRCalculator 如果配置则阻止
9 波动率制度 VolatilityDetector 如果极端+停止则阻止
10 Kelly大小 DynamicKelly 否(调整大小)

熔断机制触发器

触发器 默认 描述
日损失 (USD) $1,000 绝对损失限制
日损失 (%) 10% 资本的百分比
回撤 20% 峰值到谷底
连续损失 5 连续损失次数
错误率 50% 失败订单率
最大交易次数 50 每天的交易次数

波动率制度

制度 大小乘数 描述
low 1.2x 市场平静,稍大的仓位
normal 1.0x 基线条件
high 0.5x 波动率上升,半仓
extreme 0.25x 危机 —— 四分之一仓位或停止交易

压力测试情景

情景 损失 描述
flash_crash 20% 所有仓位瞬间贬值
liquidity_crunch 10% 滑点翻倍,部分成交
platform_down 15% 主要平台离线
correlation_spike 25% 所有仓位一起移动
black_swan 40% 3-sigma尾部事件

状态级别

状态 描述
armed 正常,允许交易
warning 接近限制(80%)
tripped 超限,停止交易
killed 紧急停止,需要手动重置

恢复流程

  1. 自动重置:第二天午夜(日计数器)
  2. 冷却:熔断机制在冷却期后自动重置
  3. 手动重置/risk reset 重新武装
  4. 杀死恢复:手动审核后/risk reset(无自动恢复)

最佳实践

  1. 保守开始 —— 学习时降低限制
  2. 不覆盖 —— 尊重熔断机制
  3. 审核触发 —— 了解为何达到限制
  4. 监控VaR —— 定期使用/risk var/risk dashboard
  5. 运行压力测试 —— 在大的仓位变化前使用/risk stress
  6. 观察制度 —— 使用/risk regime了解当前波动率
  7. 调整限制 —— 根据策略性能和制度