만기일시상환(萬期一時償還)
|
약정 기간 동안 대출 원금에 대한 상환 없이 이자만 부담하는 방식이다. | 전세자금대출 |
대출원금을 대출 만기일에 전부 상환하며, 대출기간 중에는 이자만 납부한다. 원리금 상환금액 부담은 가장 적으나, 대출원금이 줄어들지 않으므로 총 납부해야 하는 이자비용이 큰 편이다.
|
||
원리금균등상환
|
대출 원금과 이자를 합친 금액 즉 원리금을 만기일까지 균등하게 상환하는 대출 상환 방식이다.
|
휴대폰 단말기 할부금 상환 |
매달 내야 하는 납부금이 동일하기에 자금 관리 면에서 유리하다.
|
||
원금균등분할상환
|
대출한 돈을 일정 기간마다 대출 원금에 대해서는 매월 동일한 금액으로 상환하고 남은 대출 원금에 대한 이자를 상환하는 방식으로 즉 매달 갚아나가는 원금이 일정하고 이자가 변하는 상환 방식이다.
|
신용카드의 할부금 상환 |
남은 대출 원금에 대해서 이자 비용이 계산되어, 시간이 지날 수록 납입하는 이자 상환 금액이 점점 감소하게 되는 방식이다. 원금을 바로바로 상환하는 즉시분할상환 방식과 일정기간 동안 이자만 납부 한 후 원금을 천천히 갚아나가는 거치식 분할상환 방식이 있다. 원리금 상환에 비해 초기에 부담하는 비용은 높지만 총 이자금액 부분은 상대적으로 작기 때문에 많이 활용하고 있다. 화폐가 시간이 지나면 가치가 낮아지기 때문에 일반적으로 상환기간이 15년 이내이면 원금균등상환방식을 이용하는것이 좋으며 그 이상의 장기 대출적인 대출을 진행한다면 원리금 분할 상환방식을 활용하면 좋다.
|
||
거치식 상환
|
일정 기간 동안 원금은 갚지 않고 이자 비용만 내는 거치 기간을 설정하는 것을 의미한다.
|
|
만약 거치 기간이 종료한 후 원금 전액을 갚는 경우라면 만기일시상환과 완전히 동일하게 되므로 이 경우를 가리키는 경우는 없다. | ||
일반적으로 거치기간이 끝나고 나면 '원금균등분할상환' 또는 '원리금균등상환'으로 상환하게 된다. 즉, 이 두 상환 방식에 더해서 같이 사용될 수 있다. |
# mortgage.py
class 원금만기일시상환:
def __init__(self, 대출원금, 대출이율, 대출기간):
self.대출원금 = 대출원금
self.대출이율 = 대출이율 / 100
self.대출기간 = 대출기간
self.월평균이자 = round(self.대출원금 * (self.대출기간 * self.대출이율) / (self.대출기간 * 12), 0)
self.월상환금 = 0
self.월납입원금 = 0
self.월이자 = 0
self.월잔금 = self.대출원금
self.회차 = 0
self.납입원금누계 = 0
self.총이자 = 0
self.총상환금 = 0
def 상환(self):
if self.대출기간 * 12 > self.회차 >= 0:
self.회차 += 1
if self.회차 == self.대출기간 * 12:
self.월납입원금 = self.대출원금
self.월상환금 = self.월평균이자 + self.월납입원금
self.월이자 = self.월평균이자
self.납입원금누계 += self.월납입원금
self.월잔금 -= self.월납입원금
self.총이자 = self.월평균이자 * self.회차
self.총상환금 = self.대출원금 + self.총이자
else:
print("잘못된 입력")
class 원금균등상환(원금만기일시상환):
def __init__(self, 대출원금, 대출이율, 대출기간):
super().__init__(대출원금, 대출이율, 대출기간)
self.월납입원금 = self.대출원금 / (self.대출기간 * 12)
self.월평균이자 = 0
def 상환(self):
if self.대출기간 * 12 > self.회차 >= 0:
self.회차 += 1
self.월이자 = self.월잔금 * (self.대출이율 / 12)
self.월상환금 = self.월이자 + self.월납입원금
self.납입원금누계 += self.월납입원금
self.월잔금 -= self.월납입원금
self.총이자 += self.월이자
self.총상환금 += self.월상환금
self.월평균이자 = self.총이자 / self.회차
else:
print("잘못된 입력")
class 원리금균등상환(원금만기일시상환):
def __init__(self, 대출원금, 대출이율, 대출기간):
super().__init__(대출원금, 대출이율, 대출기간)
self.월평균이자 = 0
self.월상환금 = (
self.대출원금 * (self.대출이율 / 12) * (1 + (self.대출이율 / 12)) ** (self.대출기간 * 12)
) / ((1 + (self.대출이율 / 12)) ** (self.대출기간 * 12) - 1)
def 상환(self):
if self.대출기간 * 12 > self.회차 >= 0:
self.회차 += 1
self.월이자 = self.월잔금 * (self.대출이율 / 12)
self.월납입원금 = self.월상환금 - self.월이자
self.납입원금누계 += self.월납입원금
self.월잔금 -= self.월납입원금
self.총이자 += self.월이자
self.총상환금 += self.월상환금
self.월평균이자 = self.총이자 / self.회차
else:
print("잘못된 입력")
if __name__ == "__main__":
c = 원리금균등상환(10000000, 5, 5)
for i in range(60):
c.상환()
print(
f"{c.회차:2d} {c.월상환금:15.1f} {c.월납입원금:15.1f} {c.월이자:15.1f} {c.납입원금누계:15.1f} {c.월잔금:15.1f}"
)
print(c.월평균이자)
print(c.총이자)
print(c.총상환금)
'BASIC' 카테고리의 다른 글
명령 프롬프트에서 python 스크립트 파일 실행 (0) | 2024.12.22 |
---|---|
명령 프롬프트에서 파이썬 IDLE실행 (0) | 2024.12.22 |
주피터 노트북 (1) | 2023.11.30 |
모듈과 패키지 (0) | 2023.11.28 |
정규표현식 (0) | 2023.11.28 |
댓글