xellstorm
ES
Abrir la app

Migrar un modelo de @RISK, ModelRisk o Analytic Solver

Guía · Actualizada en octubre de 2026

xellstorm abre sin el complemento un archivo creado para @RISK, ModelRisk o Analytic Solver, lee 164 de sus funciones de distribución y convierte cada una de esas fórmulas en una entrada cuyos parámetros siguen vinculados a sus celdas. Antes de ejecutar, enumera lo convertido y cada fórmula que dejó sin convertir, con su motivo.

De las 164 funciones, 53 son de @RISK, 62 de ModelRisk y 49 de Analytic Solver. También lee 65 formas que definen una distribución por sus percentiles, además de truncamientos, marcadores de salida, matrices de correlación y tablas de varias simulaciones.

Qué encuentra la importación en un archivo escrito para @RISK

El ejemplo es la estimación del edificio del ejemplo de contingencia de proyectos, escrita como lo estaría un modelo hecho para @RISK: cada partida de costo es =RiskPert(min, most likely, max, RiskName(label)) sobre las celdas de su fila, cada evento de riesgo es un RiskBernoulli sobre su probabilidad, el costo total y el exceso sobre el presupuesto se marcan con RiskOutput, Estructura y MEP se correlacionan con RiskCorrmat, tres presupuestos van en una sola RiskSimtable y una celda muestra el RiskMean del total. Una segunda hoja, “Demonstrations”, contiene cinco fórmulas independientes: dos formas aritméticas que sí se convierten y tres fórmulas que no. El archivo lo generó un script; xellstorm no necesita @RISK para leerlo, ni usted tampoco.

En la aplicación, Import from workbook (importar desde el archivo), en el paso Distributions (distribuciones), enumera las fórmulas que encontró (el comando xellstorm import de la línea de comandos imprime la misma lista). Para este archivo convierte 12 entradas: las 6 partidas de costo, los 4 eventos de riesgo y 2 demostraciones aritméticas. Las partidas de costo y los eventos de riesgo mantienen sus parámetros vinculados a las celdas, de modo que editar un mínimo o una probabilidad en el archivo cambia la siguiente ejecución, y RiskName(A3) nombra cada entrada con el texto de su fila. Las dos que se convierten son un valor Normal multiplicado por un factor y otra cuya media se calcula a partir de otra celda. Ninguna se usa en las salidas de la estimación.

Qué convierte la importación en el archivo (celdas vinculadas entre paréntesis, con el valor que contienen)
CeldaFórmula en el archivoSe convierte en
E3=RiskPert(B3,C3,D3,RiskName(A3))Preparación del terreno: una PERT con mín. B3 (100), más probable C3 (120), máx. D3 (170)
E4=RiskPert(B4,C4,D4,RiskName(A4))Cimentación: una PERT con mín. B4 (300), más probable C4 (340), máx. D4 (460)
E5=RiskPert(B5,C5,D5,RiskName(A5),RiskCorrmat(Correlation,1))Estructura: una PERT con mín. B5 (760), más probable C5 (820), máx. D5 (1010)
E6=RiskPert(B6,C6,D6,RiskName(A6),RiskCorrmat(Correlation,2))MEP: una PERT con mín. B6 (540), más probable C6 (610), máx. D6 (780)
E7=RiskPert(B7,C7,D7,RiskName(A7))Acabados: una PERT con mín. B7 (400), más probable C7 (450), máx. D7 (560)
E8=RiskPert(B8,C8,D8,RiskName(A8))Equipamiento: una PERT con mín. B8 (260), más probable C8 (280), máx. D8 (330)
D11=RiskBernoulli(B11,RiskName(A11))Condiciones del terreno: una Bernoulli con probabilidad B11 (0,25)
D12=RiskBernoulli(B12,RiskName(A12))Cambio de diseño: una Bernoulli con probabilidad B12 (0,35)
D13=RiskBernoulli(B13,RiskName(A13))Retraso de proveedores: una Bernoulli con probabilidad B13 (0,2)
D14=RiskBernoulli(B14,RiskName(A14))Clima adverso: una Bernoulli con probabilidad B14 (0,3)
Demonstrations!B3=RiskNormal(100,10)*1.1una Normal con media 100 y desviación estándar 10, cuyo valor simulado se multiplica luego por 1,1; solo demostración, no se usa en la estimación
Demonstrations!B4=RiskNormal(Estimate!C3*1.1,10)una Normal con media Estimate!C3*1.1 (132) y desviación estándar 10; solo demostración, no se usa en la estimación

La misma importación lee el resto del modelo:

