W tym zadaniu zbudujesz prosty model spłaty kredytu hipotecznego.
Model będzie oparty na kredycie z równą miesięczną ratą (tzw. kredycie annuitetowym).
W modelu krok po kroku:
obliczysz miesięczną stopę procentową na podstawie rocznej,
wyznaczysz wysokość miesięcznej raty,
rozdzielisz ratę na część odsetkową i kapitałową,
policzysz saldo zadłużenia w każdym miesiącu.
Twoim pierwszym krokiem jest utworzenie nowego modelu.
W tym celu:
Otwórz powłokę Python.
Skorzystaj z poniższej komendy, aby utworzyć model o nazwie zadanie_3
:
from cashflower import create_model
create_model("zadanie_3")
W tej części przygotujesz dane wejściowe: parametry kredytu (czyli tzw. model point set).
W pliku input.py
zdefiniuj zbiór danych dla jednego kredytu. Nazwij go mortgage
.
Kredyt ma następujące parametry:
początkowa kwota kredytu: 100 000 zł (loan
),
roczna stopa procentowa: 10 % (yearly_interest_rate
),
okres kredytowania: 360 miesięcy (term
).
Uzupełnij poniższy szkielet kodu:
x# input.py
from cashflower import ModelPointSet
import pandas as pd
mortgage = ModelPointSet(data=pd.DataFrame({
"loan": [_____],
"yearly_interest_rate": [_____],
"term": [_____],
}))
Zadanie: Uzupełnij brakujące wartości zgodnie z opisanymi parametrami.
W tej części zbudujesz krok po kroku zmienne modelowe do obliczenia rat, odsetek i salda kredytu.
Na początku zaimportuj dane z pliku input.py
. Otwórz model.py
i uzupełnij import:
xxxxxxxxxx
# model.py
from input import _____
Zadanie: Uzupełnij nazwę zmiennej zawierającej dane kredytu.
Na podstawie rocznej stopy procentowej z model point setu oblicz miesięczną stopę procentową. Zmienna interest_rate()
nie zależy od czasu.
Uzupełnij kod:
xxxxxxxxxx
# model.py
from cashflower import variable
()
def interest_rate():
return mortgage.get("_____") / _____
Zadanie:
Wstaw nazwę atrybutu z roczną stopą procentową,
Podziel ją przez liczbę miesięcy w roku.
Oblicz miesięczną ratę kredytu payment()
na podstawie wzoru na annuitet:
gdzie
Pamiętaj:
L
to kwota kredytu,
j
to miesięczna stopa procentowa (interest_rate()
),
n
to liczba miesięcy (mortgage.get("term")
).
Rata jest płatna tylko przez okres trwania kredytu.
Uzupełnij kod:
xxxxxxxxxx
# model.py
()
def payment():
n = mortgage.get("_____")
if t == 0 or t > n:
return 0
else:
L = mortgage.get("_____")
j = interest_rate()
v = 1 / (1 + j)
return L / ((_____) / _____)
Zadanie:
Uzupełnij nazwy atrybutów loan
i term
,
Uzupełnij wzór: jaka wartość powinna znaleźć się w liczniku i w mianowniku?
Odsetki naliczane w miesiącu t
są równe saldu kredytu z poprzedniego miesiąca (balance(t-1)
- tej zmiennej jeszcze nie mamy) pomnożonemu przez miesięczną stopę procentową.
Dla t = 0
odsetki wynoszą 0 (jest to początek kredytu).
Uzupełnij kod funkcji:
xxxxxxxxxx
# model.py
()
def interest(t):
if t == 0:
return 0
return _____ * _____
Zadanie:
Uzupełnij wzór na odsetki.
Część raty, która spłaca kapitał (czyli zmniejsza saldo kredytu), to różnica między całkowitą ratą (payment
) częścią odsetkową (interest
).
Uzupełnij kod funkcji:
xxxxxxxxxx
# model.py
()
def principal(t):
return _____ - _____
Zadanie: Wstaw odpowiednie zmienne:
jedna to stała miesięczna rata,
druga to odsetki w miesiącu t
.
Zmienna balance(t)
określa saldo pozostałego długu w danym miesiącu:
dla t = 0
saldo równa się początkowemu kredytowi,
później maleje o spłacony kapitał.
xxxxxxxxxx
# model.py
()
def balance(t):
if t == 0:
return mortgage.get("_____")
return balance(t - 1) - principal(t)
Zadanie: Uzupełnij nazwę atrybutu określającego początkowy kredyt.