Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
100).round(2).astype(str) + '%'
yoy.index.name = 'Year'
tpl = tpl.replace('{{eoy_title}}', '<h3>EOY Returns</h3>')
tpl = tpl.replace('{{eoy_table}}', _html_table(yoy))
dd = _stats.to_drawdown_series(returns)
dd_info = _stats.drawdown_details(dd).sort_values(
by='max drawdown', ascending=True)[:10]
dd_info = dd_info[['start', 'end', 'max drawdown', 'days']]
dd_info.columns = ['Started', 'Recovered', 'Drawdown', 'Days']
tpl = tpl.replace('{{dd_info}}', _html_table(dd_info, False))
# plots
figfile = _utils._file_stream()
_plots.returns(returns, benchmark, grayscale=grayscale,
figsize=(8, 5), subtitle=False,
savefig={'fname': figfile, 'format': 'svg'},
show=False, ylabel=False, cumulative=compounded)
tpl = tpl.replace('{{returns}}', figfile.getvalue().decode())
figfile = _utils._file_stream()
_plots.log_returns(returns, benchmark, grayscale=grayscale,
figsize=(8, 4), subtitle=False,
savefig={'fname': figfile, 'format': 'svg'},
show=False, ylabel=False, cumulative=compounded)
tpl = tpl.replace('{{log_returns}}', figfile.getvalue().decode())
if benchmark is not None:
figfile = _utils._file_stream()
_plots.returns(returns, benchmark, match_volatility=True,
grayscale=grayscale, figsize=(8, 4), subtitle=False,
figsize=(figsize[0], figsize[0]*.5),
show=True, ylabel=False,
compounded=compounded)
return
_plots.returns(returns, benchmark, grayscale=grayscale,
figsize=(figsize[0], figsize[0]*.6),
show=True, ylabel=False)
_plots.log_returns(returns, benchmark, grayscale=grayscale,
figsize=(figsize[0], figsize[0]*.5),
show=True, ylabel=False)
if benchmark is not None:
_plots.returns(returns, benchmark, match_volatility=True,
grayscale=grayscale,
figsize=(figsize[0], figsize[0]*.5),
show=True, ylabel=False)
_plots.yearly_returns(returns, benchmark,
grayscale=grayscale,
figsize=(figsize[0], figsize[0]*.5),
show=True, ylabel=False)
_plots.histogram(returns, grayscale=grayscale,
figsize=(figsize[0], figsize[0]*.5),
show=True, ylabel=False)
_plots.daily_returns(returns, grayscale=grayscale,
figsize=(figsize[0], figsize[0]*.3),
show=True, ylabel=False)
def plots(returns, benchmark=None, grayscale=False,
figsize=(8, 5), mode='basic', compounded=True):
if mode.lower() != 'full':
_plots.snapshot(returns, grayscale=grayscale,
figsize=(figsize[0], figsize[0]),
show=True, mode=("comp" if compounded else "sum"))
_plots.monthly_heatmap(returns, grayscale=grayscale,
figsize=(figsize[0], figsize[0]*.5),
show=True, ylabel=False,
compounded=compounded)
return
_plots.returns(returns, benchmark, grayscale=grayscale,
figsize=(figsize[0], figsize[0]*.6),
show=True, ylabel=False)
_plots.log_returns(returns, benchmark, grayscale=grayscale,
figsize=(figsize[0], figsize[0]*.5),
show=True, ylabel=False)
if benchmark is not None:
_plots.returns(returns, benchmark, match_volatility=True,
grayscale=grayscale,
figsize=(figsize[0], figsize[0]*.5),
show=True, ylabel=False)
_plots.yearly_returns(returns, benchmark,
grayscale=grayscale,
figsize=(figsize[0], figsize[0]*.5),
_po.r2 = stats.r2
_po.information_ratio = stats.information_ratio
_po.greeks = stats.greeks
_po.rolling_greeks = stats.rolling_greeks
_po.compare = stats.compare
# plotting methods
_po.plot_snapshot = plots.snapshot
_po.plot_earnings = plots.earnings
_po.plot_daily_returns = plots.daily_returns
_po.plot_distribution = plots.distribution
_po.plot_drawdown = plots.drawdown
_po.plot_drawdowns_periods = plots.drawdowns_periods
_po.plot_histogram = plots.histogram
_po.plot_log_returns = plots.log_returns
_po.plot_returns = plots.returns
_po.plot_rolling_beta = plots.rolling_beta
_po.plot_rolling_sharpe = plots.rolling_sharpe
_po.plot_rolling_sortino = plots.rolling_sortino
_po.plot_rolling_volatility = plots.rolling_volatility
_po.plot_yearly_returns = plots.yearly_returns
_po.plot_monthly_heatmap = plots.monthly_heatmap
_po.metrics = reports.metrics
# extend_pandas()
_plots.returns(returns, benchmark, grayscale=grayscale,
figsize=(8, 5), subtitle=False,
savefig={'fname': figfile, 'format': 'svg'},
show=False, ylabel=False, cumulative=compounded)
tpl = tpl.replace('{{returns}}', figfile.getvalue().decode())
figfile = _utils._file_stream()
_plots.log_returns(returns, benchmark, grayscale=grayscale,
figsize=(8, 4), subtitle=False,
savefig={'fname': figfile, 'format': 'svg'},
show=False, ylabel=False, cumulative=compounded)
tpl = tpl.replace('{{log_returns}}', figfile.getvalue().decode())
if benchmark is not None:
figfile = _utils._file_stream()
_plots.returns(returns, benchmark, match_volatility=True,
grayscale=grayscale, figsize=(8, 4), subtitle=False,
savefig={'fname': figfile, 'format': 'svg'},
show=False, ylabel=False, cumulative=compounded)
tpl = tpl.replace('{{vol_returns}}', figfile.getvalue().decode())
figfile = _utils._file_stream()
_plots.yearly_returns(returns, benchmark, grayscale=grayscale,
figsize=(8, 4), subtitle=False,
savefig={'fname': figfile, 'format': 'svg'},
show=False, ylabel=False, compounded=compounded)
tpl = tpl.replace('{{eoy_returns}}', figfile.getvalue().decode())
figfile = _utils._file_stream()
_plots.histogram(returns, grayscale=grayscale,
figsize=(8, 4), subtitle=False,
savefig={'fname': figfile, 'format': 'svg'},