También se enumeran las fórmulas que no se convierten. Las 3 de la segunda hoja traen el motivo que indica la importación, y para cada una hay una alternativa:

Qué no convierte la importación, con su motivo, en la hoja “Demonstrations” del archivo
FórmulaMotivo indicadoQué hacer
=RiskBinomial(1,0.3)*RiskTriang(20,40,80)las fórmulas con varias distribuciones no se convierten; dé a cada distribución su propia celda de entradaDivídala: una celda =RiskBernoulli(0.3) para saber si el riesgo ocurre, otra =RiskTriang(20,40,80) para su impacto, y multiplíquelas en una tercera, como hacen los eventos de riesgo de la estimación.
=RISKCOMPOUND(RiskPoisson(3),RiskLognorm(10,3))RISKCOMPOUND no tiene un equivalente exacto en xellstormxellstorm no tiene una distribución compuesta. Modele la cantidad y los tamaños en celdas propias, o deje la celda fuera del modelo.
=RISKPERTALT(10%,90,"m.likely",100,90%,130)RISKPERTALT no tiene un equivalente exacto en xellstormEscriba el mínimo, el más probable y el máximo de la PERT (RiskPert), o dé los percentiles a RiskTrigen, que sí se convierte.

Ejecución del modelo convertido

Con la configuración importada y 5000 iteraciones, el costo total promedio es 2784,7 (miles de USD). La media exacta de las mismas distribuciones, es decir, las medias PERT (mín. + 4 × más probable + máx.) / 6 más la probabilidad de cada riesgo por su impacto, es 2784,7, y el error estándar de la media simulada es 1,7. Estructura y MEP alcanzan una correlación de rangos de 0,60. Los tres presupuestos de la RiskSimtable, ejecutados como caso base y dos escenarios:

Resultado del modelo importado: probabilidad de que el costo total supere cada presupuesto de la RiskSimtable (5000 iteraciones, miles de USD)
EjecuciónPresupuestoProbabilidad de superarlo
Ejecución base (simulación 1)290017,7 %
Simulation 230005,2 %
Simulation 331000,7 %

Un presupuesto mayor se supera con menos frecuencia y, como los escenarios usan los mismos números que la ejecución base, las diferencias entre filas se deben solo al presupuesto, no al muestreo.

¿Coincidirán los resultados con los del complemento?

El modelo es el mismo; los números aleatorios, no. Cada regla de la importación asigna a una función la distribución que describe, con los parámetros traducidos como los documenta el proveedor, y se prueba contra la distribución equivalente de scipy; el script que genera los datos de prueba también comprueba la media de cada asignación con la fórmula documentada por el proveedor. Por eso, cuando todas las distribuciones de un archivo se convierten, sus medias y percentiles difieren de los del complemento solo por el ruido de muestreo, que baja al ejecutar más iteraciones: el error estándar de arriba da el orden de magnitud que cabe esperar para la media.

Las correlaciones son correlaciones de rangos, como las definen @RISK y Analytic Solver, y xellstorm alcanza la correlación de rangos solicitada. Cada herramienta empareja a su manera los valores simulados para lograrlo, así que un modelo correlacionado puede diferir algo más en las colas de lo que explica el ruido de muestreo por sí solo. El archivo no se modifica: xellstorm lo lee, y su modelo sigue abriéndose en el complemento.

Qué se convierte

Qué no se convierte

No se convierten varias distribuciones en una misma celda, una distribución dentro de otra función o en un denominador, la división directa de una distribución ni las cadenas que obligan a cambiar el orden de las operaciones aritméticas. Por ejemplo, (RiskNormal(0,1)+5)*2 y RiskNormal(0,1)*2*3 se dejan con un motivo. RiskNormal(0,1)*(1/C1) sí se convierte cuando C1 da un multiplicador finito y positivo, porque la fórmula calcula explícitamente el recíproco antes de multiplicar. Tampoco se admiten los multiplicadores que resultan cero o negativos, los argumentos que llaman a funciones o dependen de celdas aleatorias, las funciones sin equivalente exacto (distribuciones compuestas, funciones de series de tiempo, RiskPertAlt y las demás formas de percentiles con dos parámetros de forma), el argumento U y las cópulas de ModelRisk, ni las propiedades que no figuran en la tabla. El motor no puede calcular una fórmula de complemento que no admite; la comprobación de compatibilidad la nombra.

Funciones compatibles

Las tablas se generan a partir de la propia lista de reglas del importador, así que muestran exactamente lo que convierte. “Percentiles” marca las formas que definen una distribución mediante sus percentiles; † marca las funciones que se convierten solo con números. Bajo cada distribución figura su nombre en las especificaciones de xellstorm.

