Проценты по кредитной карте

Запустить в Google Colab Посмотреть исходный код на GitHub

Давайте представим, что вы хотели бы оценить процентную ставку по вашей кредитной карте через год. Предположим, что текущая основная ставка составляет 2%, а компания-эмитент вашей кредитной карты взимает с вас 10% плюс премьер. Учитывая силу нынешней экономики, вы полагаете, что Федеральная резервная система скорее поднимет процентные ставки, чем нет. ФРС соберется восемь раз в течение следующих двенадцати месяцев и либо поднимет ставку по федеральным фондам на 0,25%, либо оставит ее на прежнем уровне.

Мы используем биномиальное распределение для моделирования процентной ставки вашей кредитной карты в конце двенадцатимесячного периода. В частности, мы будем использовать класс биномиального распределения вероятностей TensorFlow со следующими параметрами: total_count = 8 (количество испытаний или встреч), пробы = {.6, .7, .8, .9} для нашего диапазона оценок примерно вероятность того, что ФРС поднимет ставку по федеральным фондам на 0,25% на каждом заседании.

Зависимости и предпосылки

Настройки установки вероятности TensorFlow

Импорт и глобальные переменные (обязательно запустите эту ячейку)

Вычисление вероятностей

Рассчитайте вероятности возможных процентных ставок по кредитной карте через 12 месяцев.

# First we encode our assumptions.
num_times_fed_meets_per_year = 8.
possible_fed_increases = tf.range(
    start=0.,
    limit=num_times_fed_meets_per_year + 1)
possible_cc_interest_rates = 2. + 10. + 0.25 * possible_fed_increases 
prob_fed_raises_rates = tf.constant([0.6, 0.7, 0.8, 0.9])  # Wild guesses.

# Now we use TFP to compute probabilities in a vectorized manner.
# Pad a dim so we broadcast fed probs against CC interest rates.
prob_fed_raises_rates = prob_fed_raises_rates[..., tf.newaxis]
prob_cc_interest_rate = tfd.Binomial(
    total_count=num_times_fed_meets_per_year,
    probs=prob_fed_raises_rates).prob(possible_fed_increases)

Выполнить код TF

# Convert from TF to numpy.
[
    possible_cc_interest_rates_,
    prob_cc_interest_rate_,
    prob_fed_raises_rates_,
] = evaluate([
    possible_cc_interest_rates,
    prob_cc_interest_rate,
    prob_fed_raises_rates,
])

Визуализация результатов

plt.figure(figsize=(14, 9))
for i, pf in enumerate(prob_fed_raises_rates_):
  plt.subplot(2, 2, i+1)
  plt.bar(possible_cc_interest_rates_,
          prob_cc_interest_rate_[i],
          color=TFColor[i],
          width=0.23,
          label="$p = {:.1f}$".format(pf[0]),
          alpha=0.6,
          edgecolor=TFColor[i],
          lw="3")
  plt.xticks(possible_cc_interest_rates_ + 0.125, possible_cc_interest_rates_)
  plt.xlim(12, 14.25)
  plt.ylim(0, 0.5)
  plt.ylabel("Probability of cc interest rate")
  plt.xlabel("Credit card interest rate (%)")
  plt.title("Credit card interest rates: "
            "prob_fed_raises_rates = {:.1f}".format(pf[0]));
  plt.suptitle("Estimates of credit card interest rates in 12 months.",
               fontsize="x-large",
               y=1.02)
  plt.tight_layout()

png