TimeSeriesStrategy
- class TimeSeriesStrategy(parent, initial_investment=0, time_series_dic={}, time_series_discounted_values=False)
Bases:
CashFlowCash flow strategy with user-defined withdrawals and contributions.
Withdrawals, contributions, as well as their dates, are defined in the dictionary.
- Parameters:
- parentPortfolio
The parent Portfolio instance.
- initial_investmentfloat, optional
Initial investment amount. Default is 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.
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()
Methods & Attributes
The frequency of regular withdrawals or contributions in the strategy.
Initial investment (FV) amount at the start of the calculation period.
Get the number of periods per year based on the frequency.
Cash flow time series in form of dictionary.
- NAME = 'time_series'
- 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()