MCPcopy
hub / github.com/ranaroussi/quantstats / make_portfolio

Function make_portfolio

quantstats/utils.py:413–440  ·  view source on GitHub ↗

Calculates compounded value of portfolio

(returns, start_balance=1e5, mode="comp", round_to=None)

Source from the content-addressed store, hash-verified

411
412
413def make_portfolio(returns, start_balance=1e5, mode="comp", round_to=None):
414 """Calculates compounded value of portfolio"""
415 returns = _prepare_returns(returns)
416
417 if mode.lower() in ["cumsum", "sum"]:
418 p1 = start_balance + start_balance * returns.cumsum()
419 elif mode.lower() in ["compsum", "comp"]:
420 p1 = to_prices(returns, start_balance)
421 else:
422 # fixed amount every day
423 comp_rev = (start_balance + start_balance * returns.shift(1)).fillna(
424 start_balance
425 ) * returns
426 p1 = start_balance + comp_rev.cumsum()
427
428 # add day before with starting balance
429 p0 = _pd.Series(data=start_balance, index=p1.index + _pd.Timedelta(days=-1))[:1]
430
431 portfolio = _pd.concat([p0, p1])
432
433 if isinstance(returns, _pd.DataFrame):
434 portfolio.iloc[:1, :] = start_balance
435 portfolio.drop(columns=[0], inplace=True)
436
437 if round_to:
438 portfolio = _np.round(portfolio, round_to)
439
440 return portfolio
441
442
443def _flatten_dataframe(df, set_index=None):

Callers

nothing calls this directly

Calls 2

_prepare_returnsFunction · 0.85
to_pricesFunction · 0.85

Tested by

no test coverage detected