code: def adjust_commission_cost_basis(self, asset, cost):
          
  
          if asset != self.asset:
              raise Exception('Updating a commission for a different asset?')
          if cost == 0.0:
              return
  
          # If we no longer hold this position, there is no cost basis to
          # adjust.
          if self.amount == 0:
              return
  
          # We treat cost basis as the share price where we have broken even.
          # For longs, commissions cause a relatively straight forward increase
          # in the cost basis.
          #
          # For shorts, you actually want to decrease the cost basis because you
          # break even and earn a profit when the share price decreases.
          #
          # Shorts are represented as having a negative `amount`.
          #
          # The multiplication and division by `amount` cancel out leaving the
          # cost_basis positive, while subtracting the commission.
  
          prev_cost = self.cost_basis * self.amount
          if isinstance(asset, Future):
              cost_to_use = cost / asset.price_multiplier
          else:
              cost_to_use = cost
          new_cost = prev_cost + cost_to_use
          self.cost_basis = new_cost / self.amount
docs: A note about cost-basis in zipline: all positions are considered
          to share a cost basis, even if they were executed in different
          transactions with different commission costs, different prices, etc.
  
          Due to limitations about how zipline handles positions, zipline will
          currently spread an externally-delivered commission charge across
          all shares in a position.