def METHOD_NAME(
    self, original_position_no_override: int, proposed_trade: Order
) -> Order:
    """
    Apply an override to a position
    :param original_position_no_override: int
    :param proposed_trade: a trade object, with attr 'trade'
    :return: a trade object, with new attr 'trade'
    """
    override_value = self.override_value
    if self.is_float_like():
        override_as_float = self.as_float()
        new_trade = _apply_float_override(
            override_as_float, original_position_no_override, proposed_trade
        )
    elif override_value is override_reduce_only:
        new_trade = _apply_reduce_only(
            original_position_no_override, proposed_trade
        )
    elif override_value is override_no_trading:
        new_trade = _apply_no_trading(proposed_trade)
    else:
        raise Exception(
            "Override is %s don't know what to do!" % str(self._override)
        )
    return new_trade