IndexationStrategy

class IndexationStrategy(parent, frequency='none', initial_investment=1000.0, time_series_dic={}, time_series_discounted_values=False, amount=0, indexation=None)

Bases: CashFlow

Cash flow strategy with regular indexed withdrawals or contributions.

Parameters:
parentPortfolio

Parent Portfolio instance.

Examples

>>> import matplotlib.pyplot as plt
>>> pf = ok.Portfolio(first_date="2015-01", last_date="2024-10")  # create Portfolio with default parameters
>>> # Set the cash flow strategy
>>> 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-IndexationStrategy-1.png

Methods & Attributes

NAME

amount

Portfolio regular withdrawal or contribution size.

frequency

The frequency of regular withdrawals or contributions in the strategy.

indexation

Portfolio cash flow indexation rate.

initial_investment

Initial investment (FV) amount at the start of the calculation period.

periods_per_year

Get the number of periods per year based on the frequency.

time_series_dic

Cash flow time series in form of dictionary.

NAME = 'fixed_amount'
property amount

Portfolio regular withdrawal or contribution size. Negative value corresponds to withdrawals. Positive value corresponds to contributions. Cash flow value is indexed each period by ‘indexation’.

The frequency of withdrawals or contributions is determined by the frequency parameter.

Returns:
float

Portfolio regular cash flow size.

property indexation

Portfolio cash flow indexation rate.

Returns:
float

Cash flow indexation rate.

property frequency

The frequency of regular withdrawals or contributions in the strategy.

Allowed values for frequency:

  • ‘none’ no frequency (default value)

  • ‘year’ annual cash flows

  • ‘half-year’ 6 months cash flows

  • ‘quarter’ 3 months cash flows

  • ‘month’ 1 month cash flows

Returns:
str

The frequency of withdrawals or contributions.

property initial_investment

Initial investment (FV) amount at the start of the calculation period.

For historical backtesting, this is the investment at first_date. For Monte Carlo simulations, this is the investment at last_date. Initial investment must be positive.

Returns:
float

Portfolio initial investment.

property periods_per_year

Get the number of periods per year based on the frequency.

Returns:
int

Number of periods per year.

property time_series_dic

Cash flow time series in form of dictionary.

Negative number corresponds to withdrawals, positive number corresponds to contributions.

Examples

>>> import matplotlib.pyplot as plt
>>> pf = ok.Portfolio(first_date="2015-01", last_date="2024-10")  # create Portfolio with default parameters
>>> # create simple dictionary with cash flow amounts and dates
>>> d = {"2018-02": 2_000, "2024-03": -4_000}
>>> ts = ok.TimeSeriesStrategy(pf)  # create TimeSeresStrategy linked to the portfolio
>>> ts.time_series_dic = d  # use the dictionary to set cash flow
>>> ts.initial_investment = 1_000  # add initial investments size (optional)
>>> # Assign the strategy to Portfolio
>>> pf.dcf.cashflow_parameters = ts
>>> # Plot wealth index with cash flow
>>> pf.dcf.wealth_index(discounting="fv", include_negative_values=False).plot()
>>> plt.show()
../_images/okama-IndexationStrategy-2.png