def execute_transaction(self, txn): # Update Position # ---------------- sid = txn.sid if sid not in self.positions: position = Position(sid) self.positions[sid] = position else: position = self.positions[sid] position.update(txn) if position.amount == 0: # if this position now has 0 shares, remove it from our internal # bookkeeping. del self.positions[sid] try: # if this position exists in our user-facing dictionary, # remove it as well. del self._positions_store[sid] except KeyError: pass self._update_asset(sid)
def execute_transaction(self, txn): # Update Position # ---------------- sid = txn.sid if sid not in self.positions: position = Position(sid) self.positions[sid] = position else: position = self.positions[sid] position.update(txn) if position.amount == 0: # if this position now has 0 shares, remove it from our internal # bookkeeping. del self.positions[sid] # GD FIXING ISSUE OF MIXING MULTIPLE MULTIPLIERS # FIXME TODO check that this is ok forever.. del self._position_value_multipliers[sid] del self._position_exposure_multipliers[sid] try: # if this position exists in our user-facing dictionary, # remove it as well. del self._positions_store[sid] except KeyError: pass else: self._update_asset(sid)
def execute_transaction(self, txn): # Update Position # ---------------- asset = txn.asset if asset not in self.positions: position = Position(asset) self.positions[asset] = position else: position = self.positions[asset] position.update(txn) if position.amount == 0: del self.positions[asset] try: # if this position exists in our user-facing dictionary, # remove it as well. del self._positions_store[asset] except KeyError: pass