| metrica | valore | |
|---|---|---|
| 0 | Imprese sintetiche generate | 1000 |
| 1 | Archetipi disponibili | 7 |
| 2 | Bilanci quadrati | 1000/1000 |
| 3 | Output screening disponibili | REJECT, WATCH, PASS |
Dati sintetici di bilancio
Generazione, archetipi e uso per testare motori automatici di analisi
1 Sintesi
Questo documento descrive un piccolo laboratorio per generare dati sintetici di bilancio e usarli per provare un motore automatico di analisi.
L’idea nasce da un problema pratico: se vogliamo spiegare, testare o stressare un algoritmo di lettura dei bilanci, non sempre e’ opportuno usare dati reali. I dati reali possono contenere informazioni riconoscibili, possono essere coperti da vincoli di riservatezza e possono rendere difficile condividere esempi didattici.
I dati sintetici risolvono questo problema quando sono costruiti bene:
- non rappresentano imprese reali;
- mantengono una struttura economico-finanziaria plausibile;
- permettono di creare molti casi diversi;
- consentono di misurare quanto un algoritmo screma, filtra o segnala casi critici;
- rendono esplicite le regole usate per generare il campione.
Nel progetto sono stati generati 1000 bilanci sintetici e un primo motore di screening trasparente. Lo screening classifica ogni impresa sintetica in PASS, WATCH o REJECT.
2 Premessa: il problema dei dati di bilancio
Una premessa di contesto riguarda la disponibilita’ dei bilanci societari in Italia.
I bilanci depositati dalle societa’ sono documenti pubblici in senso giuridico: esistono nel Registro delle Imprese e possono essere richiesti. Tuttavia, per un uso analitico sistematico, la situazione e’ diversa. Nella pratica l’accesso avviene spesso per singola impresa, tramite visure, atti o bilanci scaricati puntualmente, con costi e interfacce pensate piu’ per la consultazione documentale che per il riuso massivo come open data.
Questo crea una frizione importante:
- il dato esiste;
- il dato e’ formalmente pubblico;
- ma non e’ normalmente disponibile come dataset aperto, bulk, machine-readable e liberamente riusabile;
- l’analisi su larga scala richiede quindi acquisto di dati, scraping, estrazioni puntuali o fonti proprietarie.
Il tema si collega alla politica europea sugli open data. La Direttiva Open Data e PSI (European Parliament and Council of the European Union 2019) promuove il riuso dell’informazione del settore pubblico e introduce il principio degli high-value datasets. Tra le categorie di alto valore rientrano anche i dati su companies and company ownership, cioe’ imprese e titolarita societaria. Il Regolamento di esecuzione sugli high-value datasets (European Commission 2023) rafforza l’idea che alcune basi dati pubbliche debbano essere rese disponibili con condizioni tecniche e giuridiche favorevoli al riuso.
Questa osservazione va formulata con precisione: non si assume qui che esista gia’ un obbligo europeo pienamente operativo di pubblicare in open data tutti i bilanci completi delle societa’ italiane. Il punto e’ piu’ pragmatico: c’e’ una tensione evidente tra l’obiettivo europeo di riuso dei dati pubblici ad alto valore e l’attuale disponibilita’ operativa dei bilanci societari italiani, che rimane prevalentemente puntuale e a pagamento.
In altri paesi esistono esperienze piu’ vicine a dataset analitici aperti o facilmente riusabili. Un esempio utile e’ la documentazione di dataset su bilanci societari norvegesi (Wahlstrøm 2022), che mostra il valore di una base dati ampia e strutturata sui financial statements aziendali.
In questo contesto, i dati sintetici non sostituiscono l’open data reale. Servono pero’ a tre scopi:
- costruire esempi condivisibili senza dati riservati o proprietari;
- sviluppare e testare motori di analisi prima di applicarli a basi dati reali;
- rendere esplicite regole, indicatori e soglie in un ambiente controllato.
C’e’ anche un aspetto culturale. La disponibilita’ di dati di bilancio aperti, strutturati e riusabili non aiuterebbe solo chi sviluppa algoritmi. Aiuterebbe anche:
- chi redige i bilanci, per comprendere meglio come le informazioni vengono lette e confrontate;
- chi li legge, per allenarsi su casi, ratios, riclassificazioni e segnali di rischio;
- chi li spiega, per costruire esempi verificabili e non dipendenti da singoli documenti proprietari;
- chi fa ricerca, per confrontare metodi e risultati su basi comuni;
- chi sviluppa strumenti, per migliorare controlli, parser e motori di analisi.
Una community che puo’ lavorare su dati aperti o su dataset sintetici ben documentati tende a produrre sinergie: corregge errori, propone metriche, confronta approcci, costruisce esempi didattici e aumenta la conoscenza condivisa. In questo senso il dato non e’ solo materia prima per modelli automatici, ma infrastruttura culturale.
3 Cosa sono i dati sintetici
Per dati sintetici intendiamo dati generati artificialmente, ma costruiti per assomigliare a una certa famiglia di fenomeni reali.
Nel nostro caso il fenomeno e’ il bilancio di una societa’. Un bilancio sintetico non e’ il bilancio di una vera impresa, ma deve avere almeno alcune caratteristiche realistiche:
- ricavi in un ordine di grandezza credibile;
- margini compatibili con lo scenario aziendale;
- capitale circolante plausibile;
- debiti e patrimonio netto coerenti con la rischiosita’ del caso;
- stato patrimoniale che quadra;
- indicatori bancari interpretabili.
Il punto importante e’ che “sintetico” non significa “casuale senza regole”. Un numero casuale puo’ essere inutile; un dato sintetico deve essere governato da ipotesi esplicite.
La letteratura sui dati sintetici nasce anche nel campo della protezione della riservatezza statistica: l’idea e’ produrre dati utilizzabili per analisi senza rilasciare direttamente microdati sensibili (Rubin 1993; Little 1993; Drechsler and Haensch 2023). In anni piu’ recenti il tema si e’ esteso alla generazione di dati tabellari per machine learning, benchmarking e condivisione controllata di dataset (Patki et al. 2016; Xu et al. 2019; Stoian et al. 2025).
4 Perche’ generarli
I dati sintetici servono soprattutto quando vogliamo lavorare sul metodo.
Esempi:
- spiegare come funziona un motore di analisi;
- costruire case study senza esporre una societa’ reale;
- testare filtri automatici;
- verificare se le soglie sono troppo severe o troppo permissive;
- produrre casi estremi, come crisi di liquidita’ o forte indebitamento;
- creare dataset per esercizi, formazione o benchmark.
Nel lavoro su XBRL il problema era mostrare il processo end-to-end senza trasformare il caso in esposizione di una societa’ reale. Qui facciamo un passo ulteriore: invece di anonimizzare un bilancio reale, generiamo molti bilanci fittizi con regole controllate.
5 Come sono stati generati
Il generatore e’ contenuto nel file synthetic_balance_generator.py.
Il flusso e’ il seguente:
- viene scelto casualmente un archetipo aziendale;
- vengono estratti i driver principali dentro i range previsti per quell’archetipo;
- vengono calcolati conto economico, stato patrimoniale e indicatori;
- viene forzata la quadratura minima dello stato patrimoniale;
- il dataset viene esportato in CSV ed Excel.
La generazione e’ riproducibile: usando lo stesso seed, si ottiene lo stesso dataset.
python3 synthetic_balance_generator.py --n 1000 --seed 42Gli output principali sono:
OUT/bilanci_sintetici.csv;OUT/bilanci_sintetici.xlsx;OUT/archetipi.xlsx;OUT/archetipi_A4_trasposta.xlsx;OUT/parametri_algoritmo.xlsx.
6 Gli archetipi
Gli archetipi sono profili economico-finanziari. Non sono imprese reali: sono stampi logici usati per generare casi diversi.
| archetipo | descrizione | |
|---|---|---|
| 0 | sana_stabile | Impresa equilibrata: margini buoni, leva conte... |
| 1 | crescita | Impresa in espansione: ricavi in aumento, fabb... |
| 2 | margini_bassi | Impresa con volumi anche elevati ma redditivit... |
| 3 | indebitata | Impresa operativa ma con struttura finanziaria... |
| 4 | tensione_liquidita | Impresa con assorbimento di cassa: incassi len... |
| 5 | crisi | Impresa in deterioramento: ricavi in calo, EBI... |
| 6 | turnaround | Impresa in recupero: crescita moderata, margin... |
Ogni archetipo ha range diversi per ricavi, crescita, margini, leva finanziaria, patrimonio netto e capitale circolante. In questo modo il dataset contiene imprese sane, imprese in crescita, imprese fragili e imprese in crisi.
La tabella seguente e’ la versione ruotata, pensata per lettura e stampa A4.
| variabile | unita | sana_stabile | crescita | margini_bassi | indebitata | tensione_liquidita | crisi | turnaround | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | Descrizione | NaN | Impresa equilibrata: margini buoni, leva conte... | Impresa in espansione: ricavi in aumento, fabb... | Impresa con volumi anche elevati ma redditivit... | Impresa operativa ma con struttura finanziaria... | Impresa con assorbimento di cassa: incassi len... | Impresa in deterioramento: ricavi in calo, EBI... | Impresa in recupero: crescita moderata, margin... |
| 1 | Ricavi | EUR | 8.0 - 80.0 mln | 5.0 - 60.0 mln | 15.0 - 120.0 mln | 10.0 - 100.0 mln | 8.0 - 70.0 mln | 5.0 - 50.0 mln | 6.0 - 65.0 mln |
| 2 | Crescita ricavi | % | -3.0% - 6.0% | 10.0% - 35.0% | -2.0% - 8.0% | -5.0% - 10.0% | -10.0% - 4.0% | -30.0% - -5.0% | 0.0% - 18.0% |
| 3 | EBITDA margin | % | 10.0% - 18.0% | 8.0% - 16.0% | 2.5% - 6.5% | 6.0% - 12.0% | 3.5% - 9.5% | -8.0% - 3.5% | 3.0% - 11.0% |
| 4 | Ammortamenti / ricavi | % | 1.5% - 3.5% | 1.8% - 4.0% | 0.8% - 2.5% | 1.5% - 3.5% | 1.2% - 3.0% | 1.0% - 3.0% | 1.2% - 3.2% |
| 5 | PFN / EBITDA | x | 0.4x - 1.8x | 1.0x - 3.0x | 1.5x - 4.2x | 3.5x - 6.5x | 2.8x - 5.5x | 4.5x - 9.0x | 2.0x - 4.8x |
| 6 | Patrimonio netto / attivo | % | 32.0% - 55.0% | 22.0% - 42.0% | 18.0% - 38.0% | 8.0% - 25.0% | 10.0% - 30.0% | 2.0% - 18.0% | 12.0% - 32.0% |
| 7 | Giorni magazzino | gg | 35 - 85 | 55 - 130 | 40 - 100 | 65 - 150 | 95 - 190 | 100 - 220 | 70 - 150 |
| 8 | Giorni clienti | gg | 45 - 95 | 55 - 120 | 45 - 105 | 70 - 150 | 90 - 180 | 95 - 210 | 65 - 150 |
| 9 | Giorni fornitori | gg | 45 - 110 | 55 - 130 | 50 - 125 | 65 - 145 | 35 - 85 | 25 - 75 | 55 - 130 |
| 10 | Tasso interesse | % | 3.5% - 6.5% | 4.5% - 8.0% | 4.5% - 8.5% | 6.0% - 11.0% | 6.0% - 12.0% | 8.0% - 15.0% | 5.5% - 10.5% |
7 I parametri dati all’algoritmo
La tabella parametri_algoritmo descrive che cosa riceve il generatore come input logico.
La distinzione principale e’:
- random per archetipo: il valore e’ estratto dentro un range che dipende dallo scenario;
- random comune: il valore e’ estratto da un range uguale per tutti;
- derivato: il valore non viene estratto, ma calcolato da altri valori;
- controllo: il valore serve a verificare la coerenza finale.
| area | parametro | tipo | distribuzione | valori | uso | |
|---|---|---|---|---|---|---|
| 0 | generale | archetipo | random | scelta uniforme | sana_stabile, crescita, margini_bassi, indebit... | Sceglie lo scenario economico-finanziario dell... |
| 1 | generale | ricavi | random per archetipo | uniforme continua | Vedi righe ricavi_min/ricavi_max nella tabella... | Dimensiona l'azienda e alimenta la maggior par... |
| 2 | generale | crescita ricavi | random per archetipo | uniforme continua | Vedi crescita_min_pct/crescita_max_pct. | Ricostruisce i ricavi dell'anno precedente e c... |
| 3 | conto economico | EBITDA margin | random per archetipo | uniforme continua | Vedi ebitda_margin_min_pct/ebitda_margin_max_pct. | Determina EBITDA = ricavi * EBITDA margin. |
| 4 | conto economico | ammortamenti / ricavi | random per archetipo | uniforme continua | Vedi ammortamenti_ricavi_min_pct/ammortamenti_... | Determina ammortamenti = ricavi * percentuale;... |
| 5 | conto economico | aliquota fiscale effettiva | random comune | uniforme continua | 20% - 30%, solo se risultato ante imposte posi... | Determina imposte; se il risultato ante impost... |
| 6 | conto economico | tasso interesse | random per archetipo | uniforme continua | Vedi tasso_interesse_min_pct/tasso_interesse_m... | Determina oneri finanziari = debito finanziari... |
| 7 | struttura finanziaria | PFN / EBITDA target | random per archetipo | uniforme continua | Vedi pfn_ebitda_min/pfn_ebitda_max. | Determina la posizione finanziaria netta inizi... |
| 8 | struttura finanziaria | patrimonio netto / attivo | random per archetipo | uniforme continua | Vedi patrimonio_attivo_min_pct/patrimonio_atti... | Determina il patrimonio netto come quota dell'... |
| 9 | capitale circolante | giorni magazzino | random per archetipo | uniforme intera | Vedi giorni_magazzino_min/giorni_magazzino_max. | Determina rimanenze = acquisti stimati * giorn... |
| 10 | capitale circolante | giorni clienti | random per archetipo | uniforme intera | Vedi giorni_clienti_min/giorni_clienti_max. | Determina crediti commerciali = ricavi * giorn... |
| 11 | capitale circolante | giorni fornitori | random per archetipo | uniforme intera | Vedi giorni_fornitori_min/giorni_fornitori_max. | Determina debiti fornitori = acquisti stimati ... |
| 12 | capitale circolante | costo del venduto / ricavi | random comune | uniforme continua | 55% - 78% | Stima gli acquisti/costo del venduto usati per... |
| 13 | attivo | cassa / ricavi | random comune | uniforme continua | 1% - 8%, minimo tecnico 20.000 EUR | Determina disponibilita liquide. |
| 14 | attivo | immobilizzazioni / ricavi | random comune | uniforme continua | 12% - 55% | Determina immobilizzazioni iniziali. |
| 15 | passivo | quota debito bancario corrente | random comune | uniforme continua | 35% - 85% del debito bancario | Usata per stimare le passivita correnti e quin... |
| 16 | quadratura | altri debiti e fondi | derivato | formula | totale attivo - patrimonio netto - debiti forn... | Voce di quadratura del passivo; se negativa, i... |
| 17 | validazione | check_quadratura | derivato | controllo booleano | totale_attivo == totale_passivo_pn | Verifica minima di coerenza contabile del bila... |
Questa tabella e’ importante perche’ rende il dataset auditabile. Se un archetipo produce troppe imprese respinte, possiamo capire se il problema nasce dai range di leva, dai margini, dai giorni clienti o da altre ipotesi.
Nella letteratura sui dati sintetici, questa distinzione tra generazione e valutazione e’ centrale: non basta creare dati realistici, bisogna anche misurarne utilita’, fedelta’ statistica, rischio di disclosure e coerenza con vincoli di dominio (Raab et al. 2017, 2021; Hassan et al. 2023).
8 Variabili prodotte
Il dataset finale contiene variabili economiche, patrimoniali e indicatori.
| variabile | |
|---|---|
| 0 | company_id |
| 1 | ragione_sociale |
| 2 | archetipo |
| 3 | ricavi_anno_precedente |
| 4 | ricavi |
| 5 | crescita_ricavi_pct |
| 6 | ebitda |
| 7 | ebitda_margin_pct |
| 8 | ammortamenti |
| 9 | ebit |
| 10 | oneri_finanziari |
| 11 | risultato_ante_imposte |
| 12 | imposte |
| 13 | utile_netto |
| 14 | rimanenze |
| 15 | crediti_commerciali |
| 16 | disponibilita_liquide |
| 17 | immobilizzazioni |
| 18 | totale_attivo |
| 19 | patrimonio_netto |
| 20 | debiti_bancari |
| 21 | debiti_fornitori |
| 22 | altri_debiti_fondi |
| 23 | totale_passivo_pn |
| 24 | posizione_finanziaria_netta |
| 25 | pfp_ebitda |
| 26 | interest_coverage |
| 27 | current_ratio |
| 28 | giorni_magazzino |
| 29 | giorni_clienti |
| 30 | giorni_fornitori |
| 31 | check_quadratura |
Alcune variabili sono direttamente generate, altre sono derivate:
ricavi,crescita_ricavi_pct,ebitda_margin_pctdescrivono la dinamica economica;ebitda,ebit,utile_nettosintetizzano la redditivita’;rimanenze,crediti_commerciali,debiti_fornitoridescrivono il capitale circolante;patrimonio_netto,debiti_bancari,posizione_finanziaria_nettadescrivono la struttura finanziaria;pfp_ebitda,interest_coverage,current_ratiosono indicatori usati nello screening;check_quadraturaverifica che lo stato patrimoniale sintetico quadri.
9 Esempio di bilancio riclassificato
Per rendere piu’ concreto il dataset, prendiamo una singola impresa sintetica con criticita’ evidenti e la rappresentiamo in forma riclassificata.
La scelta di un caso problematico e’ didatticamente utile: il lettore puo’ confrontare i prospetti con i ratios e verificare se lo screening automatico ha intercettato segnali coerenti.
Questa non e’ una riclassificazione civilistica completa. E’ una vista didattica, utile per mostrare come i dati generati possano essere letti da un analista:
- nello stato patrimoniale distinguiamo attivo corrente, immobilizzazioni, patrimonio netto e debiti;
- nel conto economico distinguiamo ricavi, EBITDA, EBIT, gestione finanziaria, imposte e utile netto.
| campo | valore | |
|---|---|---|
| 0 | Company ID | SYN00005 |
| 1 | Ragione sociale | Impresa Sintetica 00005 S.p.A. |
| 2 | Archetipo | crisi |
| 3 | Ricavi | 36.0 mln EUR |
| 4 | Esito screening | REJECT |
| 5 | Numero fail | 5 |
| 6 | Motivi fail | utile_non_gravemente_negativo; ebitda_positivo... |
9.1 Situazione patrimoniale riclassificata
La situazione patrimoniale riclassificata mostra da un lato gli impieghi, cioe’ dove sono investite le risorse, e dall’altro le fonti, cioe’ come quegli impieghi sono finanziati.
| Attivo riclassificato | EUR | Fonti riclassificate | EUR | |
|---|---|---|---|---|
| 0 | Rimanenze | 8906000 | Patrimonio netto | 2970000.0 |
| 1 | Crediti commerciali | 12712000 | Debiti bancari | 2734000.0 |
| 2 | Disponibilita liquide | 2734000 | Debiti fornitori | 1710000.0 |
| 3 | Totale attivo corrente | 24352000 | Altri debiti e fondi | 34808000.0 |
| 4 | Immobilizzazioni | 17870000 | Totale passivo e patrimonio netto | 42222000.0 |
| 5 | Totale attivo | 42222000 | NaN | NaN |
L’uguaglianza tra Totale attivo e Totale passivo e patrimonio netto e’ il controllo minimo di quadratura.
| controllo | EUR | |
|---|---|---|
| 0 | Totale attivo | 42222000 |
| 1 | Totale passivo e patrimonio netto | 42222000 |
| 2 | Differenza | 0 |
9.2 Conto economico riclassificato
Il conto economico riclassificato parte dai ricavi e arriva all’utile netto, evidenziando i principali margini intermedi.
| Voce | EUR | % ricavi | |
|---|---|---|---|
| 0 | Ricavi | 35967000 | 1.000000 |
| 1 | EBITDA | -1536000 | -0.042706 |
| 2 | Ammortamenti | -912000 | -0.025357 |
| 3 | EBIT | -2448000 | -0.068062 |
| 4 | Oneri finanziari | 0 | 0.000000 |
| 5 | Risultato ante imposte | -2448000 | -0.068062 |
| 6 | Imposte | 0 | 0.000000 |
| 7 | Utile netto | -2448000 | -0.068062 |
9.3 Indicatori sintetici del caso critico
Gli indicatori permettono di collegare bilancio e screening automatico.
| indicatore | valore | lettura | |
|---|---|---|---|
| 0 | EBITDA margin | -0.042707 | redditivita operativa |
| 1 | PFN / EBITDA | NaN | leva finanziaria |
| 2 | Interest coverage | NaN | copertura oneri finanziari |
| 3 | Current ratio | 6.834911 | liquidita corrente |
| 4 | Giorni magazzino | 151.000000 | capitale circolante |
| 5 | Giorni clienti | 129.000000 | incasso crediti |
| 6 | Giorni fornitori | 29.000000 | dilazione fornitori |
Nel caso scelto, l’esito REJECT non deriva da una decisione opaca. I motivi sono riportati nella tabella iniziale e possono essere verificati nei ratios: margini, utile, leva, copertura degli oneri finanziari e liquidita’ corrente.
10 Controlli di coerenza
Il controllo minimo e’ la quadratura dello stato patrimoniale:
| check_quadratura | n | pct | |
|---|---|---|---|
| 0 | True | 1000 | 1.0 |
Nel dataset generato, tutti i casi quadrano. Questo non significa che ogni bilancio sia civilisticamente completo, ma significa che la struttura base e’ coerente.
Un secondo controllo e’ la distribuzione degli archetipi:
| archetipo | n | pct | |
|---|---|---|---|
| 0 | crescita | 156 | 0.156 |
| 4 | crisi | 138 | 0.138 |
| 2 | indebitata | 145 | 0.145 |
| 6 | margini_bassi | 136 | 0.136 |
| 1 | sana_stabile | 148 | 0.148 |
| 3 | tensione_liquidita | 140 | 0.140 |
| 5 | turnaround | 137 | 0.137 |
11 Uso per testare un motore automatico
Una volta creati i bilanci sintetici, possiamo usarli per verificare un motore di screening.
Il motore e’ contenuto in screening_engine.py ed e’ volutamente trasparente: ogni regola e’ leggibile e il risultato finale dipende dai fail registrati.
python3 screening_engine.py --input OUT/bilanci_sintetici.csvGli esiti sono:
PASS: supera tutti i filtri;WATCH: non ha fail bloccanti, ma presenta segnali da approfondire;REJECT: fallisce almeno una regola bloccante.
| esito | n | pct | |
|---|---|---|---|
| 0 | PASS | 539 | 0.539 |
| 1 | WATCH | 370 | 0.370 |
| 2 | REJECT | 91 | 0.091 |
12 Quanto screma il motore
La tabella seguente mostra la scrematura per archetipo.
| screening_esito | archetipo | PASS | WATCH | REJECT |
|---|---|---|---|---|
| 0 | crescita | 129 | 27 | 0 |
| 1 | crisi | 0 | 47 | 91 |
| 2 | indebitata | 46 | 99 | 0 |
| 3 | margini_bassi | 73 | 63 | 0 |
| 4 | sana_stabile | 135 | 13 | 0 |
| 5 | tensione_liquidita | 64 | 76 | 0 |
| 6 | turnaround | 92 | 45 | 0 |
Questo tipo di tabella e’ utile per capire se il motore si comporta come atteso. Per esempio, e’ ragionevole che l’archetipo crisi generi molti REJECT, mentre sana_stabile dovrebbe produrre molti PASS.
13 Quali regole pesano di piu’
Ogni riga del dataset mantiene anche l’esito delle singole regole. Possiamo quindi contare quali filtri intervengono piu’ spesso.
| regola | fail_n | fail_pct | |
|---|---|---|---|
| 6 | pfp_ebitda_massimo | 298 | 0.298 |
| 5 | ebitda_margin_minimo | 220 | 0.220 |
| 7 | interest_coverage_minimo | 166 | 0.166 |
| 8 | current_ratio_minimo | 103 | 0.103 |
| 4 | ebitda_positivo | 91 | 0.091 |
| 9 | crescita_non_crollo | 59 | 0.059 |
| 3 | utile_non_gravemente_negativo | 58 | 0.058 |
| 0 | quadratura | 0 | 0.000 |
| 1 | ricavi_minimi | 0 | 0.000 |
| 2 | patrimonio_netto_positivo | 0 | 0.000 |
Questa analisi permette di rispondere a una domanda concreta: il motore sta scartando perche’ le imprese sono davvero deboli, oppure perche’ una soglia e’ troppo rigida?
14 Come usare il dataset
Il dataset sintetico puo’ essere usato in diversi modi.
14.1 Formazione
Si possono mostrare casi PASS, WATCH e REJECT e chiedere al lettore di capire quali variabili guidano l’esito.
14.2 Taratura dei filtri
Si possono cambiare le soglie dello screening e misurare subito l’effetto:
- quanti casi passano;
- quanti finiscono in watchlist;
- quanti vengono respinti;
- quali archetipi vengono penalizzati.
14.3 Stress test
Si possono aumentare i casi di crisi, alzare la leva, ridurre i margini o peggiorare i giorni clienti per vedere se il motore intercetta il deterioramento.
14.4 Documentazione metodologica
Le tabelle archetipi e parametri_algoritmo permettono di spiegare da dove vengono i numeri. Questo evita che il dataset sembri una scatola nera.
15 Limiti
Questo progetto non genera un bilancio civilistico completo. Genera una rappresentazione sintetica utile per analisi, screening e didattica.
I limiti principali sono:
- alcune voci sono aggregate;
- non esiste una nota integrativa completa;
- non c’e’ ancora un rendiconto finanziario dettagliato;
- le relazioni contabili sono semplificate;
- non e’ ancora generato un XBRL sintetico completo;
- le soglie del motore di screening sono convenzioni di prassi (PFN/EBITDA, interest coverage, current ratio, marginalita’ minima), non stime derivate da un campione di imprese con esito noto (fallite vs sane).
Questi limiti sono accettabili per testare un motore di screening. Per un simulatore contabile piu’ rigoroso, il passo successivo sarebbe costruire un modello con piu’ vincoli, piu’ voci e una generazione coerente dei flussi di cassa.
Sull’ultimo punto vale una precisazione. La letteratura classica sulla previsione del fallimento aziendale mostra che le soglie sui ratios andrebbero calibrate confrontando campioni reali di imprese fallite e non fallite, non fissate per convenzione (Beaver 1966; Altman 1968; Ohlson 1980). Le fonti aggregate disponibili per la taratura di questo progetto (medie di sistema regionali, medie di campioni di imprese sopravvissute) descrivono popolazioni gia’ filtrate verso l’alto: utili per posizionare un archetipo rispetto alla media osservata, non per stimare una soglia minima di viabilita’, che richiederebbe la dispersione o i percentili di un campione non selezionato, comprensivo di casi di default. In assenza di questo dato, le soglie restano convenzionali per scelta esplicita, non per omissione.
16 Prossimi sviluppi
Evoluzioni naturali:
- generare anche un rendiconto finanziario sintetico;
- aggiungere un rating atteso per ogni archetipo;
- distinguere settore industriale, commercio, servizi e costruzioni;
- produrre note narrative sintetiche;
- esportare i casi in JSON;
- generare XBRL sintetici;
- confrontare piu’ motori di screening sugli stessi 1000 casi.
Il valore del dataset aumenta quando ogni scelta rimane tracciabile: archetipo, parametri, formule, esiti e motivi di scarto.
La prospettiva di fondo e’ comunitaria: rendere disponibili esempi, regole e dataset controllati permette a professionisti diversi di parlare la stessa lingua. Il redattore del bilancio vede come il dato viene interpretato; l’analista vede da quali ipotesi nascono i ratios; il docente puo’ spiegare casi complessi senza usare informazioni sensibili; lo sviluppatore puo’ testare strumenti in modo riproducibile.
Anche quando il dataset e’ sintetico, se e’ ben documentato puo’ diventare uno spazio comune di apprendimento.
17 Estensione: settore e territorio
Il modello puo’ essere ulteriormente caratterizzato introducendo due assi aggiuntivi:
- settore merceologico;
- area territoriale.
In questo modo ogni impresa sintetica non sarebbe piu’ definita solo da un archetipo finanziario, per esempio sana_stabile o crisi, ma da una combinazione:
archetipo finanziario x settore x territorio
Esempio:
crescita x meccanico x Nord Est
tensione_liquidita x metallurgico x Nord Ovest
sana_stabile x alimentare x Sud e Isole
Questa estensione e’ utile perche’ molte variabili di bilancio non dipendono solo dalla salute finanziaria dell’impresa, ma anche dal tipo di attivita’ e dal contesto territoriale.
17.1 Fonti interne gia’ disponibili
Nei progetti gia’ presenti sono stati individuati materiali utili:
20260630_MediobancaMedieImprese;20260212_Mediobanca;20260507_AiBilanci/IN/mediobanca;- progetti Bankitalia/Unimpresa con dimensioni ATECO e territorio.
Il progetto piu’ pertinente e’ 20260630_MediobancaMedieImprese, che lavora sul dataset Mediobanca/Unioncamere/Tagliacarne “Le medie imprese industriali italiane (2015-2024)” (Area Studi Mediobanca and Centro Studi delle Camere di Commercio Guglielmo Tagliacarne 2026).
Da quel lavoro emergono due informazioni operative importanti:
- le aree territoriali sono disponibili su un insieme chiuso 2015-2024;
- i settori usati in alcuni report sono cluster settoriali Mediobanca, non necessariamente codici ATECO ufficiali.
17.2 Aree territoriali Mediobanca
Per l’insieme chiuso 2015-2024 delle medie imprese industriali, i cluster geografici sono:
| Area | Codice | N. societa |
|---|---|---|
| Italia | 88001077 | 1.821 |
| Nord Ovest | 88001078 | 745 |
| Nord Est | 88001079 | 680 |
| Centro | 88004010 | 234 |
| Sud e Isole | 88004011 | 162 |
Queste aree possono diventare profili territoriali nel generatore. Per esempio, il territorio potrebbe modificare:
- crescita ricavi;
- export share;
- costo del lavoro su valore aggiunto;
- redditivita’;
- intensita’ di circolante;
- probabilita’ di tensione finanziaria.
17.3 Settori Mediobanca
I cluster settoriali individuati sono:
| Settore Mediobanca | Codice |
|---|---|
| Alimentare | 88005202 |
| Beni per la persona e la casa | 88005203 |
| Carta e stampa | 88005204 |
| Chimico e farmaceutico | 88005205 |
| Meccanico | 88005206 |
| Metallurgico | 88005207 |
| Altri Settori | 88005208 |
Nota metodologica: questi gruppi vanno chiamati settori Mediobanca o cluster settoriali Mediobanca. Non vanno chiamati direttamente ATECO, salvo costruire e verificare un mapping granulare verso ATECO.
17.4 Esempio di logica settoriale
I settori potrebbero introdurre moltiplicatori o range specifici:
| Settore | Effetto atteso nel generatore |
|---|---|
| Alimentare | ricavi piu resilienti, margini medi, minore volatilita |
| Meccanico | maggiore export, dimensione media piu elevata, ciclicita industriale |
| Chimico e farmaceutico | margini piu alti, maggiore intensita di capitale |
| Metallurgico | margini piu bassi, maggiore volatilita, sensibilita a commodity |
| Carta e stampa | volumi piu contenuti, crescita piu fragile |
| Beni persona/casa | export rilevante, margini medi, sensibilita a domanda finale |
Questi effetti non sostituirebbero l’archetipo finanziario. Lo modulerebbero.
17.5 Esempio di logica territoriale
Le aree potrebbero introdurre differenze di contesto:
| Area | Effetto atteso nel generatore |
|---|---|
| Nord Ovest | maggiore export e dimensione media, buona patrimonializzazione |
| Nord Est | forte manifattura esportatrice, capitale circolante rilevante |
| Centro | profilo intermedio, buona redditivita in alcuni cluster |
| Sud e Isole | minore dimensione media, possibile crescita piu vivace in specifici anni, campione piu piccolo |
Anche qui serve cautela: l’effetto territoriale va tarato su dati osservati e non trasformato in stereotipo economico.
17.6 Come incorporarlo nel generatore
Una versione successiva del generatore potrebbe lavorare cosi’:
- scegliere un archetipo finanziario;
- scegliere un settore;
- scegliere un’area territoriale;
- applicare i range base dell’archetipo;
- applicare moltiplicatori settoriali;
- applicare moltiplicatori territoriali;
- generare il bilancio;
- conservare nel dataset le tre etichette:
archetipo,settore,area.
Il risultato sarebbe un dataset piu’ realistico, perche’ permetterebbe di testare se il motore automatico discrimina correttamente tra:
- rischio finanziario dell’impresa;
- ciclicita’ del settore;
- specificita’ territoriale;
- dimensione e struttura del capitale circolante.
17.7 Caveat metodologico
Il progetto Mediobanca sulle medie imprese segnala un punto importante: le analisi territoriali e quelle settoriali possono riferirsi a universi campionari diversi.
In particolare:
- le aree geografiche usano l’insieme chiuso 2015-2024;
- alcuni cluster settoriali usano l’insieme chiuso 1996-2024;
- il campione settoriale puo’ essere piu’ selezionato e soggetto a survivor bias;
- il numero di societa per singolo settore non sempre e’ disponibile.
Quindi, per costruire dati sintetici robusti, settore e territorio dovrebbero essere usati come profili di simulazione, non come riproduzione meccanica di frequenze campionarie non perfettamente confrontabili.
18 Estensione: dati sintetici da esperienza di lavoro
Un altro modo per costruire dati sintetici e’ partire dall’esperienza professionale.
Questo approccio non parte prima dalle distribuzioni statistiche, ma dai casi che un analista, un gestore o un ufficio crediti incontra nella pratica. L’obiettivo e’ generare imprese sintetiche che raccontino una storia aziendale riconoscibile.
In questo senso ci sono due approcci complementari:
| Approccio | Punto di partenza | Vantaggio | Rischio |
|---|---|---|---|
| Data-driven | dataset osservati, medie, varianze, correlazioni | plausibilita statistica | casi medi poco narrativi |
| Expert-driven | esperienza di lavoro, casistiche ricorrenti, segnali di allarme | realismo operativo e didattico | rischio di soggettivita |
La soluzione piu’ solida e’ ibrida: usare i dati reali per definire ordini di grandezza e range, e usare l’esperienza per costruire pattern aziendali credibili.
18.1 Pattern esperienziali
Un pattern esperienziale descrive una situazione aziendale tipica. Non e’ ancora un bilancio, ma una traccia narrativa che modifica i numeri.
Esempi:
| Pattern | Segnale tipico | Effetto sui dati sintetici | Lettura per l’analista |
|---|---|---|---|
| Crescita che assorbe cassa | ricavi in aumento ma clienti e magazzino crescono di piu | aumento crediti, rimanenze e PFN | crescita non autofinanziata |
| Margini compressi | EBITDA margin basso o in calo | MOL debole, interest coverage fragile | poco spazio per assorbire shock |
| Sottocapitalizzazione | patrimonio netto basso rispetto all’attivo | leva elevata, PFN/EBITDA piu critico | struttura finanziaria fragile |
| Tensione fornitori | fornitori meno disponibili a finanziare l’impresa | giorni fornitori bassi, passivo corrente piu rigido | minore elasticita di cassa |
| Magazzino eccessivo | rimanenze alte rispetto ai ricavi | current ratio apparentemente buono ma liquidita lenta | rischio obsolescenza o invenduto |
| Utile positivo ma cassa debole | conto economico accettabile, circolante assorbente | utile netto positivo, PFN in peggioramento | redditivita non trasformata in liquidita |
| Debito costoso | tassi elevati o debito bancario alto | oneri finanziari elevati, copertura bassa | rischio sostenibilita del debito |
| Turnaround incompleto | margini in recupero ma leva ancora alta | EBITDA positivo, PFN/EBITDA ancora debole | miglioramento fragile |
| Crisi di domanda | ricavi in calo e costi rigidi | EBITDA negativo, utile negativo | problema industriale prima che finanziario |
| Stagionalita sfavorevole | fotografia di fine anno penalizzante | magazzino o crediti elevati in una data specifica | serve lettura del ciclo operativo |
18.2 Come entra nel generatore
Nel generatore attuale ogni impresa nasce da un archetipo finanziario. In una versione piu’ ricca, ogni impresa potrebbe nascere da quattro dimensioni:
archetipo finanziario x settore x territorio x pattern esperienziale
Esempio:
crescita x meccanico x Nord Est x crescita che assorbe cassa
crisi x metallurgico x Nord Ovest x margini compressi
turnaround x alimentare x Sud e Isole x debito costoso
Il pattern esperienziale agirebbe come un modificatore dei parametri:
| Pattern | Parametri modificati |
|---|---|
| Crescita che assorbe cassa | giorni clienti, giorni magazzino, PFN/EBITDA |
| Margini compressi | EBITDA margin, utile netto, interest coverage |
| Sottocapitalizzazione | patrimonio netto / attivo, debiti bancari |
| Tensione fornitori | giorni fornitori, current ratio |
| Magazzino eccessivo | giorni magazzino, rimanenze / ricavi |
| Debito costoso | tasso interesse, oneri finanziari |
| Turnaround incompleto | crescita ricavi, EBITDA margin, PFN/EBITDA |
18.3 Perche’ e’ utile
Questo approccio e’ utile soprattutto per formazione e validazione.
Un motore automatico puo’ essere testato non solo su imprese “casuali”, ma su casi costruiti per verificare se riconosce situazioni specifiche:
- intercetta una crisi industriale?
- distingue una crescita sana da una crescita che brucia cassa?
- segnala un’impresa redditizia ma sottocapitalizzata?
- penalizza troppo un caso stagionale?
- confonde liquidita apparente e liquidita effettiva?
In questo modo il dataset sintetico diventa un vero banco di prova. Non contiene solo numeri plausibili, ma casi intenzionali.
18.4 Caveat
L’esperienza professionale e’ preziosa, ma va disciplinata.
Per evitare che il generatore rifletta solo intuizioni soggettive, ogni pattern dovrebbe avere:
- una descrizione chiara;
- variabili impattate;
- direzione dell’impatto;
- intensita minima e massima;
- esempi di ratios attesi;
- criteri di validazione.
In pratica, l’esperienza deve diventare una tabella di regole esplicite. Solo cosi’ puo’ essere discussa, corretta e migliorata.
19 Riferimenti accademici utili
La costruzione di questo laboratorio puo’ appoggiarsi a quattro filoni di letteratura e dati.
19.1 Dati sintetici e disclosure control
Il primo filone riguarda la generazione di dati sintetici per rendere accessibili dataset sensibili. I riferimenti classici sono Rubin (1993) e Little (1993), poi sviluppati in lavori su microdati parzialmente sintetici e metodi pratici di sintesi (Reiter 2005; Nowok et al. 2016; Raab et al. 2017).
Questi lavori sono utili per due ragioni:
- chiariscono che il dato sintetico non e’ un semplice dato inventato;
- propongono criteri per valutare utilita’ statistica e rischio residuo di identificazione.
19.2 Dati tabellari sintetici e machine learning
Il secondo filone riguarda la generazione di dati tabellari con modelli statistici o generativi. Qui rientrano strumenti come Synthetic Data Vault (Patki et al. 2016) e modelli GAN per tabelle, come TGAN/CTGAN (Xu and Veeramachaneni 2018; Xu et al. 2019).
Per il nostro progetto questi riferimenti sono utili come confronto metodologico. Noi non stiamo ancora usando un modello generativo profondo: stiamo costruendo un generatore parametrico, domain-driven ed expert-driven. Pero’ i criteri di valutazione restano simili:
- fedelta’ delle distribuzioni;
- conservazione delle relazioni tra variabili;
- utilita’ per task downstream;
- controllo dei casi estremi;
- rischio di generare dati implausibili.
19.3 Classificazione, squilibri di classe e rischio di credito
Il terzo filone riguarda l’uso dei ratios per individuare fragilita’ aziendali. I lavori classici di Beaver, Altman e Ohlson mostrano come informazioni di bilancio e indicatori finanziari possano essere usati per predire fallimento o distress (Beaver 1966; Altman 1968; Ohlson 1980).
Per la parte di screening automatico e’ utile anche il riferimento a SMOTE (Chawla et al. 2002), non perche’ il nostro generatore usi SMOTE, ma perche’ mostra una logica importante: quando i casi critici sono pochi, si possono generare osservazioni sintetiche per testare meglio classificatori e filtri.
19.4 Benchmark reale delle medie imprese italiane
Il quarto filone non e’ letteratura metodologica ma un dataset di riferimento: il rapporto Area Studi Mediobanca - Centro Studi Tagliacarne “Le medie imprese industriali italiane (2015-2024)” (Area Studi Mediobanca and Centro Studi delle Camere di Commercio Guglielmo Tagliacarne 2026), gia’ usato nel progetto collegato 20260630_MediobancaMedieImprese.
Questo rapporto e’ utile come ancoraggio empirico esterno:
- fornisce ordini di grandezza reali (ricavi, margini, leva, capitale circolante) su un campione di 1.821 societa italiane, utili per verificare che i range degli archetipi non siano arbitrari;
- offre cluster territoriali e settoriali gia’ pronti (si veda la sezione “Estensione: settore e territorio”) per una futura versione del generatore che moduli gli archetipi per area e settore;
- ricorda un limite metodologico da rispettare anche qui: campioni chiusi e survivor bias possono distorcere le frequenze osservate, quindi vanno usati come riferimento di ordine di grandezza e non riprodotti meccanicamente.
19.5 Collegamento con questo progetto
Il nostro approccio e’ volutamente piu’ semplice dei modelli generativi avanzati:
- non apprende automaticamente una distribuzione da microdati reali;
- usa archetipi e parametri espliciti;
- incorpora conoscenza esperienziale;
- produce dati auditabili;
- permette di testare regole di screening in modo trasparente.
Questa impostazione e’ adatta a un uso didattico e metodologico. Per usi predittivi o regolamentari servirebbero invece validazioni piu’ forti: confronto con dati osservati, misure formali di utilita’, privacy risk assessment e backtesting su task specifici.