Funciones de distribución que convierte el importador, por distribución († solo con números: los parámetros se calculan a partir de los argumentos)
Distribución (nombre en xellstorm)@RISKModelRiskAnalytic Solver
Bernoulli
bern
RiskBernoulliVoseBernoulliPsiBernoulli
Beta
beta
RiskBeta
RiskBetaGeneral
RiskBetaSubj†
VoseBeta
VoseBeta4
VoseBetaSubj†
PsiBeta
PsiBetaGen
PsiBetaSubj†
Binomial
binom
RiskBinomialVoseBinomialPsiBinomial
Burr XII
burr12
RiskBurr12——
Cauchy
cauchy
RiskCauchy
Percentiles:
RiskCauchyAlt
RiskCauchyAltD
VoseCauchy—
Chi cuadrado
chi2
RiskChiSq
Percentiles:
RiskChiSqAlt
RiskChiSqAltD
VoseChiSqPsiChiSquare
Percentiles:
PsiChiSquareAlt
Chi, Maxwell
chi
—VoseChi
VoseMaxwell
—
Acumulada
cumul
RiskCumul
RiskCumulD†
VoseCumulA
VoseCumulD†
VoseOgive†
PsiCumul
Dagum (Burr III)
burr
RiskDagumVoseDagumPsiDagum
Discreta
custom
RiskDiscrete
RiskDUniform
VoseDiscrete
VoseDUniform
PsiDiscrete
PsiDisUniform
Exponencial
expon
RiskExpon
Percentiles:
RiskExponAlt
RiskExponAltD
VoseExpon
VoseExponential
PsiExponential
Percentiles:
PsiExponentialAlt
Valor extremo (máx., Gumbel)
gumbel_r
RiskExtValue
Percentiles:
RiskExtValueAlt
RiskExtValueAltD
VoseExtValueMaxPsiMaxExtreme
Percentiles:
PsiMaxExtremeAlt
Valor extremo (mín.)
gumbel_l
RiskExtValueMin
Percentiles:
RiskExtValueMinAlt
RiskExtValueMinAltD
—PsiMinExtreme
Percentiles:
PsiMinExtremeAlt
F
f
RiskFVoseFPsiFDist
Vida por fatiga (Birnbaum–Saunders)
fatiguelife
RiskFatigueLife
Percentiles:
RiskFatigueLifeAlt
RiskFatigueLifeAltD
VoseFatiguePsiFatigueLife
Percentiles:
PsiFatigueLifeAlt
Fréchet
invweibull
RiskFrechet
Percentiles:
RiskFrechetAlt
RiskFrechetAltD
—PsiFrechet
Percentiles:
PsiFrechetAlt
Gamma, Erlang
gamma
RiskGamma
RiskErlang
Percentiles:
RiskGammaAlt
RiskGammaAltD
VoseGamma
VoseErlang
PsiGamma
PsiErlang
Percentiles:
PsiGammaAlt
General (pesos relativos)
general
RiskGeneralVoseRelative—
Pareto generalizada
genpareto
—VoseGPD—
Histograma
histogram
RiskHistogrmVoseHistogramPsiHistogram
Secante hiperbólica
hypsecant
RiskHypSecant
Percentiles:
RiskHypSecantAlt
RiskHypSecantAltD
VoseHSPsiHypSecant
Hipergeométrica
hypergeom
RiskHypergeoVoseHypergeoPsiHyperGeo
Uniforme entera
randint
RiskIntUniformVoseIntUniform
VoseStepUniform†
PsiIntUniform
Gaussiana inversa
invgauss
RiskInvgauss
Percentiles:
RiskInvgaussAlt
RiskInvgaussAltD
VoseInvGaussPsiInvNormal
Johnson SB
johnsonsb
RiskJohnsonSBVoseJohnsonBPsiJohnsonSB
Johnson SU
johnsonsu
RiskJohnsonSUVoseJohnsonUPsiJohnsonSU
Kumaraswamy
kumaraswamy
RiskKumaraswamyVoseKumaraswamy
VoseKumaraswamy4
PsiKumaraswamy
Laplace
laplace
RiskLaplace
Percentiles:
RiskLaplaceAlt
RiskLaplaceAltD
VoseLaplace—
Lévy
levy
RiskLevy
Percentiles:
RiskLevyAlt
RiskLevyAltD
VoseLevyPsiLevy
Percentiles:
PsiLevyAlt
Log-logística
fisk
RiskLogLogistic
Percentiles:
RiskLogLogisticAlt
RiskLogLogisticAltD
VoseLogLogisticPsiLogLogistic
Percentiles:
PsiLogLogisticAlt
Logística
logistic
RiskLogistic
Percentiles:
RiskLogisticAlt
RiskLogisticAltD
VoseLogisticPsiLogistic
Percentiles:
PsiLogisticAlt
Lognormal
lognorm
RiskLognorm
RiskLognorm2
Percentiles:
RiskLognormAlt
RiskLognormAltD
VoseLognormal
VoseLognormalE
PsiLogNormal
PsiLognorm
PsiLognorm2
Percentiles:
PsiLogNormalAlt
Binomial negativa, geométrica
nbinom
RiskGeomet
RiskNegbin
VoseGeometric
VoseNegBin
VoseNegBinom
VosePolya†
PsiGeometric
PsiNegBinomial
Normal
norm
RiskNormal
RiskErf†
Percentiles:
RiskNormalAlt
RiskNormalAltD
VoseNormal
VoseErf†
PsiNormal
PsiErf†
Percentiles:
PsiNormalAlt
Pareto
pareto
RiskPareto
Percentiles:
RiskParetoAlt
RiskParetoAltD
VoseParetoPsiPareto
Percentiles:
PsiParetoAlt
Pareto II (Lomax)
lomax
RiskPareto2
Percentiles:
RiskPareto2Alt
RiskPareto2AltD
VosePareto2PsiPareto2
Percentiles:
PsiPareto2Alt
Pearson V (gamma inversa)
invgamma
RiskPearson5
Percentiles:
RiskPearson5Alt
RiskPearson5AltD
VosePearson5PsiPearson5
Percentiles:
PsiPearson5Alt
Pearson VI (beta prima)
betaprime
RiskPearson6VosePearson6PsiPearson6
PERT
pert
RiskPertVosePERT
VoseModPERT
PsiPert
Poisson
poiss
RiskPoissonVosePoissonPsiPoisson
Rayleigh
rayleigh
RiskRayleigh
Percentiles:
RiskRayleighAlt
RiskRayleighAltD
VoseRayleighPsiRayleigh
Percentiles:
PsiRayleighAlt
Recíproca (log-uniforme)
loguniform
RiskReciprocalVoseReciprocalPsiReciprocal
t de Student
t
RiskStudent
Percentiles:
RiskStudentAlt
RiskStudentAltD
VoseStudent
VoseStudent3†
PsiStudent
Percentiles:
PsiStudentAlt
Triangular
triang
RiskTriangVoseTrianglePsiTriangular
Triangular a partir de percentiles (Trigen)
trigen
RiskTrigen
Percentiles:
RiskTriangAlt
VoseTriangleAltPsiTriangGen
Uniforme
unif
RiskUniform
Percentiles:
RiskUniformAlt
RiskUniformAltD
VoseUniformPsiUniform
Weibull
weibull_min
RiskWeibull
Percentiles:
RiskWeibullAlt
RiskWeibullAltD
VoseWeibull
VoseWeibull3
PsiWeibull
Percentiles:
PsiWeibullAlt
Fórmulas de muestreo propias de Excel que convierte el importador († solo con números)
Fórmulaxellstorm
=NORM.INV(RAND(), mean, sd)norm (loc, scale)
=NORMINV(RAND(), mean, sd)norm (loc, scale)
=mean + sd*NORM.S.INV(RAND())norm (loc, scale)
=LOGNORM.INV(RAND(), mu, sigma)lognorm (mu, sigma)
=LOGINV(RAND(), mu, sigma)lognorm (mu, sigma)
=GAMMA.INV(RAND(), alpha, beta)gamma (a, scale)
=GAMMAINV(RAND(), alpha, beta)gamma (a, scale)
=BETA.INV(RAND(), alpha, beta)beta (a, b)
=BETA.INV(RAND(), alpha, beta, A, B)beta (a, b, min, max)
=BETAINV(RAND(), alpha, beta, A, B)beta (a, b, min, max)
=BINOM.INV(n, p, RAND())binom (n, p)
=CRITBINOM(n, p, RAND())binom (n, p)
=RANDBETWEEN(a, b)randint (min, max)
=a + (b - a)*RAND()unif (min, max)
=a + s*RAND()unif (loc, scale)
=RAND()unif
=IF(RAND() < p, 1, 0)bern (p)
=IF(RAND() < p, x, y)†custom (x, prob)
Funciones de propiedades, marcadores y estadísticas que lee el importador
FunciónComplementoEn xellstorm se convierte en
RiskTruncate@RISKTruncamiento: truncate_min, truncate_max (antes de cualquier desplazamiento)
RiskTruncate2@RISKTruncamiento: truncate_min, truncate_max de los valores desplazados (se deshace el desplazamiento en los límites)
RiskTruncateP@RISKTruncamiento: truncate_pmin, truncate_pmax (percentiles de la distribución)
RiskShift@RISKDesplazamiento: shift
RiskName@RISKNombre: el nombre de la entrada
RiskLock@RISKBloqueo: un valor fijo (RiskLock(v), o el valor de RiskStatic)
RiskCorrmat@RISKCorrelación: correlaciones de rangos entre las entradas de una matriz
RiskDepC@RISKCorrelación: una correlación de rangos con la entrada que tiene el mismo nombre de par
RiskIndepC@RISKCorrelación: una correlación de rangos con la entrada que tiene el mismo nombre de par
RiskSimtable@RISKUn valor por simulación: una celda fija en la ejecución base, un escenario por cada simulación adicional
RiskOutput@RISKSalida: una salida con el nombre indicado
VoseXBoundsModelRiskTruncamiento: truncate_min, truncate_max (antes de cualquier desplazamiento)
VosePBoundsModelRiskTruncamiento: truncate_pmin, truncate_pmax (percentiles de la distribución)
VoseShiftModelRiskDesplazamiento: shift
VoseInputModelRiskNombre: el nombre de la entrada
VoseSimTableModelRiskUn valor por simulación: una celda fija en la ejecución base, un escenario por cada simulación adicional
VoseOutputModelRiskSalida: una salida con el nombre indicado
PsiTruncateAnalytic SolverTruncamiento: tipo 1 (el predeterminado): truncate_min, truncate_max antes de cualquier desplazamiento; -1: de los valores desplazados; 3: truncate_pmin, truncate_pmax
PsiTruncatePAnalytic SolverTruncamiento: truncate_pmin, truncate_pmax (percentiles de la distribución)
PsiShiftAnalytic SolverDesplazamiento: shift
PsiNameAnalytic SolverNombre: el nombre de la entrada
PsiCorrMatrixAnalytic SolverCorrelación: correlaciones de rangos entre las entradas de una matriz
PsiCorrDepenAnalytic SolverCorrelación: una correlación de rangos con la entrada que tiene el mismo nombre de par
PsiCorrIndepAnalytic SolverCorrelación: una correlación de rangos con la entrada que tiene el mismo nombre de par
PsiSimParamAnalytic SolverUn valor por simulación: una celda fija en la ejecución base, un escenario por cada simulación adicional
PsiOutputAnalytic SolverSalida: una salida: la propia celda, o las celdas a las que se refiere
PsiSimOutputAnalytic SolverSalida: una salida: la propia celda, o las celdas a las que se refiere
PsiMeanAnalytic SolverEstadística: la celda de su primer argumento se convierte en una salida (como con toda estadística Psi de una salida)

