def buy_and_hold_return(self): """Total return of buying and holding. !!! note: Does not take into account fees and slippage. For this, create a separate portfolio.""" returns = generic_nb.pct_change_nb(self.main_price.vbt.to_2d_array()) return self.wrapper.wrap(returns).vbt.returns.total()
def returns(self): """Portfolio return series.""" equity = self.equity.vbt.to_2d_array() returns = generic_nb.pct_change_nb(equity) init_capital = reshape_fns.to_1d(self.init_capital, raw=True) returns[0, :] = (equity[0, :] - init_capital) / init_capital return self.wrapper.wrap(returns)
def returns(self): """Portfolio return series.""" equity = self.equity.vbt.to_2d_array() returns = generic_nb.pct_change_nb(equity) init_capital = reshape_fns.to_1d(self.init_capital, raw=True) returns[0, :] = (equity[0, :] - init_capital ) / init_capital # initial capital is one tick before returns[np.isnan(returns)] = 0. # can happen if later price is unknown return self.wrapper.wrap(returns)