def METHOD_NAME(
        self, bid_propagated_rate, bid_original_rate,
        offer_propagated_rate, offer_original_rate,
        trade_rate_source):
    # pylint: disable=too-many-arguments
    demand_side_tax = (
        0 if bid_original_rate == 0 else 1 - bid_propagated_rate / bid_original_rate)
    supply_side_tax = (
        0 if offer_original_rate == 0 else offer_propagated_rate / offer_original_rate - 1)
    total_grid_fee_rate = demand_side_tax + supply_side_tax
    revenue = trade_rate_source / (1 + total_grid_fee_rate)
    grid_fee_rate = revenue * self.grid_fee_rate
    trade_price = revenue + revenue * supply_side_tax
    return revenue, grid_fee_rate, trade_price