Preguntas

¿Necesito tener instalado @RISK, ModelRisk o Analytic Solver?

No. xellstorm lee las fórmulas del propio archivo .xlsx y calcula el modelo con su propio motor en el navegador, sin Excel ni el complemento. Guarde primero como .xlsx los archivos .xls y .xlsb.

¿xellstorm modifica mi archivo?

No. La importación convierte las fórmulas en entradas de la configuración propia de xellstorm; no se escribe nada en el archivo de su equipo, así que el modelo sigue abriéndose y ejecutándose en el complemento.

¿Qué pasa con una matriz de correlación?

Las entradas que comparten un rango RiskCorrmat o PsiCorrMatrix reciben las correlaciones de rangos de la matriz, leídas de sus celdas al importar; RiskDepC y PsiCorrDepen emparejan una entrada con la del mismo nombre. Los pares que no se pueden leer (una matriz que no es cuadrada, una posición fuera de ella, una celda sin número) se nombran en las notas de la importación, y una entrada que no se convirtió se enumera con su motivo y se excluye de sus pares. Si la matriz no es una matriz de correlación válida, xellstorm aplica la válida más cercana, y la aplicación la muestra antes de la ejecución.

¿En qué se convierte una RiskSimtable?

El primer valor fija la celda en la ejecución base y cada valor adicional se convierte en un escenario con el nombre Simulation 2, Simulation 3 y así sucesivamente. Los escenarios usan los mismos números aleatorios que la ejecución base, de modo que las diferencias entre ellos provienen solo de los valores de la tabla.

@RISK, ModelRisk y Analytic Solver son marcas comerciales de sus respectivos propietarios. xellstorm no está afiliado a ellos; sus nombres de función aparecen aquí solo para indicar lo que xellstorm lee.

Relacionados

xellstorm es una herramienta de simulación Monte Carlo para modelos de Excel que funciona en el navegador: sin complemento, y el archivo nunca sale de su equipo.