@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
        """
    if cls.TIER_2_RATIO:
        broker_commission_rate = ((1 - cls.TIER_2_RATIO) * cls.
            BROKER_COMMISSION_RATE + cls.TIER_2_RATIO * cls.
            BROKER_COMMISSION_RATE_TIER_2)
    else:
        broker_commission_rate = cls.BROKER_COMMISSION_RATE
    broker_commissions = turnover * broker_commission_rate
    if nlvs is not None and cls.MIN_COMMISSION:
        broker_commissions = cls._enforce_min_commissions(broker_commissions,
            nlvs=nlvs)
    exchange_commissions = turnover * cls.EXCHANGE_FEE_RATE
    commissions = broker_commissions + exchange_commissions
    return commissions
