def buy_and_hold(self, qty=1., start_dt=None, end_dt=None, start_px=None, end_px=None):
        """Construct a portfolio which opens a position with size qty at start (or first data in pricer) and
        continues to the specified end date. It uses the end of day market prices defined by the pricer
        (or prices supplied)

        :param qty:
        :param start: datetime
        :param end: datetime
        :param which: which price series to use for inital trade px
        :param ret_cacls: portfolio return calculator
        :return: SingleAssetPortfolio
        """
        from tia.analysis.model.trd import TradeBlotter

        eod = self.pricer.get_eod_frame().close

        start_dt = start_dt and pd.to_datetime(start_dt) or eod.index[0]
        start_px = start_px or eod.asof(start_dt)
        end_dt = end_dt and pd.to_datetime(end_dt) or eod.index[-1]
        end_px = end_px or eod.asof(end_dt)

        pricer = self.pricer.trunace(start_dt, end_dt)
        blotter = TradeBlotter()
        blotter.ts = start_dt
        blotter.open(qty, start_px)
        blotter.ts = end_dt
        blotter.close(end_px)
        trds = blotter.trades
        return SingleAssetPortfolio(pricer, trds, ret_calc=self.ret_calc)