def from_dict(data, ctx):
        """
        Instantiate a new ClientPrice from a dict (generally from loading a
        JSON response). The data used to instantiate the ClientPrice is a
        shallow copy of the dict passed in, with any complex child types
        instantiated appropriately.
        """

        data = data.copy()

        if data.get('bids') is not None:
            data['bids'] = [
                ctx.pricing_common.PriceBucket.from_dict(d, ctx)
                for d in data.get('bids')
            ]

        if data.get('asks') is not None:
            data['asks'] = [
                ctx.pricing_common.PriceBucket.from_dict(d, ctx)
                for d in data.get('asks')
            ]

        if data.get('closeoutBid') is not None:
            data['closeoutBid'] = ctx.convert_decimal_number(
                data.get('closeoutBid')
            )

        if data.get('closeoutAsk') is not None:
            data['closeoutAsk'] = ctx.convert_decimal_number(
                data.get('closeoutAsk')
            )

        if data.get('quoteHomeConversionFactors') is not None:
            data['quoteHomeConversionFactors'] = \
                ctx.pricing.QuoteHomeConversionFactors.from_dict(
                    data['quoteHomeConversionFactors'], ctx
                )

        if data.get('unitsAvailable') is not None:
            data['unitsAvailable'] = \
                ctx.order.UnitsAvailable.from_dict(
                    data['unitsAvailable'], ctx
                )

        return ClientPrice(**data)
Instantiate a new ClientPrice from a dict (generally from loading a
        JSON response). The data used to instantiate the ClientPrice is a
        shallow copy of the dict passed in, with any complex child types
        instantiated appropriately.