cdm

cdm

Descripción

La acción `cdm` en el conjunto de acciones `cdm` (Compound Distribution Model) se utiliza para simular una muestra de una distribución de pérdida agregada, que se construye a partir de distribuciones de frecuencia y severidad. Es una herramienta fundamental en el modelado de riesgos para estimar la distribución de pérdidas totales en un período determinado.

cdm.cdm { adjustedSeverity={adjParm}, aggLossModelType="COLLECTIVERISK" | "CUSTOM" | "PUREPREMIUM", countDistributions={{countDist-1} <, {countDist-2}, ...>}, countStore={castable}, countVariable="variable-name", display={displayTables}, idVariable="variable-name", ignoreParmCovariance=TRUE | FALSE, maxCountDraw=integer, nPerturbedSamples=integer, nReplicates=64-bit-integer, outDraw={casouttable}, output={outsampleParm}, outputTables={outputTables}, outsum={outsumParm}, percentileMethod=integer, perturbMode="AUTO" | "DIST", plotTable={plotTable}, seed=integer, severityDefinitions={castable}, severityDistributions={"string-1" <, "string-2", ...>}, severityEst={castable}, severityStore={castable}, severityTruncationLeft=double, severityTruncationRight=double, simulatedSymbols={{simSymbol-1} <, {simSymbol-2}, ...>}, table={castable}, truncateZeros=TRUE | FALSE, varianceDivisor="DF" | "N" };
Parámetros
ParámetroDescripción
adjustedSeverityEspecifica los símbolos de severidad ajustados y un programa SAS para calcularlos. Se estima una distribución agregada para cada símbolo de severidad ajustado.
aggLossModelTypeEspecifica el tipo de modelo a utilizar para la pérdida agregada.
countDistributionsEspecifica las distribuciones de conteo y los valores de sus parámetros.
countStoreEspecifica una tabla de almacén de ítems para leer las estimaciones del modelo de conteo. Debe ser una tabla creada por la acción `countregFitModel`.
countVariableEspecifica la variable de conteo.
displayEspecifica una lista de tablas de resultados para enviar al cliente para su visualización.
idVariableEspecifica el nombre de la variable de ID de replicación.
ignoreParmCovarianceSi es `TRUE`, ignora las estimaciones de covarianza de los parámetros y utiliza solo sus errores estándar para perturbarlos.
maxCountDrawEspecifica un límite superior en el número de eventos de pérdida (conteo) que se utiliza para simular un punto de muestra de pérdida agregada.
nPerturbedSamplesEspecifica el número de muestras perturbadas a producir para realizar el análisis de perturbación de parámetros.
nReplicatesEspecifica un número que controla el tamaño de la muestra de la distribución compuesta que la acción simula.
outDrawEspecifica los detalles de la tabla de salida para escribir los sorteos de severidad.
outputEspecifica los detalles de la tabla de salida para escribir las muestras.
outputTablesLista los nombres de las tablas de resultados para guardar como tablas CAS en el servidor.
outsumEspecifica los detalles de la tabla de salida para escribir estadísticas de resumen.
percentileMethodEspecifica el método para calcular los percentiles de la distribución compuesta.
perturbModeEspecifica cómo organizar las muestras perturbadas cuando las simulaciones utilizan más de un nodo de trabajo.
plotTableEspecifica la información que controla la creación y el contenido de la tabla de resultados PlotData.
seedEspecifica la semilla para el generador de números aleatorios.
severityDefinitionsEspecifica el nombre de la tabla CAS que contiene las definiciones de la distribución de severidad.
severityDistributionsEspecifica la lista de nombres de distribuciones de severidad a analizar.
severityEstEspecifica una tabla para leer las estimaciones del modelo de severidad desde una tabla `OUTEST`.
severityStoreEspecifica una tabla de almacén de ítems para leer las estimaciones del modelo de severidad.
severityTruncationLeftEspecifica el umbral de truncamiento izquierdo a aplicar a cada valor de severidad.
severityTruncationRightEspecifica el límite de truncamiento derecho a aplicar a cada valor de severidad.
simulatedSymbolsEspecifica los símbolos simulados y sus distribuciones de probabilidad.
tableEspecifica la tabla de datos de entrada.
truncateZerosSi es `TRUE`, trunca (elimina) las pérdidas agregadas con valor cero de la muestra agregada.
varianceDivisorEspecifica el divisor a utilizar en el cálculo de la varianza, desviación estándar, curtosis y asimetría de la muestra de la distribución compuesta.
Creación de Datos de Definición de Severidad

Para usar la acción `cdm`, primero se necesita una tabla que defina los modelos de severidad. El siguiente código crea una tabla `sevdefs` en la caslib `casuser`. Esta tabla especifica una distribución Lognormal (`Lognormal`) con sus parámetros `mu` y `sigma`.

¡Copiado!
1DATA casuser.sevdefs;
2 LENGTH model $20 distribution $20;
3 model='sev1'; distribution='Lognormal';
4 OUTPUT;
5RUN;
6 
7DATA casuser.sevest;
8 LENGTH _model_ $20 _name_ $20;
9 _model_='sev1'; _name_='mu'; estimate=1.5; OUTPUT;
10 _model_='sev1'; _name_='sigma'; estimate=0.5; OUTPUT;
11RUN;

