Esempio n. 1
0
 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)
Esempio n. 2
0
    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
Esempio n. 3
0
 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