PercentageStrategy
- class PercentageStrategy(parent, frequency='none', initial_investment=1000.0, time_series_dic={}, time_series_discounted_values=False, percentage=0.0)
Bases:
CashFlowCash flow strategy with regular fixed percentage withdrawals or contributions.
- Parameters:
- parentPortfolio
The parent Portfolio instance.
- frequencystr, optional
Frequency of cash flows. Default is “none”.
- initial_investmentfloat, optional
Initial investment amount. Default is 1000.0.
- time_series_dicdict, optional
Dictionary with dates and cash flow values. Default is empty dict.
- time_series_discounted_valuesbool, optional
If True, values in time_series_dic are considered as discounted (PV). Default is False.
- percentagefloat, optional
Percentage of portfolio balance to be withdrawn or contributed. Negative for withdrawals. Default is 0.0.
Examples
>>> import matplotlib.pyplot as plt
>>> pf = ok.Portfolio(first_date="2015-01", last_date="2024-10") # create Portfolio with default parameters >>> pc = ok.PercentageStrategy(pf) # create PercentageStrategy linked to the portfolio >>> pc.initial_investment = 10_000 # add initial investments size >>> pc.frequency = "year" # set cash flow frequency >>> pc.percentage = -0.12 # set withdrawal percentage >>> # Assign the strategy to Portfolio >>> pf.dcf.cashflow_parameters = pc >>> # Plot wealth index with cash flow >>> pf.dcf.wealth_index(discounting="fv", include_negative_values=False).plot() >>> plt.show()
Methods & Attributes
The frequency of regular withdrawals or contributions in the strategy.
Initial investment (FV) amount at the start of the calculation period.
The percentage of withdrawals or contributions.
Get the number of periods per year based on the frequency.
Cash flow time series in form of dictionary.
- NAME = 'fixed_percentage'
- property percentage
The percentage of withdrawals or contributions.
The size of withdrawals or contribution is defined as a percentage of portfolio balance per year.
- Returns:
- float
The percentage of withdrawals or contributions.
- 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()