RiskSimp: Simplifying Random Variables and Simulation in Python
Version: 0.1.5
RiskSimp is a versatile Python library designed to streamline the management and manipulation of random variables, empowering analysts to effortlessly integrate random distributions into their processes and facilitate non-deterministic analysis.
Table of Contents
Installation {#installation}
You can install RiskSimp using pip:
pip install RiskSimp
Usage {#usage}
Import the required modules and classes from RiskSimp:
from RiskSimp import Continuous, Discrete, Constant, Simulation
Modules {#modules}
Objects {#objects}
In the "objects" module, you'll find the base classes used throughout the library.
Utils {#utils}
The "utils" module contains classes to simulate processes with random variables.
Variables {#variables}
The "variables" module houses various classes for different types of random variables.
Continuous {#continuous}
- Uniform(cls, a: Union[int, float], b: Union[int, float])
- Triangular(cls, min_val: Union[int, float], mode: Union[int, float], max_val: Union[int, float])
- Normal(cls, mean: Union[int, float], std_dev: Union[int, float])
- Exponential(cls, scale: Union[int, float])
- Beta(cls, alpha: Union[int, float], beta: Union[int, float])
- Gamma(cls, shape: Union[int, float], scale: Union[int, float])
- Weibull(cls, alpha: Union[int, float], beta: Union[int, float])
- LogNormal(cls, mean: Union[int, float], std_dev: Union[int, float])
Discrete {#discrete}
- Poisson(cls, lam: Union[int, float])
- Uniform(cls, a: int, b: int)
- Triangular(cls, min_val: int, mode: int, max_val: int)
- Binomial(cls, n: int, p: float)
- Bernoulli(cls, p: float, v_occurrence: Union[int, float] = 1, v_non_occurrence: Union[int, float] = 0)
Constant {#constant}
- Constant(subclass of Distribution): Represents a non-random constant value.
Example {#example}
from RiskSimp import *
import numpy_financial as npf
def restaurante(adecuacion,
costo_fijo,
costo_variable,
inflacion,
precio_cerveza,
precio_alitas,
afluencia_anual,
variacion_demanda,
tasa_de_comparacion,
tasa_descuento):
years = 11
adec = [0] * years
adec[0] = adecuacion
c_fijo = [costo_fijo * (1 + inflacion) ** i for i in range(years)]
demanda = [0] + [round(afluencia_anual * (1 + variacion_demanda) ** i) for i in range(years - 1)]
p_cerveza = [0] + [precio_cerveza * (1 + inflacion) ** i for i in range(years - 1)]
p_alitas = [0] + [precio_alitas * (1 + inflacion) ** i for i in range(years - 1)]
ingreso_cerveza = [p * d for p, d in zip(p_cerveza, demanda)]
ingreso_alitas = [p * d for p, d in zip(p_alitas, demanda)]
ingreso = [c + a for c, a in zip(ingreso_cerveza, ingreso_alitas)]
c_variable = [i * costo_variable for i in ingreso]
flujo = [ing - fij - var - inv for ing, fij, var, inv in zip(ingreso, c_fijo, c_variable, adec)]
return npf.npv(tasa_descuento, [0] + flujo), npf.irr(flujo)
adecuacion = Constant(1_500_000_000)
adecuacion.change_name("adecuacion")
costo_fijo = Constant(5_000_000)
costo_fijo.change_name("costo_fijo")
costo_variable = Continuous.Uniform(.01, .04)
costo_variable.change_name("costo_variable")
inflacion = Continuous.Normal(.047, 0.002)
inflacion.change_name("inflacion")
precio_cerveza = Continuous.Triangular(12_000, 13_500, 15_000)
precio_cerveza.change_name("precio_cerveza")
precio_alitas = Continuous.Uniform(25_000, 30_000)
precio_alitas.change_name("precio_alitas")
afluencia_anual = Continuous.Triangular(4000, 6000, 8000)
afluencia_anual.change_name("afluencia_anual")
variacion_demanda = Continuous.Uniform(0.02, 0.04)
variacion_demanda.change_name("variacion_demanda")
tasa_de_comparacion = Constant(0.14)
tasa_de_comparacion.change_name("tasa_de_comparacion")
tasa_descuento = Constant(0.1522)
tasa_descuento.change_name("tasa_descuento")
sim = Simulation(restaurante)
sim.set_inputs(adecuacion,
costo_fijo,
costo_variable,
inflacion,
precio_cerveza,
precio_alitas,
afluencia_anual,
variacion_demanda,
tasa_de_comparacion,
tasa_descuento)
sim.complete_analisys()
Output:
-
histogram for output 1
-
histogram for output 2
-
spider plot for output 1
-
spider plot for output 2
-
inputs table for output 1
-
outputs table for output 1
-
Tornado chart for output 1
-
inputs table for output 2
-
outputs table for output 2
-
Tornado chart for output 2
-
range of 90% confidence
-
lower tail 90% confidence
-
upper tail 90% confidence
License
This project is licensed under the MIT License - see the LICENSE file for details.
Metadata
Release files for RiskSimp 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| RiskSimp-0.1.5.tar.gz | 10.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| RiskSimp-0.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.5 kB
Release files / RiskSimp-0.1.5.tar.gz
| Download URL | RiskSimp-0.1.5.tar.gz |
|---|---|
| Size | 10.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
84f6ea152c13435a83abc53c85b98b76970ae8082e8ce71b4e25438956557a44
|
|
BLAKE2b-256 checksum How to use checksums |
d80a2c10504beb437949536993f0203ae3962e2b36d85d885a189c446fa36593
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.4
|
Release files / RiskSimp-0.1.5-py3-none-any.whl
| Download URL | RiskSimp-0.1.5-py3-none-any.whl |
|---|---|
| Size | 10.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7e1d75e3985bd51c7d83b6e2cc0d722fbae3354094121f7af103ee34fb567978
|
|
BLAKE2b-256 checksum How to use checksums |
baaec18f05ebf51af55c2c353ecc8f27308f242e109293b492487577fddf8272
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.4
|
Security for RiskSimp 0.1.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.