Investment portfolio analyzing & optimization tools
Project description
ATTENTION: Please update okama to
version 1.1.5 or higher to use the latest financial API (api.okama.io)
Okama
okama is a library with investment portfolio analyzing & optimization tools.CFA recommendations are used in quantitative finance.
okama goes with free «end of day» historical stock markets data and macroeconomic indicators through API.
…entities should not be multiplied without necessity
— William of Ockham (c.1287–1347)
Table of contents
– [Okama main features]
– [Financial data and macroeconomic indicators]
– [Installation]
– [Getting started]
– [Documentation]
– [RoadMap]
– [Contributing to okama]
– [Communication]
Okama main features
– Investment portfolio constrained Markowitz Mean-Variance Analysis (MVA) and optimization
– Rebalanced portfolio optimization with constraints (multi-period Efficient Frontier)
– Monte Carlo Simulations for financial assets and investment portfolios
– Popular risk metrics: VAR, CVaR, semi-deviation, variance and drawdowns
– Different financial ratios: Sharpe ratio, Sortino ratio, Diversification ratio
– Forecasting models according to normal and lognormal distribution
– Testing distribution on historical data
– Dividend yield and other dividend indicators for stocks
– Backtesting and comparing historical performance of broad range of assets and indexes in multiple currencies
– Methods to track the performance of index funds (ETF) and compare them with benchmarks
– Main macroeconomic indicators: inflation, central banks rates
– Matplotlib visualization scripts for the Efficient Frontier, Transition map and assets risk / return performance
Financial data and macroeconomic indicators
End of day historical data
– Stocks and ETF for main world markets
– Mutual funds
– Commodities
– Stock indexes
Currencies
– FX currencies
– Crypto currencies
– Central bank exchange rates
Macroeconomic indicators
– Inflation for many countries (USA, United Kingdom, European Union, Russia etc.)
– Central bank rates
Other historical data
– Real estate prices
– Top bank rates
Installation
pip install okama
The latest development version can be installed directly from GitHub:
pip install git+https://github.com/mbk-dev/okama@dev
Getting started
1.Compare several assets from different stock markets.Get USD-adjusted performance
import okama as ok x = ok.AssetList([‘SPY.US’, ‘BND.US’, ‘DBXD.XFRA’], ccy=’USD’) x # all examples are for Jupyter Notebook/iPython.
For raw Python interpreter use ‘print(x)’ instead.
Get the main parameters for the set:
x.describe()
Get the assets accumulated return, plot it and compare with the USD inflation:
x.wealth_indexes.plot()
2.Create a dividend stocks portfolio with base currency EUR
weights = [0.3, 0.2, 0.2, 0.2, 0.1] assets = [‘T.US’, ‘XOM.US’, ‘FRE.XETR’, ‘SNW.XETR’, ‘LKOH.MOEX’] pf = ok.Portfolio(assets, weights=weights, ccy=’EUR’) pf.table
Plot the dividend yield of the portfolio (adjusted to the base currency).
pf.dividend_yield.plot()
3.Draw an Efficient Frontier for 2 popular ETF: SPY and GLD
ls = [‘SPY.US’, ‘GLD.US’] curr = ‘USD’ last_date=’2020-10′ # Rebalancing periods is one year (default value) frontier = ok.EfficientFrontierReb(ls, last_date=last_date’, ccy=curr, reb_period=’year’) frontier.names
Get the Efficient Frontier points for rebalanced portfolios and plot the chart with the assets risk/CAGR points:
import matplotlib.pyplot as plt points = frontier.ef_points fig = plt.figure(figsize=(12,6)) fig.subplots_adjust(bottom=0.2, top=1.5) frontier.plot_assets(kind=’cagr’) # plots the assets points on the chart ax = plt.gca() ax.plot(points.Risk, points.CAGR)
4.
Get a Transition Map for allocations
ls = [‘SPY.US’, ‘GLD.US’, ‘BND.US’] map = ok.EfficientFrontier(ls, ccy=’USD’).plot_transition_map(cagr=False)
More examples are available in form of Jupyter Notebooks .
Documentation
The official documentation is hosted on readthedocs.org: https://okama.readthedocs.io/
RoadMap
The plan for okama is to add more functions that will be useful to investors and asset managers.
– Add Omega ratio to EfficientFrontier, EfficientFrontierReb and Portfolio classes.
– Add withdrawals as an attribute of Portfolio class.
– Add Black-Litterman asset allocation
– Accelerate optimization for multi-period Efficient Frontier: minimize_risk and maximize_risk methods of EfficientFrontierReb class.
– Make a single EfficientFrontier class for all optimizations: single-period or multu-period with rebalancing period as a parameter.
– Add different utility functions for optimizers: semi-deviation, VaR, CVaR, drawdowns etc.
– Add more functions based on suggestion of users.
Contributing to okama
Contributions are most welcome.Have a look at the Contribution Guide for more.
Feel free to ask questions on Discussuions .
As contributors and maintainers to this project, you are expected to abide by okama’ code of conduct.More information can be found at: Contributor Code of Conduct
Communication
For basic usage questions (e.g., “Is XXX currency supported by okama?”) and for sharing ideas please use GitHub Discussions .Russian language community is available at okama.io forums .
License
MIT
Project details
Release history [Release notifications](/help/#project-release-notifications) |
[RSS feed ](/rss/project/okama/releases.xml)
[Release notifications] |
[RSS feed]
Download files
Download the file for your platform.
If you’re not sure which to choose, learn more about installing packages .
Source Distribution
Built Distribution
[Close]
[Hashes] for okama-1.1.5.tar.gz
|Algorithm||Hash digest|
|SHA256|
|MD5|
|BLAKE2-256|
b1a946f7e450d6d251ea9cec7e2acf5f0740a36335d7378358bd6da9f3f91eef
0fc171491001b25eb86a0216bff3471c
fd285911a26acbbc05c9ba7117691f918c730cfccdfd4dd4ee06b92c7d4078d8
[Close]
[Hashes] for okama-1.1.5-py3-none-any.whl
|Algorithm||Hash digest|
|SHA256|
|MD5|
|BLAKE2-256|
05ecd5c5d73d5cc92377206f3a273d2e74668376d29c147f82a98cb565eba4ad
26522c700630d91c398e68741aa1a471
7e317c1c84438a85b3669ed2992581b1de3058f0f1bfdb91c6ea8b93ed5579df.