Ejemplos

Este ejemplo realiza una simulación básica de un modelo de riesgo colectivo. Utiliza una distribución de Poisson para la frecuencia (número de siniestros) y la distribución Lognormal definida en `casuser.sevdefs` y `casuser.sevest` para la severidad (monto de cada siniestro). Se generan 100,000 réplicas de la pérdida agregada.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2 cdm.cdm
3 nReplicates=100000,
4 seed=1234,
5 countDistributions={{name='Poisson', parmValues={{value=2}}}},
6 severityEst={name='sevest', caslib='casuser'},
7 severityDefinitions={name='sevdefs', caslib='casuser'},
8 OUTPUT={outSample={name='myaggloss', caslib='casuser', replace=true}};
9RUN;
Resultado :
La acción genera una tabla CAS llamada `myaggloss` en la caslib `casuser`. Esta tabla contiene 100,000 observaciones de la variable de pérdida agregada simulada, que por defecto se llama `_AGGSEV_`.

Este ejemplo más detallado simula un modelo de pérdida agregada utilizando dos distribuciones de severidad diferentes (Lognormal y Gamma). Se especifica la tabla `severityEst` para los parámetros. Además, se utiliza el parámetro `outsum` para calcular y guardar estadísticas descriptivas (media, desviación estándar) y percentiles específicos (95, 97.5, 99, 99.5) de la muestra de pérdida agregada en una nueva tabla llamada `myaggsummary`.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2 cdm.cdm
3 nReplicates=200000,
4 seed=5678,
5 countDistributions={{name='NegativeBinomial', parmValues={{value=3},{value=0.5}}}},
6 severityEst={name='sevest', caslib='casuser'},
7 severityDefinitions={name='sevdefs', caslib='casuser'},
8 OUTPUT={outSample={name='myaggloss_detailed', caslib='casuser', replace=true}},
9 outsum={
10 outSummary={name='myaggsummary', caslib='casuser', replace=true},
11 percentiles={{percentile=95},{percentile=97.5},{percentile=99},{percentile=99.5}},
12 summaryStatistics={{statistic='mean'},{statistic='stddev'}}
13 };
14RUN;

Este ejemplo demuestra cómo realizar un análisis de sensibilidad o perturbación de parámetros. Se generan 500 muestras perturbadas (`nPerturbedSamples=500`). Para cada muestra perturbada, los parámetros de las distribuciones de conteo y severidad se extraen de una distribución normal multivariante definida por sus estimaciones y la matriz de covarianza (si está disponible en `countStore` o `severityEst`). Esto permite evaluar el impacto de la incertidumbre de los parámetros en la distribución de la pérdida agregada.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1/* Se asume que se ha creado un almacén de ítems 'mycountstore' con la acción countreg.fitModel */
2/* y un almacén 'mysevstore' con la acción severity.severity */
3PROC CAS;
4 cdm.cdm
5 nReplicates=10000,
6 nPerturbedSamples=500,
7 seed=123,
8 countStore={name='mycountstore', caslib='casuser'},
9 severityStore={name='mysevstore', caslib='casuser'},
10 OUTPUT={
11 outSample={name='aggperturbsample', caslib='casuser', replace=true},
12 perturbOut=true
13 },
14 outsum={
15 outSummary={name='aggperturbsummary', caslib='casuser', replace=true},
16 percentiles={{percentile=99.5}}
17 };
18RUN;

FAQ

¿Para qué se utiliza la acción cdm en SAS Viya?
¿Qué tipos de modelos de pérdida agregada soporta la acción cdm?
¿Cómo se define la distribución de severidad para la simulación?
¿Es posible generar muestras perturbadas para análisis de sensibilidad?
¿Qué hace el parámetro 'adjustedSeverity'?
¿Qué es la acción `cdm`?
¿Cuál es el propósito principal del conjunto de acciones de Modelado de Pérdidas Agregadas?
¿Qué tipos de modelos de pérdida agregada soporta la acción `cdm`?
¿Cómo se especifican las distribuciones de severidad para la simulación?
¿Qué hace el parámetro `nPerturbedSamples`?
¿Es posible ajustar la muestra de severidad generada?

Escenarios asociados

Caso de uso
Estimación de Reservas para Seguros de Automóviles (Riesgo Colectivo)

Una compañía de seguros necesita estimar el capital de reserva necesario para cubrir siniestros de automóviles el próximo año. Utilizan datos históricos que indican una frecuenc...

Caso de uso
Pruebas de Estrés Financiero y Perturbación de Parámetros

Un banco internacional está realizando pruebas de estrés (CCAR) para riesgos operativos. Necesitan no solo la pérdida esperada, sino entender qué tan sensible es su modelo a peq...

Caso de uso
Cálculo de Reaseguro con Lógica de Negocio Personalizada (Adjusted Severity)

Una reaseguradora quiere modelar el riesgo de una cartera donde solo pagan si el siniestro supera un deducible de $5,000. Si el siniestro es menor, la pérdida para ellos es cero...