def exit_market(self): Side.apply_sides(lambda side: self.engine.broker.cancel(0, side)) exit_side = Side.opposite_side(self.engine.pnl.position()) price = calc_price(self.engine.book.quote(exit_side), MMParams.liq_behind_exit) self.engine.broker.request(1, exit_side, price, self.engine.pnl.abs_position)
def take_pnl(self): if self.pos.position() == 0: return Decimal('0') exit_side = Side.opposite_side(self.position()) take_price = self.nbbo.side(Side.side(self.position())) take_order = Position(pos=self.pos.abs_position(), price=take_price, side=exit_side) take_pos = self.pos + take_order + take_order.fee_pos(self.fee) return take_pos.balance
def nbbo_pnl(self): exit_side = Side.opposite_side(self.position()) nbbo_price = self.nbbo.side(exit_side) return (self.pos + Position(pos=self.pos.abs_position(), price=nbbo_price, side=exit_side)).balance