Okama

Latest version: v1.4.0

Safety actively analyzes 622513 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 6

1.4.0

Okama 1.4.0 introduces investment strategies with contributions and withdrawals in `Portfolio` class. New methods support discounted cash flows (DCF) and Monte Carlo simulation for portfolio longevity.

<img src="https://github.com/mbk-dev/okama/assets/29829921/68dfc965-0663-48f1-a08e-f26d47b2f892" width=70%>

New features
DCF methods for contributions and withdrawals in `Portfolio` class
**New `Portfolio` class attributes (all are optional):**
- `initial_amount` - Portfolio initial investment FV (at last_date)
- `cashflow` - portfolio monthly cash flow FV (at last_date). Negative value corresponds to withdrawals.
Positive value corresponds to contributions. Cash flow value is indexed each month by inflation.
- `discount_rate` - cash flow discount rate required to calculate PV values.

**New `dcf.` methods in `Portfolio` class:**
- `dcf.plot_forecast_monte_carlo()` method to plot Monte Carlo simulation for portfolio future wealth indexes optionally together with historical wealth index.
- `dcf.monte_carlo_survival_period()` method to generate a survival period distribution for a portfolio with cash flows by Monte Carlo simulation.
- `dcf.wealth_index` property to calculate wealth index time series for the portfolio with contributions and
withdrawals.
- `dcf.survival_period` property to calculate the period when the portfolio has positive balance considering withdrawals on the historical data.
- `dcf.survival_date` property to get the date when the portfolio balance become negative considering withdrawals on the historical data.
- `dcf.cashflow_pv` property to calculate the discounted value (PV) of the cash flow amount at the historical `first_date`.
- `dcf.initial_amount_pv` property to calculate the discounted value (PV) of the initial investments at the historical `first_date`.

New properties in `Portfolio` class
- `assets_dividend_yield` property to calculate last twelve months (LTM) dividend yield time series (monthly) for each asset
- `dividends_annual` property to get calendar year dividends sum time series for each asset.

New methods and properties in `AssetList` class
- `get_rolling_risk_annual()` method to calculate annualized risk rolling time series for each asset.
- `get_dividend_mean_yield()` method to calculate the arithmetic mean for annual dividend yield over a specified period.
- `dividend_yield_annual` property to calculate last twelve months (LTM) dividend yield annual time series.

Changes in existing methods & properties
- `Asset_List.risk_annual` returns expanding risk time series (not float)
- `Portfolio.recovery_period` returns time series of recovery periods over historical data (not a single period)
- `describe()` method shows the rate of return arithmetic mean (expected return) in `Portfolio`, `AssetList` classes
- new `xy_text` argument in `plot_assets()` method to position better point labels
in `Portofolio`, `AssetList` classes

New Jupyter Notebooks with examples
- [04 investment portfolios with DCF.ipynb](https://github.com/mbk-dev/okama/blob/master/examples/04%20investment%20portfolios%20with%20DCF.ipynb) for investment strategies with cash flow - portfolio withdrawals / contributions. Backtest the portfolio and forecast portfolio longevity with Monte Carlo simulation.
- [05 macroeconomics - inflation rates.ipynb](https://github.com/mbk-dev/okama/blob/master/examples/05%20macroeconomics%20-%20inflation%20rates.ipynb) to analyze inflation, key rates and other macro indicators historical data.

Bugs fixed
- Duplicate tickers in the assets are no longer allowed and are automatically corrected (`AssetList`, `Portfolio`, `EfficientFrontier`, `EfficientFrontierReb`)

1.3.2

Okama now supports **Panadas 2.0.0** and further versions. There is no backward compatibility with previous Pandas versions.

New features:
- **New rebalancing periods** for portfolios: "half-year" and "quarter"
- new `set_values_monthly()` method in Inflation to forecast data and change previos values
- new `dividend_yield_annual` property in AssetList calculates dividend yield time series for calendar years
- new `get_dividend_mean_yield()` method in AssetList shows mean dividend yield for a given period
- `plot_cml()` has new `y_axe` parameter to switch from CAGR to mean rate of returns in the plots
- `asset_dividend_yield` property renamed to `dividend_yield` in AssetList

1.3.1

okama works with Python 3.11 now.

FIX:
- aliases `symbols_in_namespace` and `no_dividends_namespaces` were not imported in `__init__.py`

1.3.0

New features:
- rolling_window parameter in AssetList functions: `index_corr()`, `index_beta()`, `tracking_error()`
- `index_corr()` and `index_rolling_corr()` are combined into a single function `index_corr()` in the AssetList
- AssetList, Prtfolio, EfficentFrontier and EfficentFrontierReb are now **sequences** and has `__getitem__`, `__iter__` methods.


Fix:
- Avoid running `get_namspaces()` and other aliases in __init__.py (this resulted in the database requests during library import)
- `EfficientFrontier.plot_pair_ef()` faled if inflation=False
- Tickers with dot "." like BRK.B

1.2.3

The release uses runtime Python 3.8. This version is recomended for development. Previous versions of okama were using legacy Python 3.7.

New features:

- `EfficentFrontier().get_monte_carlo()` method return risk, return and weights data for random portfolios.

Fix:

- Columns order is lost in `Portfolio().weights_ts`
- minor bugs

1.2.2

Version 1.2.2 will be the last Python 3.7 release. In further development we will use Python 3.8.

Updated:
- Update classes for new FOREX data format (AssetList, Portfolio and all ListMaker inherited classes are affected)

Fixed:
- compatible issues with `importlib-metadata` package

Page 1 of 6

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.