goo*_*orp 7 python algorithm math finance
如何计算贷款月租费?
鉴于:
这个问题与通常情况略有不同,因为目标不是在贷款期结束后支付贷款,而是还欠下一笔金额.我已经能够找到一个算法,所以如果我想支付全部金额,解决问题,但它当然不适用于这个目标是最终导致给定数量而不是没有任何东西的问题.
我设法通过猜测开始解决这个问题,然后继续改进猜测,直到它足够接近.然而,我想知道,如果有更好的方法来简单地计算这个,而不仅仅是猜测.
编辑:这是我现在正在做的事情.
def find_payment(start, end, months, interest):
difference = start
guess = int(start / months * interest)
while True:
total = start
for month in range(1, months + 1):
ascribe = total * interest / 12
total = total + ascribe - guess
difference = total - end
# See if the guess was good enough.
if abs(difference) > start * 0.001:
if difference < 0:
if abs(difference) < guess:
print "payment is %s" % guess
return evolution(start, guess, interest, months)
else:
mod = int(abs(difference) / start * guess)
if mod == 0:
mod = 1
guess -= mod
else:
mod = int(difference / start * guess)
if mod == 0:
mod = 1
guess += mod
else:
print "payment is %s" % guess
return evolution(start, guess, interest, months)
Run Code Online (Sandbox Code Playgroud)
进化只是一种功能,可以显示贷款的支付方式和利息利息,总计支付的利息总额等.
一个例子是,如果我想找出以10万美元开始并以5万美元的利息结束,利息为8%且持续时间为70个月的贷款的每月付款,
>>> find_payment(100000, 50000, 70, 0.08)
payment is 1363
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我最终会得到49935,并且我经历了5次循环.通过循环所需的次数取决于我想要达到数量的接近程度,并且它会有所不同.
JDu*_*ley 10
这基本上是抵押贷款还款计算.
假设开始大于结束,并且兴趣在0和1之间(即10%利息为0.1)
首先考虑您想要还清的部分付款.
Principal = start - end
Run Code Online (Sandbox Code Playgroud)
每月付款由下列人员给出:
pay_a = (interest / 12) / (1 - (1+interest/12) ^ (-months))) * Principal
Run Code Online (Sandbox Code Playgroud)
然后,您需要考虑额外的兴趣.这等于剩余的每月利息的主要时间
pay_b = interest / 12 * end
Run Code Online (Sandbox Code Playgroud)
所以总付款是
payment = (interest / 12) * (1 / (1 - (1+interest/12) ^ (-months))) * Principal + end)
Run Code Online (Sandbox Code Playgroud)
在你给出的例子上
Start: 100000
End: 50000
Months: 70
Interest: 8%
pay_a = 896.20
pay_b = 333.33
Payment = 1229.54
Run Code Online (Sandbox Code Playgroud)
当我在Excel中测试这些值时,在70次付款后,剩余贷款为50,000.这是假设您在每个月付款之前支付名义利息.