复利计算器 - 可变存款频率、存款金额和每日浮动利率

时间:2021-02-08 00:06:40

标签: python spyder calculator finance

我正在尝试构建一个计算复利的计算器,但有一些怪癖。具体来说: a) 我希望每个月的存款金额在正态分布内变化,直到投资结束 b) 我希望利率在每天的正态分布内变化,直到投资结束

我从基础开始:

    # -*- coding: utf-8 -*-
    """
    Spyder Editor

    This is a temporary script file.
    """
    import numpy as np
    from tabulate import tabulate
    tabulate.PRESERVE_WHITESPACE = True
    year = 1
    Principal = 1050
    Prev_Principal = 0
    n = 365
    Total_New = 0
    FV_prev = 0
    
    for year in range(1,5):
        RoR = 0.01*np.random.normal(7.43,4.172,1)
        PMT = np.random.normal(575,85.39,1)
        FV = PMT*(12/n)*((1+(RoR/n))**(n*year)-1)/(RoR/n)
        Total = FV + Principal*(1+(RoR/n))**(n*year)
        Total_New  = Total - Total_New
        Net_Gain = Total - (year*12*PMT+Principal)
        print(tabulate([["YEAR","FV","TOTAL","CI", "R%"],[year,np.round(FV,1),np.round(Total,1),np.round(Net_Gain,1),np.round(100*RoR,1)]], headers="firstrow", tablefmt='fancy_grid'))

这个基本版本只输出年末的总和,包括利息和逐年净利息。不幸的是,虽然它会改变利率,但它每年只改变一次。我计划执行以下操作,但是我不确定它在编程和数学方面是否正确。所以我想拿这些:

        FV = PMT*(12/n)*((1+(RoR/n))-1)/(RoR/n)
        Total = FV + Principal*(1+(RoR/n))**(n*year)

并使用 RoR_Array = 0.01*np.random.normal(7.43,4.172, 365) math.prod((1+RoR_Array/365))

使用 RoR_Array,我基本上是在尝试创建一个具有 365 个元素的一维光线,一个代表一年中的每一天,代表每日利率。 使用 'math prod' 我试图克服以下问题: 如果 n=365,则意味着该年的利息是固定的,并且每天复利

    Total = FV + Principal*(1+(RoR/365))**(365*1)

但既然我想要一个可变的每日 RoR,那么最好的方法是什么? 这就是为什么我使用 math.prod。

0 个答案:

没有答案