name: monte-carlo-engine description: 用于概率建模、风险量化和不确定性传播的蒙特卡洛模拟引擎技能 allowed-tools:
- Read
- Write
- Glob
- Grep
- Bash
metadata:
specialization: 决策智能
domain: 商业
category: 模拟
priority: high
shared-candidate: true
tools-libraries:
- numpy
- scipy.stats
- pymc
- chaospy
- SALib
蒙特卡洛引擎
概述
蒙特卡洛引擎技能提供全面的概率模拟能力,用于量化不确定性、评估风险以及通过复杂模型传播变异性。它支持多种抽样策略、相关性处理以及模拟输出的统计分析,为数据驱动的决策提供支持。
能力
- 随机变量生成(正态、三角、PERT、均匀、对数正态、贝塔等)
- 拉丁超立方抽样(LHS)
- 相关性结构处理(Cholesky分解、Copula函数)
- 收敛性监控和自适应迭代
- 统计输出分析(均值、方差、百分位数)
- 龙卷风图生成
- 风险价值(VaR)和条件风险价值(CVaR)计算
- 并行模拟执行
使用流程
- 决策支持的蒙特卡洛模拟
- 战略情景开发
- 假设分析框架
- 预测分析实施
使用方法
分布规范
# 定义输入分布
input_variables = {
"revenue": {
"distribution": "triangular",
"parameters": {"min": 800000, "mode": 1000000, "max": 1500000}
},
"cost": {
"distribution": "normal",
"parameters": {"mean": 600000, "std": 50000}
},
"market_share": {
"distribution": "PERT",
"parameters": {"min": 0.05, "mode": 0.10, "max": 0.20}
},
"unit_price": {
"distribution": "uniform",
"parameters": {"min": 45, "max": 55}
}
}
相关性矩阵
# 定义变量间的相关性
correlations = {
"variables": ["revenue", "cost", "market_share"],
"matrix": [
[1.0, 0.6, 0.3], # revenue相关性
[0.6, 1.0, 0.2], # cost相关性
[0.3, 0.2, 1.0] # market_share相关性
]
}
模型函数
# 定义要模拟的模型
def profit_model(inputs):
revenue = inputs["revenue"]
cost = inputs["cost"]
profit = revenue - cost
return {"profit": profit, "margin": profit / revenue}
抽样策略
- 简单随机抽样:标准蒙特卡洛
- 拉丁超立方抽样:以更少的样本获得更好的覆盖
- 拟蒙特卡洛:低差异序列(Sobol, Halton)
- 重要性抽样:关注尾部事件
收敛性监控
该技能监控:
- 运行均值和标准差
- 变异系数的收敛性
- 百分位数的稳定性
- 自适应停止标准
输入模式
{
"input_variables": {
"variable_name": {
"distribution": "string",
"parameters": "object"
}
},
"correlations": {
"variables": ["string"],
"matrix": "2D array"
},
"model": "function or expression",
"simulation_options": {
"iterations": "number",
"sampling_method": "random|lhs|quasi_mc",
"random_seed": "number",
"parallel": "boolean",
"convergence_threshold": "number"
},
"output_options": {
"percentiles": ["number"],
"risk_metrics": ["VaR", "CVaR"],
"confidence_level": "number"
}
}
输出模式
{
"summary_statistics": {
"output_variable": {
"mean": "number",
"std": "number",
"median": "number",
"min": "number",
"max": "number",
"percentiles": "object"
}
},
"risk_metrics": {
"VaR": "number",
"CVaR": "number",
"probability_of_loss": "number"
},
"convergence_info": {
"iterations_run": "number",
"converged": "boolean",
"stability_scores": "object"
},
"raw_results": "array (optional)",
"tornado_data": "object",
"visualization_paths": ["string"]
}
最佳实践
- 使用至少10,000次迭代以获得稳定的百分位数估计
- 应用拉丁超立方抽样以提高效率
- 与领域专家一起验证输入分布
- 包含相关性以获得更现实的结果
- 在接收结果前监控收敛性
- 执行敏感性分析以识别关键驱动因素
- 记录所有分布假设
集成点
- 从风险分布拟合器接收分布
- 输入到敏感性分析器进行重要性分析
- 支持风险价值计算器获取风险指标
- 与决策树构建器连接以进行决策节点估值
- 与实物期权分析器集成以进行期权估值