credit-risk-intelligence-mcp
README.md
# π³ Credit Risk Intelligence System
**Un sistema di credit scoring che valuta il rischio di un cliente e spiega la sua decisione in linguaggio naturale β un modello statistico interpretabile e verificato fa i calcoli, 4 agenti AI (Claude) li orchestrano e li raccontano.**
[](https://github.com/Alessandro-Donnini/credit-risk-intelligence-system)
---
## In azione
Un utente compila i dati di un cliente in un form web (nessun terminale richiesto), e il sistema restituisce in pochi secondi: probabilitΓ di default, spiegazione dei fattori che l'hanno determinata, verifica di quanto ci si puΓ² fidare della previsione, e rapporti finanziari β il tutto scritto come un vero credit memo.
```powershell
streamlit run src/agents/app.py
```
> **Esempio di output** (cliente con storico di pagamento regolare ma limite di credito e rimborsi contenuti):
> **PD: 44.72%** β rischio medio-alto Β· **AffidabilitΓ : alta** (cliente tipico, 99.91Β° percentile) Β· **Fattore protettivo principale:** pagamento puntuale (PAY_0) Β· **Fattore di rischio principale:** rimborsi storicamente bassi rispetto al limite concesso
## Come funziona, in breve
```
βββββββββββββββββββββββ
β SUPERVISOR AGENT β
β (sintetizza tutto) β
ββββββββββββ¬ββββββββββββ
β
βββββββββββββββββ¬βββββββββββΌβββββββββββ¬ββββββββββββββββ
β β β β
βΌ βΌ βΌ βΌ
βββββββββββββββββ ββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββ
β Risk Modeling β βExplainabilityβ β Critic β β Rapporti β
β Agent β β Agent β β Agent β β finanziari β
β β β β β β β β
β "Quanto rischiaβ β "PerchΓ©?" β β"Posso fidarmi di β β"Come si β
β questo β β (SHAP) β β questa previsione?"β β comporta il β
β cliente?" β β β β (Mahalanobis) β β cliente?" β
βββββββββ¬βββββββββ ββββββββ¬ββββββββ βββββββββββ¬βββββββββββ ββββββββ¬ββββββββ
β β β β
βββββββββββββββββββ΄βββββββββββ¬βββββββββββ΄ββββββββββββββββββββ
βΌ
ββββββββββββββββββββββββββββββββββββ
β MODELLO STATISTICO (Logistic β
β Regression, AUC-ROC 0.7629) β
β L'UNICA fonte di ogni numero. β
β Nessun agente inventa mai una β
β probabilitΓ o un contributo. β
ββββββββββββββββββββββββββββββββββββ
```
Ogni agente chiama uno strumento Python deterministico (mai una stima "a mente" della LLM) e traduce il risultato in linguaggio naturale. Lo stesso modello Γ¨ raggiungibile anche via **server MCP** standard, verificato con l'MCP Inspector ufficiale.
## Risultati
| Metrica | Valore |
|---|---|
| AUC-ROC (test set / 5-fold CV) | 0.7629 / 0.7717 Β± 0.0087 |
| Recall @ soglia ottimizzata | 0.8117 |
| Variabile piΓΉ predittiva | `PAY_0` (storico pagamento recente), IV = 0.898 |
| Test automatici | 21, tutti superati |
| Costo medio per credit memo | β $0.03 (misurato) |

## PerchΓ© Γ¨ piΓΉ di un modello
Molti progetti di data science si fermano al modello. Questo va oltre, con scelte metodologiche esplicite e verificate:
- **Nessun data leakage**: ogni calcolo statistico (WOE, binning, PSI) usa solo il train set, mai il test.
- **Due modelli confrontati onestamente**: Logistic Regression scelta sopra Gradient Boosting nonostante quest'ultimo ottenga metriche leggermente superiori β il guadagno non giustificava la perdita di interpretabilitΓ in un contesto normato come il credito.
- **Explainability verificata matematicamente**: i contributi SHAP di ogni cliente ricostruiscono esattamente, cifra per cifra, la probabilitΓ del modello.
- **Robustezza**: limite di iterazioni sugli agenti, gestione degli errori di rete e di input malformato, validazione dei dati in ingresso, guardrail espliciti sullo scopo β non solo "il caso felice".
- **Limiti dichiarati, non nascosti**: l'Expected Loss usa stime di settore per LGD/EAD (non presenti nel dataset), documentato esplicitamente nel codice.
## Come lanciare il progetto
```powershell
# Ambiente
python -m venv venv && .\venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt
# Pipeline dati -> modello (necessaria prima di usare gli agenti)
python src\data\run_pipeline.py
# Interfaccia web
streamlit run src\agents\app.py
# Oppure un singolo agente da terminale
python src\agents\supervisor_agent.py
# Test automatici
python -m pytest tests\ -v
# Server MCP (richiede Node.js per l'Inspector)
npx @modelcontextprotocol/inspector python src\agents\mcp_server.py
```
Richiede una `ANTHROPIC_API_KEY` in un file `.env` nella root del progetto.
## Il dataset
**"Default of Credit Card Clients"**, UCI Machine Learning Repository (Yeh & Lien, 2009). 30.000 clienti reali di carte di credito a Taiwan, 23 variabili esplicative, licenza CC BY 4.0.
## Approfondimenti tecnici
<details>
<summary><strong>Sistema multi-agente, in dettaglio</strong></summary>
- **Risk Modeling Agent** β chiama `score_new_client`, mai genera il numero da solo.
- **Explainability Agent** β chiama `explain_client_shap` (SHAP con `LinearExplainer`, esatto per modelli lineari).
- **Critic Agent** β chiama `check_client_typicality` (distanza di Mahalanobis), usa Claude Haiku per contenere i costi su un compito semplice.
- **Supervisor Agent** β orchestra tutti gli strumenti sopra piΓΉ `calculate_financial_ratios`, dΓ prioritΓ esplicita agli avvisi di atipicitΓ o dati implausibili nella sintesi finale.
Verificato concretamente: lo stesso cliente valutato tramite script diretto, tre agenti diversi, e il server MCP produce sempre lo stesso identico risultato (0.4472).
</details>
<details>
<summary><strong>Metodologia del modello, in dettaglio</strong></summary>
- **Data Quality Assessment**: 345 anomalie corrette in `EDUCATION`, 54 in `MARRIAGE`; un caso analogo in `PAY_0...PAY_6` (valori `-2`/`0` non documentati ma strutturali) identificato e volutamente non "corretto", perchΓ© parte reale del dataset.
- **Selezione delle feature** su Information Value e matrice di correlazione: escluse `MARRIAGE` (IV troppo basso) e le 6 `BILL_AMT` (IV bassissimo e correlate tra loro).
- **Soglia di decisione** ottimizzata su un criterio di business esplicito (Recall β₯ 0.80), con il trade-off in Precision quantificato, non ignorato.
</details>
<details>
<summary><strong>Struttura del progetto</strong></summary>
```
βββ data/raw/ # dataset grezzo
βββ models/ # modello, trasformazioni, grafici
βββ src/
β βββ data/ # pipeline: caricamento, pulizia, feature engineering, training
β βββ agents/ # 4 agenti Claude, server MCP, interfaccia Streamlit
βββ tests/ # 21 test automatici
```
</details>
---
*Progetto di [Alessandro Donnini](https://github.com/Alessandro-Donnini) β MSc Marketing Management, Bocconi. Costruito come pezzo di portfolio per una transizione verso ruoli di Data Science / Corporate Finance.*
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues