# 风险评估模型库

这是一个用于企业风险评估的Python库，提供了完整的风险评估功能，包括数据加载、风险计算、结果导出和可视化。

## 安装

```bash
pip install risk-assessment
```

## 功能特点

- 支持从Excel文件加载数据
- 计算多种风险类型（战略风险、财务风险、市场风险、法律信用风险、事件风险）
- 完整的A类风险（阈值风险）判断
- 生成详细的风险评估报告和计算过程
- 可视化风险评分结果
- 支持自定义配置参数

## 使用示例

### 基本用法

```python
from risk_assessment_package.main import RiskModel

# 创建模型实例
risk_model = RiskModel(config_path='config.yaml')  # 或者 RiskModel() 使用默认配置

try:
    # 加载数据（假设Excel文件格式为：第一列是指标名称，后续列为各月份数据）
    risk_model.load_data('test.xlsx', sheet_name='Sheet3')
    
    # 计算所有月份的风险
    results = risk_model.calculate_total_risk()
    
    # 输出结果
    print("\n=== 风险评估结果 ===")
    for result in results:
        print(f"\n期间: {result['period']}月")
        print(f"总风险评分: {result['total_score']:.2f}")
        print(f"风险等级: {result['risk_level']}")
        # 只输出触发A类风险的原因
        if result.get('risk_basis') == 'threshold':
            print("【A类风险】触发原因：")
            for reason in result['risk_reasons']:
                print(f"  - {reason}")
    
    # 导出详细计算过程到Excel
    risk_model.export_calculation_details(results, 'risk_calculation_details.xlsx')
    
    # 绘制并保存风险评分柱状图
    risk_model.plot_risk_scores(results, save_path='risk_assessment_chart.png')
    
except Exception as e:
    print(f"错误: {e}")
```

### 使用自定义配置

```python
from risk_assessment_package.main import RiskModel

# 使用自定义配置文件创建模型
model = RiskModel(config_path="custom_config.yaml")
model.load_data("test.xlsx")
results = model.calculate_total_risk()
```

### 详细计算过程导出

模型提供了导出详细计算过程的功能，包含所有中间计算步骤：

```python
# 导出详细计算过程
model.export_calculation_details(results, 'calculation_details.xlsx')
```

导出的Excel文件包含以下工作表：
- 原始数据：所有输入指标的原始值
- 战略风险：战略风险的计算指标和过程
- 财务风险：财务风险相关的所有指标和计算过程
- 市场风险：市场风险的计算指标和过程
- 法律信用风险：法律和信用风险的计算指标和结果
- 事件风险：事件风险的评估指标和计算过程
- 信用与社会责任风险：额外的信用风险和社会责任风险计算
- 阈值风险：触发高风险阈值的指标和判断标准
- 总风险评分：所有风险指标和最终评分结果

## 数据格式要求

输入Excel文件需要满足以下要求：

1. 数据格式：
   - 第一列必须是指标名称
   - 后续列是各月份的数据
   - 第一行是列名（月份或其他时间标识）

2. 工作表选择：
   - 默认读取第一个工作表
   - 可以通过 `sheet_name` 参数指定工作表
   - 支持工作表名称或索引号

3. 必需的指标（部分列表）：
   - 主营业务收入、营业总收入、主营业务利润总额、利润总额
   - 主营业务毛利润、研发投入本年累计数和上年同期数
   - 主营业务成本、主营业务相关费用、资产总额、负债总额
   - 带息负债总额、经营净现金流、货币资金、投资收益
   - 财务费用中的利息费用、资本化利息支出
   - 预付账款、预收账款、应收账款、应付账款
   - 净资产、坏账准备金额、存货、毛利润
   - 各类行业平均值和中等值指标
   - 司法诉讼案件数量、执行金额、被执行金额
   - 已销号事件数、新增事件数、年初事件数等事件相关指标
   - 各类事故次数和环境事件次数指标

## 阈值风险（A类风险）判断

模型会对以下指标进行阈值判断，如果触发任何一项条件则判定为高风险：

1. 主业亏损金额 > 200,000,000
2. 资产负债率 > 0.9
3. 带息负债率 > 行业较差值
4. 高危企业发生特别重大生产安全事故次数 > 0
5. 非高危企业发生特别重大生产安全事故次数 > 0
6. 企业发生重大及以上生态环境事件次数 > 0
7. 经营净现金流占货币资金的比重 < -0.3

## 配置说明

可以通过YAML配置文件自定义以下参数：

- 各类风险的权重
- 风险阈值参数
- 计算参数

配置文件示例：

```yaml
weights:
  strategic: 0.15
  financial: 0.30
  market: 0.25
  legal_credit: 0.10
  event: 0.20
```

## 输出结果

风险评估结果包含：

1. 总体风险评分
2. 各项风险评分
3. 风险等级
4. 风险判断依据
5. 详细的计算过程

## 故障排除

如果遇到问题，可以检查：
- Excel文件格式是否正确
- 必要的依赖是否都已安装（pandas, numpy, matplotlib, openpyxl, PyYAML）
- 配置文件的格式是否正确

程序默认会在控制台输出日志信息，可以查看更多执行细节。

## 许可证

MIT License

## 贡献

欢迎提交问题和改进建议！ 