def d_price_d_rate(crv):
    """First derivative of each node in a discount curve to it's discount rates.

    The crv holds zero coupon bond prices in the form: z_i = exp(-r_i * ttm_i)
    """
    return -1 * crv.sched_maturity * crv.discount_factor(crv.sched_maturity)
