@classmethod
def get_commissions(cls, contract_values, turnover, nlvs=None):
    """
        Returns a DataFrame of commissions.


        Parameters
        ----------
        contract_values : DataFrame, required
            a DataFrame of contract values (price * multipler / price_magnifier)

        turnover : DataFrame of floats, required
            a DataFrame of turnover, expressing the percentage of account equity that
            is turning over

        nlvs : DataFrame of nlvs, optional
            a DataFrame of NLVs (account balance), which is used to calculate and
            enforce min commissions. NLVs should be expressed in the currency of the
            contract, which should also be the currency of the commission class. If
            not provided, min commissions won't be calculated or enforced.

        Returns
        -------
        DataFrame
            a DataFrame of commissions, expressed as percentages of account equity
        """
    taker_ratio = 1 - cls.MAKER_RATIO
    exchange_fee_per_share = (cls.EXCHANGE_FEE_PER_SHARE + cls.MAKER_RATIO *
        cls.MAKER_FEE_PER_SHARE + taker_ratio * cls.TAKER_FEE_PER_SHARE)
    if cls.TIER_2_RATIO:
        broker_commission_per_share = ((1 - cls.TIER_2_RATIO) * cls.
            BROKER_COMMISSION_PER_SHARE + cls.TIER_2_RATIO * cls.
            BROKER_COMMISSION_PER_SHARE_TIER_2)
    else:
        broker_commission_per_share = cls.BROKER_COMMISSION_PER_SHARE
    commission_per_share_with_fees = broker_commission_per_share * (1 + cls
        .COMMISSION_PERCENTAGE_FEE_RATE)
    broker_commission_rates = float(broker_commission_per_share
        ) / contract_values.where(contract_values != 0).abs()
    broker_commissions = broker_commission_rates * turnover
    if nlvs is not None and cls.MIN_COMMISSION:
        broker_commissions = cls._enforce_min_commissions(broker_commissions,
            nlvs=nlvs)
    share_based_exchange_fee_rates = (exchange_fee_per_share /
        contract_values.where(contract_values != 0).abs())
    share_based_exchange_fees = share_based_exchange_fee_rates * turnover
    value_based_fees = cls.PERCENTAGE_FEE_RATE * turnover
    commission_based_fees = (cls.COMMISSION_PERCENTAGE_FEE_RATE *
        broker_commissions)
    commissions = (broker_commissions + share_based_exchange_fees +
        value_based_fees + commission_based_fees)
    return commissions
