Vai al contenuto

Banche, assicurazioni e finanzaBI, AI e ML per l'azienda

Rischio di portafoglio e correlazioni

Un portafoglio diversificato resta tale finché le correlazioni reggono. Muvia legge i prezzi dei fondi minuto per minuto, una funzione Python calcola volatilità e drawdown, l'Analisi allinea i picchi e il comitato vede la correlazione che cambia segno prima del rendiconto.

Scenario illustrativo: descrive un caso tipo, non il progetto di un cliente.

La diversificazione si rompe proprio quando serve.

Azioni e obbligazioni di solito si compensano, e il portafoglio è costruito su questo. In una crisi la correlazione può cambiare segno in pochi giorni, e un rendiconto mensile lo mostra quando la perdita è già fatta.

Per vederlo in tempo servono prezzi frequenti, una volatilità e un drawdown calcolati sempre allo stesso modo e un modo per confrontare i picchi tra loro. Il comitato deve ricevere i numeri con una spiegazione, non un foglio da interpretare.

Per chi
Risk manager, gestori di portafoglio, comitato investimenti e analisti quantitativi.
Le quotazioni dei fondi da un'API REST del fornitore di dati di mercato, le posizioni dal gestionale titoli su SQL Server e i limiti di rischio in Excel entrano in Muvia, dove una funzione del team calcola volatilità e drawdown; escono un cruscotto dei fondi, l'Analisi dei picchi, un allarme sui limiti e il notebook per il comitato.

In Muvia, passo per passo

Schermate vere del prodotto, registrate su un progetto con dati di esempio.

1 di 5

Il video · Un portafoglio diversificato resta tale finché le correlazioni reggono. Muvia legge i prezzi dei fondi minuto per minuto, una funzione Python calcola volatilità e drawdown, l'Analisi allinea i picchi e il comitato vede la correlazione che cambia segno prima del rendiconto.

Cosa ottieni

Il rischio con una sola definizione
Volatilità e drawdown escono sempre dalla stessa funzione: comitato, gestori e risk manager leggono gli stessi numeri.
Un picco confrontato con gli altri
Gli episodi sovrapposti mostrano se quello di oggi assomiglia ai precedenti o no, per forma e per durata.
La correlazione che cambia si vede
Il cruscotto mostra quando azioni e obbligazioni smettono di compensarsi, mentre succede.
Al comitato una nota, non un foglio
Numeri, grafici e proposta arrivano nello stesso documento, rifatto sui dati aggiornati.

Per il team tecnico

Come si costruisce in Muvia

  1. 1

    Collega quotazioni e posizioni

    Le quotazioni arrivano da un'API REST su programma, le posizioni dal gestionale titoli con una copia incrementale. Ogni sorgente diventa una tabella interrogabile.

  2. 2

    Calcola il rischio in Python

    Una funzione calcola per ogni fondo le bande, la volatilità annualizzata su una finestra mobile e il drawdown dal massimo. Un flusso la esegue su programma e scrive i risultati in una tabella gestita.

  3. 3

    Allinea i picchi in Analisi

    La vista Strati sovrappone gli episodi di volatilità alta sull'istante in cui iniziano: il picco di oggi si confronta con quelli passati per forma e durata. Le note del team restano sul grafico.

  4. 4

    Segui la correlazione

    Un cruscotto mette accanto le candele orarie, la volatilità dei fondi e la correlazione mobile tra azioni e obbligazioni; un allarme si apre quando la volatilità supera il limite.

  5. 5

    Scrivi la nota per il comitato

    Un notebook con testo, numeri e grafici racconta cosa è cambiato e la proposta di riallocazione, e diventa un PDF per il comitato.

Funzione Python

import numpy as np

MINUTI_ANNO = 252 * 510  # giorni di borsa per minuti di contrattazione

def transform(inputs, params, ctx):
    df = inputs["rows"].sort_values(["fondo", "minuto"])
    w = params["finestra_minuti"]
    prezzo = df.groupby("fondo")["prezzo"]
    df["rendimento"] = prezzo.transform(lambda p: np.log(p).diff())
    df["volatilita_annua"] = df.groupby("fondo")["rendimento"].transform(
        lambda r: r.rolling(w).std() * np.sqrt(MINUTI_ANNO))
    df["drawdown"] = df["prezzo"] / prezzo.cummax() - 1
    media = prezzo.transform(lambda p: p.rolling(w).mean())
    dev = prezzo.transform(lambda p: p.rolling(w).std())
    df["banda_alta"], df["banda_bassa"] = media + 2 * dev, media - 2 * dev
    ctx.logger.info("fondi elaborati: %d", df["fondo"].nunique())
    return {"rows": df}
Volatilità, drawdown e bande calcolati fondo per fondo con la stessa funzione: comitato e gestori leggono gli stessi numeri.
I dati che servono
  • Quotazioni dei fondi al minuto, lette dall'API REST del fornitore di dati di mercato
  • Posizioni e pesi del portafoglio, dal gestionale titoli su SQL Server
  • Limiti di volatilità e di drawdown per fondo, da un file Excel
Le parti di Muvia usate

Portaci una domanda a cui oggi non sai rispondere.

Partiamo da una domanda vera della tua azienda e ti mostriamo il percorso dalla fonte al cruscotto, con i tuoi sistemi e non con quelli di una demo.