set_mc_parameters

PortfolioDCF.set_mc_parameters(distribution='norm', distribution_parameters=None, period=1, mc_number=100)

Add Monte Carlo simulation parameters to PortfolioDCF.

Parameters:
distribution{‘norm’, ‘lognorm’, ‘t’}, default ‘norm’

Distribution used to generate random rates of return:

  • ‘norm’ for normal distribution

  • ‘lognorm’ for lognormal distribution

  • ‘t’ for Student’s t-distribution

distribution_parameterstuple or None, default None

Distribution parameters to generate random rate of return. (mean, standard deviation) for normal distribution. (shape, loc, scale) for lognormal distribution. (df, loc, scale) for Student distribution. Use None for any element to let SciPy estimate it via the distribution .fit() method (for example, (3, None, None) for Student’s t-distribution with df=3 and auto loc/scale).

periodint, default 1

Forecast period for portfolio wealth index time series (in years).

mc_numberint, default 100

Number of random wealth indexes to generate with Monte Carlo simulation.

Examples

>>> import matplotlib.pyplot as plt
>>> pf = ok.Portfolio(first_date="2015-01", last_date="2024-10")  # create Portfolio with default parameters
>>> # Set Monte Carlo parameters
>>> pf.dcf.set_mc_parameters(distribution="lognorm", period=10, mc_number=100)
>>> # Set the cash flow strategy. It's required to generate random wealth indexes.
>>> ind = ok.IndexationStrategy(pf)  # create IndexationStrategy linked to the portfolio
>>> ind.initial_investment = 10_000  # add initial investments size
>>> ind.frequency = "year"  # set cash flow frequency
>>> ind.amount = -1_500  # set withdrawal size
>>> ind.indexation = "inflation"
>>> # Assign the strategy to Portfolio
>>> pf.dcf.cashflow_parameters = ind
>>> # Plot wealth index with cash flow
>>> pf.dcf.wealth_index(discounting="fv", include_negative_values=False).plot()
>>> plt.show()
../_images/okama-PortfolioDCF-set_mc_parameters-1.png