• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python numpy.pmt函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中numpy.pmt函数的典型用法代码示例。如果您正苦于以下问题:Python pmt函数的具体用法?Python pmt怎么用?Python pmt使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了pmt函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: test_pmt

 def test_pmt(self):
     res = np.pmt(0.08 / 12, 5 * 12, 15000)
     tgt = -304.145914
     assert_allclose(res, tgt)
     # Test the edge case where rate == 0.0
     res = np.pmt(0.0, 5 * 12, 15000)
     tgt = -250.0
     assert_allclose(res, tgt)
     # Test the case where we use broadcast and
     # the arguments passed in are arrays.
     res = np.pmt([[0.0, 0.8], [0.3, 0.8]], [12, 3], [2000, 20000])
     tgt = np.array([[-166.66667, -19311.258], [-626.90814, -19311.258]])
     assert_allclose(res, tgt)
开发者ID:Horta,项目名称:numpy,代码行数:13,代码来源:test_financial.py


示例2: __init__

 def __init__(self, loan_id, grade, int_rate, term, amount, issue_date, 
              last_date, defaults, investment, total_payment, total_principle, recoveries):
     self.id = loan_id
     self.grade = grade
     self.int_rate = int_rate
     self.term = int(term.strip().split(' ')[0])
     self.amount = amount
     self.initial_amount = self.amount
     
     self.issue_date = issue_date
     self.last_date = last_date
     self.investment = investment
     self.defaults = defaults
     self.total_payment = total_payment
     self.total_principle = total_principle
     self.recoveries = recoveries
     self.imbalance_ratio = np.nan
     
     
     self.term_realized = self.last_date - self.issue_date
     if self.defaults:
         # warnings.warn('have not yet implemented defaulting loans')
         self.amount = self.total_payment
         
     
     self.installment = np.round(-np.pmt(self.int_rate / 12, self.term_realized, self.amount), 2)
     self.remaining_term = self.term_realized
     
     self.scale = (self.investment / self.initial_amount)
     
     self.imbalance = 0
     self.complete = False
     self.fee = 0.01
开发者ID:buffalohird,项目名称:lending_club,代码行数:33,代码来源:loan.py


示例3: add_current_rents

def add_current_rents(dataset,buildings,year,rent=0,convert_res_rent_to_yearly=0,convert_res_sales_to_yearly=0):
  buildings['nonres_rent'] = dataset.load_attr('nonresidential_rent',year)
  if not rent: 
    buildings['res_rent'] = dataset.load_attr('residential_sales_price',year)
    if convert_res_sales_to_yearly: buildings.res_rent = np.pmt(developer.INTERESTRATE,developer.PERIODS,buildings.res_rent)*-1
  else: buildings['res_rent'] = dataset.load_attr('residential_rent',year)*(12 if convert_res_rent_to_yearly else 1)
  buildings['rent'] = buildings['nonres_rent'].combine_first(buildings['res_rent'])
  return buildings
开发者ID:cktong,项目名称:bayarea,代码行数:8,代码来源:variables.py


示例4: levelize_costs

 def levelize_costs(self):
     if hasattr(self, 'is_levelized'):
         inflation = float(cfg.cfgfile.get('case', 'inflation_rate'))
         rate = self.cost_of_capital - inflation
         if self.is_levelized == 0:
             self.values_level = - np.pmt(rate, self.book_life, 1, 0, 'end') * self.values
             util.convert_age(self, vintages=self.vintages, years=self.years, attr_from='values_level', attr_to='values_level', reverse=False)
         else:
             self.values_level = self.values.copy()
             util.convert_age(self, vintages=self.vintages, years=self.years, attr_from='values_level', attr_to='values_level', reverse=False)
             self.values = np.pv(rate, self.book_life, -1, 0, 'end') * self.values
     else:
         raise ValueError('Supply Technology id %s needs to indicate whether costs are levelized ' %self.id)
开发者ID:anamileva,项目名称:energyPATHWAYS,代码行数:13,代码来源:supply_technologies.py


示例5: levelize_costs

 def levelize_costs(self):
     if hasattr(self, 'is_levelized'):
         inflation = float(cfg.cfgfile.get('case', 'inflation_rate'))
         rate = self.cost_of_capital - inflation
         if self.is_levelized == 0:
             self.values_level = - np.pmt(rate, self.book_life, 1, 0, 'end') * self.values
             util.convert_age(self, vintages=self.vintages, years=self.years, attr_from='values_level', attr_to='values_level', reverse=False)
         else:
             self.values_level = self.values.copy()
             util.convert_age(self, vintages=self.vintages, years=self.years, attr_from='values_level', attr_to='values_level', reverse=False)
             self.values = np.pv(rate, self.book_life, -1, 0, 'end') * self.values
     else:
         util.convert_age(self, vintages=self.vintages, years=self.years, reverse=False)
开发者ID:tuberculo,项目名称:energyPATHWAYS,代码行数:13,代码来源:supply_technologies.py


示例6: test_pmt_decimal

    def test_pmt_decimal(self):
        res = np.pmt(Decimal('0.08') / Decimal('12'), 5 * 12, 15000)
        tgt = Decimal('-304.1459143262052370338701494')
        assert_equal(res, tgt)
        # Test the edge case where rate == 0.0
        res = np.pmt(Decimal('0'), Decimal('60'), Decimal('15000'))
        tgt = -250
        assert_equal(res, tgt)
        # Test the case where we use broadcast and
        # the arguments passed in are arrays.
        res = np.pmt([[Decimal('0'), Decimal('0.8')], [Decimal('0.3'), Decimal('0.8')]],
                     [Decimal('12'), Decimal('3')], [Decimal('2000'), Decimal('20000')])
        tgt = np.array([[Decimal('-166.6666666666666666666666667'), Decimal('-19311.25827814569536423841060')],
                        [Decimal('-626.9081401700757748402586600'), Decimal('-19311.25827814569536423841060')]])

        # Cannot use the `assert_allclose` because it uses isfinite under the covers
        # which does not support the Decimal type
        # See issue: https://github.com/numpy/numpy/issues/9954
        assert_equal(res[0][0], tgt[0][0])
        assert_equal(res[0][1], tgt[0][1])
        assert_equal(res[1][0], tgt[1][0])
        assert_equal(res[1][1], tgt[1][1])
开发者ID:Horta,项目名称:numpy,代码行数:22,代码来源:test_financial.py


示例7: get_possible_rents_by_use

def get_possible_rents_by_use(dset):
  parcels = dset.parcels 
  # need a prevailing rent for each parcel
  nodeavgrents = pd.read_csv('avenodeprice.csv',index_col='node_id')
  # convert from price per sqft to yearly rent per sqft
  nodeavgrents['rent'] = np.pmt(spotproforma.INTERESTRATE,spotproforma.PERIODS,nodeavgrents.price*-1)

  # need predictions of rents for each parcel
  avgrents = pd.DataFrame(index=parcels.index)
  avgrents['residential'] = nodeavgrents.rent.ix[parcels._node_id].values
  # make a stupid assumption converting the residential 
  # rent which I have to non-residential rent which I don't have
  avgrents['office'] = nodeavgrents.rent.ix[parcels._node_id].values*1.0
  avgrents['retail'] = nodeavgrents.rent.ix[parcels._node_id].values*.8
  avgrents['industrial'] = nodeavgrents.rent.ix[parcels._node_id].values*.5
  return avgrents
开发者ID:apdjustino,项目名称:DRCOG_Urbansim,代码行数:16,代码来源:feasibility.py


示例8: actual_monthly

 def actual_monthly(self):
     """User actually paid monthly money for the car."""
     actual_monthly = numpy.pmt(
         self.loan_at / 12,
         self.total_months,
         -self.finance_value,
         self.loan_at_end
     )
     logger.info('numpy.pmt({},{},{},{})={}'.format(
         self.loan_at / 12,
         self.total_months,
         -self.finance_value,
         self.loan_at_end,
         actual_monthly
     ))
     return round(actual_monthly, 2)
开发者ID:victorliun,项目名称:pace_insight_car,代码行数:16,代码来源:financial_options.py


示例9: main

def main():
    """Module retirement"""
    if not len(sys.argv) == 2:
        print('usage: {} rate'.format(sys.argv[0]))
        sys.exit(1)
    rate = float(sys.argv[1])/12/100
    startdate = 2004 + 10./12
    today = 2015 + 5./12
    amount = 222000
    retirementdate = 1981 + 60 + 10./12
    endend = 1981 + 10./12 + 100
    inflation = 2./100./12. + 1
    spending = 40000

    contribution = np.pmt(rate, int(round((today - startdate) * 12)), 0, amount)

    print('contribution {}'.format(contribution))

    cur_time = today
    while cur_time < retirementdate:
        cur_time += 1./12
        interest = amount * rate
        amount += -contribution + interest
        contribution *= inflation
        spending *= inflation

    print('retire contribution {} amount {} spending {}'
          .format(contribution, amount, spending))

    while cur_time < endend and amount > 0:
        cur_time += 1./12
        interest = amount * rate
        amount += interest
        amount -= spending / 12.
        spending *= inflation

    print('end time {} spending {} amount {}'.format(cur_time, spending, amount))
    print('')
开发者ID:jpursell,项目名称:junk,代码行数:38,代码来源:retirement.py


示例10: walk_forward_projection

def walk_forward_projection(principal, annual_rate, months=None, payment=1200):
    """
    :param payment:
    :param principal: positive value
    :param months: compounding periods (can be weeks)
    :param annual_rate: matches compounding periods (can be weekly rate)
    :return:
    """
    loan_table = pd.DataFrame(columns=('payment', 'interest_segment', 'principal_segment', 'balance'))
    annual_rate /= 12  # Make the rate a monthly rate.

    # Initialise Table
    loan_table.loc[0] = [0, 0, 0, principal]

    # Handles pay by amount
    if months is not None:
        payment = -np.pmt(annual_rate, months, principal)  # Handles pay by amount

    time_step = 1
    balance = principal

    while not (balance <= 0 or time_step > 100):
        fraction_interest = balance * annual_rate

        if balance > payment:
            balance = round(balance + fraction_interest - payment, 2)
        else:
            payment = balance
            balance = 0

        fractional_principal = payment - fraction_interest

        loan_table.loc[time_step] = [payment, fraction_interest, fractional_principal, balance]
        time_step += 1

    return loan_table
开发者ID:shabscan,项目名称:debtfree,代码行数:36,代码来源:simulator.py


示例11: test_when

    def test_when(self):
        # begin
        assert_almost_equal(np.rate(10, 20, -3500, 10000, 1), np.rate(10, 20, -3500, 10000, "begin"), 4)
        # end
        assert_almost_equal(np.rate(10, 20, -3500, 10000), np.rate(10, 20, -3500, 10000, "end"), 4)
        assert_almost_equal(np.rate(10, 20, -3500, 10000, 0), np.rate(10, 20, -3500, 10000, "end"), 4)

        # begin
        assert_almost_equal(np.pv(0.07, 20, 12000, 0, 1), np.pv(0.07, 20, 12000, 0, "begin"), 2)
        # end
        assert_almost_equal(np.pv(0.07, 20, 12000, 0), np.pv(0.07, 20, 12000, 0, "end"), 2)
        assert_almost_equal(np.pv(0.07, 20, 12000, 0, 0), np.pv(0.07, 20, 12000, 0, "end"), 2)

        # begin
        assert_almost_equal(np.fv(0.075, 20, -2000, 0, 1), np.fv(0.075, 20, -2000, 0, "begin"), 4)
        # end
        assert_almost_equal(np.fv(0.075, 20, -2000, 0), np.fv(0.075, 20, -2000, 0, "end"), 4)
        assert_almost_equal(np.fv(0.075, 20, -2000, 0, 0), np.fv(0.075, 20, -2000, 0, "end"), 4)

        # begin
        assert_almost_equal(np.pmt(0.08 / 12, 5 * 12, 15000.0, 0, 1), np.pmt(0.08 / 12, 5 * 12, 15000.0, 0, "begin"), 4)
        # end
        assert_almost_equal(np.pmt(0.08 / 12, 5 * 12, 15000.0, 0), np.pmt(0.08 / 12, 5 * 12, 15000.0, 0, "end"), 4)
        assert_almost_equal(np.pmt(0.08 / 12, 5 * 12, 15000.0, 0, 0), np.pmt(0.08 / 12, 5 * 12, 15000.0, 0, "end"), 4)

        # begin
        assert_almost_equal(np.ppmt(0.1 / 12, 1, 60, 55000, 0, 1), np.ppmt(0.1 / 12, 1, 60, 55000, 0, "begin"), 4)
        # end
        assert_almost_equal(np.ppmt(0.1 / 12, 1, 60, 55000, 0), np.ppmt(0.1 / 12, 1, 60, 55000, 0, "end"), 4)
        assert_almost_equal(np.ppmt(0.1 / 12, 1, 60, 55000, 0, 0), np.ppmt(0.1 / 12, 1, 60, 55000, 0, "end"), 4)

        # begin
        assert_almost_equal(np.ipmt(0.1 / 12, 1, 24, 2000, 0, 1), np.ipmt(0.1 / 12, 1, 24, 2000, 0, "begin"), 4)
        # end
        assert_almost_equal(np.ipmt(0.1 / 12, 1, 24, 2000, 0), np.ipmt(0.1 / 12, 1, 24, 2000, 0, "end"), 4)
        assert_almost_equal(np.ipmt(0.1 / 12, 1, 24, 2000, 0, 0), np.ipmt(0.1 / 12, 1, 24, 2000, 0, "end"), 4)

        # begin
        assert_almost_equal(np.nper(0.075, -2000, 0, 100000.0, 1), np.nper(0.075, -2000, 0, 100000.0, "begin"), 4)
        # end
        assert_almost_equal(np.nper(0.075, -2000, 0, 100000.0), np.nper(0.075, -2000, 0, 100000.0, "end"), 4)
        assert_almost_equal(np.nper(0.075, -2000, 0, 100000.0, 0), np.nper(0.075, -2000, 0, 100000.0, "end"), 4)
开发者ID:Xatpy,项目名称:echomesh,代码行数:42,代码来源:test_financial.py


示例12:

#fv函数参数为利率,参数,每期支付金额,现值
print "Future value",np.fv(0.03/4, 5*4,-10,1000)
print u"现值"
#pv函数参数为利率,参数,每期支付金额,终值
print "Present value",np.pv(0.03/4,5*4,-10,1376.09633204)
#npv参数为利率和一个表示现金流的数组.
cashflows = np.random.randint(100,size=5)
cashflows = np.insert(cashflows,0,-100)
print "Cashflows",cashflows
print "Net present value",np.npv(0.03,cashflows)
print u"内部收益率"
print "Internal rate of return",np.irr([-100, 38, 48,90 ,17,36])

print u"分期付款"
#pmt输入为利率和期数,总价,输出每期钱数
print "Payment",np.pmt(0.10/12,12*30,100000)
#nper参数为贷款利率,固定的月供和贷款额,输出付款期数
print "Number of payments", np.nper(0.10/12,-100,9000)
#rate参数为付款期数,每期付款资金,现值和终值计算利率
print "Interest rate",12*np.rate(167,-100,9000,0)

print u"窗函数"
#bartlett函数可以计算巴特利特窗
window = np.bartlett(42)
print "bartlett",window
#blackman函数返回布莱克曼窗。该函数唯一的参数为输出点的数量。如果数量
#为0或小于0,则返回一个空数组。
window = np.blackman(10)
print "blackman",window
# hamming函数返回汉明窗。该函数唯一的参数为输出点的数量。如果数量为0或
# 小于0,则返回一个空数组。
开发者ID:moonlmq,项目名称:Tools,代码行数:31,代码来源:Learn_TypicalFunction.py


示例13: range

import pandas as pd
import numpy as np
import Tkinter

original_balance = 250000
term_month = 360
yr_int_rate = 0.05

remain_term_in_month = term_month
current_balance = original_balance
payment = -np.pmt(yr_int_rate / 12, term_month, original_balance)

month_prepay = 0.01
lgd = 0.4
month_drawdown_rate = 0.01

# part 1: prep for 0 to 75 months
cum_pd = pd.read_excel(r'C:\Users\shm\Downloads\Effective Maturity Tables & Lifetime EL Calculation.xlsx', sheetname = 'cum_pd')
cum_pd.columns = [x.lower() for x in cum_pd.columns]
cum_pd['month_i'] = range(3, (cum_pd.shape[0] + 1)* 3, 3)

row0 = pd.DataFrame([0, 0]).T
row0.columns = cum_pd.columns
cum_pd = pd.concat([row0, cum_pd], axis = 0)

cum_pd['month_incr'] = cum_pd.cumulative_pd.diff().fillna(0) / 3

# from 78 to 360
cum_after = pd.DataFrame(columns = cum_pd.columns)
cum_after['month_i'] = np.arange(cum_pd['month_i'].max() + 3, term_month + 3, 3)
cum_after['month_incr'] = cum_pd.month_incr.values[-1]
开发者ID:songhuiming,项目名称:git_it,代码行数:31,代码来源:maturity_lifetime_el_calc_engine_v1.py


示例14:

import numpy as np

np.pmt(0.075 / 12, 12 * 15, 200000)
开发者ID:yzozulya,项目名称:numpy_test_examples,代码行数:3,代码来源:numpy.pmt.py


示例15: taxEquityFlip

        def taxEquityFlip(PPARateSixYearsTE, discRate, totalCost, allYearGenerationMWh, distAdderDirect, loanYears, firstYearLandLeaseCosts, firstYearOPMainCosts, firstYearInsuranceCosts, numberPanels):
            # Output Tax Equity Flip [C]
            coopInvestmentTaxEquity = -totalCost * (1 - 0.53)
            # Output Tax Equity Flip [D]
            financeCostCashTaxEquity = 0
            # Output Tax Equity Flip [E]
            cashToSPEOForPPATE = []
            # Output Tax Equity Flip [F]
            derivedCostEnergyTE = 0
            # Output Tax Equity Flip [G]
            OMInsuranceETCTE = []
            # Output Tax Equity Flip [H]
            cashFromSPEToBlockerTE = []
            # Output Tax Equity Flip [I]
            cashFromBlockerTE = 0
            # Output Tax Equity Flip [J]
            distAdderTaxEquity = distAdderDirect
            # Output Tax Equity Flip [K]
            netCoopPaymentsTaxEquity = []
            # Output Tax Equity Flip [L]
            costToCustomerTaxEquity = []
            # Output Tax Equity Flip [L64]
            NPVLoanTaxEquity = 0
            # Output Tax Equity Flip [F72]
            Rate_Levelized_Equity = 0

            # Tax Equity Flip Formulas
            # Output Tax Equity Flip [D]
            # TEI Calcs [E]
            financeCostOfCashTE = 0
            coopFinanceRateTE = 2.7 / 100
            if (coopFinanceRateTE == 0):
                financeCostOfCashTE = 0
            else:
                payment = pmt(
                    coopFinanceRateTE, loanYears, -coopInvestmentTaxEquity)
            financeCostCashTaxEquity = payment

            # Output Tax Equity Flip [E]
            SPERevenueTE = []
            for i in range(1, len(allYearGenerationMWh) + 1):
                SPERevenueTE.append(
                    PPARateSixYearsTE * allYearGenerationMWh[i])
                if ((i >= 1) and (i <= 6)):
                    cashToSPEOForPPATE.append(-SPERevenueTE[i - 1])
                else:
                    cashToSPEOForPPATE.append(0)

            # Output Tax Equity Flip [F]
            derivedCostEnergyTE = cashToSPEOForPPATE[
                0] / allYearGenerationMWh[1]

            # Output Tax Equity Flip [G]
            # TEI Calcs [F]	[U] [V]
            landLeaseTE = []
            OMTE = []
            insuranceTE = []
            for i in range(1, len(allYearGenerationMWh) + 1):
                landLeaseTE.append(
                    firstYearLandLeaseCosts * math.pow((1 + .01), (i - 1)))
                OMTE.append(-firstYearOPMainCosts *
                            math.pow((1 + .01), (i - 1)))
                insuranceTE.append(- firstYearInsuranceCosts *
                                   math.pow((1 + .025), (i - 1)))
                if (i < 7):
                    OMInsuranceETCTE.append(float(landLeaseTE[i - 1]))
                else:
                    OMInsuranceETCTE.append(
                        float(OMTE[i - 1]) + float(insuranceTE[i - 1]) + float(landLeaseTE[i - 1]))

            # Output Tax Equity Flip [H]
            # TEI Calcs [T]
            SPEMgmtFeeTE = []
            EBITDATE = []
            EBITDATEREDUCED = []
            managementFee = 10000
            for i in range(1, len(SPERevenueTE) + 1):
                SPEMgmtFeeTE.append(-managementFee *
                                    math.pow((1 + .01), (i - 1)))
                EBITDATE.append(float(SPERevenueTE[
                                i - 1]) + float(OMTE[i - 1]) + float(insuranceTE[i - 1]) + float(SPEMgmtFeeTE[i - 1]))
                if (i <= 6):
                    cashFromSPEToBlockerTE.append(float(EBITDATE[i - 1]) * .01)
                else:
                    cashFromSPEToBlockerTE.append(0)
                    EBITDATEREDUCED.append(EBITDATE[i - 1])

            # Output Tax Equity Flip [I]
            # TEI Calcs [Y21]
            cashRevenueTE = -totalCost * (1 - 0.53)
            buyoutAmountTE = 0
            for i in range(1, len(EBITDATEREDUCED) + 1):
                buyoutAmountTE = buyoutAmountTE + \
                    EBITDATEREDUCED[i - 1] / (math.pow(1 + 0.12, i))
            buyoutAmountTE = buyoutAmountTE * 0.05
            cashFromBlockerTE = - (buyoutAmountTE) + 0.0725 * cashRevenueTE

            # Output Tax Equity Flip [K] [L]
            for i in range(1, len(allYearGenerationMWh) + 1):
                if (i == 6):
#.........这里部分代码省略.........
开发者ID:geomf,项目名称:omf-fork,代码行数:101,代码来源:solarSunda.py


示例16: pmt

        netFinancingCostsDirect = 0
        # Output - Direct Loan [E]
        OMInsuranceETCDirect = []
        # Output - Direct Loan [F]
        distAdderDirect = []
        # Output - Direct Loan [G]
        netCoopPaymentsDirect = []
        # Output - Direct Loan [H]
        costToCustomerDirect = []
        # Output - Direct Loan [F53]
        Rate_Levelized_Direct = 0

        # Output - Direct Loan Formulas
        projectCostsDirect = 0
        # Output - Direct Loan [D]
        payment = pmt(
            float(inputDict.get("loanRate", 0)) / 100, loanYears, outData["totalCost"])
        interestDirectPI = outData["totalCost"] * \
            float(inputDict.get("loanRate", 0)) / 100
        principleDirectPI = (-payment - interestDirectPI)
        patronageCapitalRetiredDPI = 0
        netFinancingCostsDirect = - \
            (principleDirectPI + interestDirectPI - patronageCapitalRetiredDPI)

        # Output - Direct Loan [E] [F] [G] [H]
        firstYearOPMainCosts = (1.25 * arraySizeDC * 12)
        firstYearInsuranceCosts = (0.37 * outData["totalCost"] / 100)
        if (inputDict.get("landOwnership", 0) == "Leased"):
            firstYearLandLeaseCosts = float(
                inputDict.get("costAcre", 0)) * landAmount
        else:
            firstYearLandLeaseCosts = 0
开发者ID:geomf,项目名称:omf-fork,代码行数:32,代码来源:solarSunda.py


示例17: minimum_payment

 def minimum_payment(self):
     return -self.days_in_month * np.pmt(self.daily_rate, self.term_in_days, self.loan.purchase_amount)
开发者ID:samuelbritt,项目名称:five_year_plan,代码行数:2,代码来源:amortized_loan.py


示例18: pmt

def pmt(principle, annual_interest_rate, loan_term):
    return abs(numpy.pmt(monthly_interest_rate(annual_interest_rate), loan_term, float(principle)))
开发者ID:selamuru,项目名称:realup,代码行数:2,代码来源:utils.py


示例19: work


#.........这里部分代码省略.........
	outData["totalCost"] = totalCosts + totalFees + float(inputDict.get("interCost",0))
	# Add to Pie Chart
	outData["costsPieChart"] = [["Land", landCosts],
		["Design/Engineering/PM/EPC", designCosts],
		["PV Modules", pvModules*shipping],
		["Racking", racking*shipping],
		["Inverters & Switchgear", (inverters+gear)*shipping],
		["BOS", hardwareCosts - pvModules*shipping - racking*shipping - (inverters+gear)*shipping],
		["Site Prep, Constr. Eq. and Installation", (siteMaterial + constrEquip) + (siteLabor + installCosts)]]
	# Cost per Wdc
	outData["costWdc"] = (totalCosts + totalFees + float(inputDict.get("interCost",0))) / (arraySizeDC * 1000)
	outData["capFactor"] = float(outData["oneYearGenerationWh"])/(inverterSizeAC*1000*365.25*24) * 100
	######
	### Loans calculations for Direct, NCREB, Lease, Tax-equity, and PPA
	######
	### Full Ownership, Direct Loan
	#Output - Direct Loan [C]
	projectCostsDirect = 0
	#Output - Direct Loan [D]
	netFinancingCostsDirect = 0
	#Output - Direct Loan [E]
	OMInsuranceETCDirect = []
	#Output - Direct Loan [F]
	distAdderDirect = []
	#Output - Direct Loan [G]
	netCoopPaymentsDirect = []
	#Output - Direct Loan [H]
	costToCustomerDirect = []
	#Output - Direct Loan [F53]
	Rate_Levelized_Direct = 0
	## Output - Direct Loan Formulas
	projectCostsDirect = 0
	#Output - Direct Loan [D]
	payment = pmt(float(inputDict.get("loanRate",0))/100, loanYears, outData["totalCost"])
	interestDirectPI = outData["totalCost"] * float(inputDict.get("loanRate",0))/100
	principleDirectPI = (-payment - interestDirectPI)
	patronageCapitalRetiredDPI = 0
	netFinancingCostsDirect = -(principleDirectPI + interestDirectPI - patronageCapitalRetiredDPI)
	#Output - Direct Loan [E] [F] [G] [H]
	firstYearOPMainCosts = (1.25 * arraySizeDC * 12)
	firstYearInsuranceCosts = (0.37 * outData["totalCost"]/100)
	if (inputDict.get("landOwnership",0) == "Leased"):
		firstYearLandLeaseCosts = float(inputDict.get("costAcre",0))*landAmount
	else:
		firstYearLandLeaseCosts = 0
	for i in range (1, len(outData["allYearGenerationMWh"])+1):
		OMInsuranceETCDirect.append(-firstYearOPMainCosts*math.pow((1 + .01),(i-1)) - firstYearInsuranceCosts*math.pow((1 + .025),(i-1)) - firstYearLandLeaseCosts*math.pow((1 + .01),(i-1)))
		distAdderDirect.append(float(inputDict.get("distAdder",0))*outData["allYearGenerationMWh"][i])
		netCoopPaymentsDirect.append(OMInsuranceETCDirect[i-1] + netFinancingCostsDirect)
		costToCustomerDirect.append((netCoopPaymentsDirect[i-1] - distAdderDirect[i-1]))
	#Output - Direct Loan [F53] 
	NPVLoanDirect = npv(float(inputDict.get("discRate",0))/100, [0,0] + costToCustomerDirect)
	NPVallYearGenerationMWh = npv(float(inputDict.get("discRate",0))/100, [0,0] + outData["allYearGenerationMWh"].values())
	Rate_Levelized_Direct = -NPVLoanDirect/NPVallYearGenerationMWh	
	#Master Output [Direct Loan]
	outData["levelCostDirect"] = Rate_Levelized_Direct
	outData["costPanelDirect"] = abs(NPVLoanDirect/numberPanels)
	outData["cost10WPanelDirect"] = (float(outData["costPanelDirect"])/panelSize)*10
	### NCREBs Financing
	ncrebsRate = float(inputDict.get("NCREBRate",4.060))/100
	ncrebBorrowingRate = 1.1 * ncrebsRate
	ncrebPaymentPeriods = 44
	ncrebCostToCustomer = []
	# TODO ASAP: FIX ARRAY OFFSETS START 0
	for i in range (1, len(outData["allYearGenerationMWh"])+1):
		coopLoanPayment = 2 * pmt(ncrebBorrowingRate/2.0, ncrebPaymentPeriods, outData["totalCost"]) if i <= ncrebPaymentPeriods / 2 else 0
开发者ID:dpinney,项目名称:omf,代码行数:67,代码来源:solarSunda.py


示例20: test_decimal_with_when

    def test_decimal_with_when(self):
        """Test that decimals are still supported if the when argument is passed"""
        # begin
        assert_equal(np.rate(Decimal('10'), Decimal('20'), Decimal('-3500'), Decimal('10000'), Decimal('1')),
                     np.rate(Decimal('10'), Decimal('20'), Decimal('-3500'), Decimal('10000'), 'begin'))
        # end
        assert_equal(np.rate(Decimal('10'), Decimal('20'), Decimal('-3500'), Decimal('10000')),
                     np.rate(Decimal('10'), Decimal('20'), Decimal('-3500'), Decimal('10000'), 'end'))
        assert_equal(np.rate(Decimal('10'), Decimal('20'), Decimal('-3500'), Decimal('10000'), Decimal('0')),
                     np.rate(Decimal('10'), Decimal('20'), Decimal('-3500'), Decimal('10000'), 'end'))

        # begin
        assert_equal(np.pv(Decimal('0.07'), Decimal('20'), Decimal('12000'), Decimal('0'), Decimal('1')),
                     np.pv(Decimal('0.07'), Decimal('20'), Decimal('12000'), Decimal('0'), 'begin'))
        # end
        assert_equal(np.pv(Decimal('0.07'), Decimal('20'), Decimal('12000'), Decimal('0')),
                     np.pv(Decimal('0.07'), Decimal('20'), Decimal('12000'), Decimal('0'), 'end'))
        assert_equal(np.pv(Decimal('0.07'), Decimal('20'), Decimal('12000'), Decimal('0'), Decimal('0')),
                     np.pv(Decimal('0.07'), Decimal('20'), Decimal('12000'), Decimal('0'), 'end'))

        # begin
        assert_equal(np.fv(Decimal('0.075'), Decimal('20'), Decimal('-2000'), Decimal('0'), Decimal('1')),
                     np.fv(Decimal('0.075'), Decimal('20'), Decimal('-2000'), Decimal('0'), 'begin'))
        # end
        assert_equal(np.fv(Decimal('0.075'), Decimal('20'), Decimal('-2000'), Decimal('0')),
                     np.fv(Decimal('0.075'), Decimal('20'), Decimal('-2000'), Decimal('0'), 'end'))
        assert_equal(np.fv(Decimal('0.075'), Decimal('20'), Decimal('-2000'), Decimal('0'), Decimal('0')),
                     np.fv(Decimal('0.075'), Decimal('20'), Decimal('-2000'), Decimal('0'), 'end'))

        # begin
        assert_equal(np.pmt(Decimal('0.08') / Decimal('12'), Decimal('5') * Decimal('12'), Decimal('15000.'),
                            Decimal('0'), Decimal('1')),
                     np.pmt(Decimal('0.08') / Decimal('12'), Decimal('5') * Decimal('12'), Decimal('15000.'),
                            Decimal('0'), 'begin'))
        # end
        assert_equal(np.pmt(Decimal('0.08') / Decimal('12'), Decimal('5') * Decimal('12'), Decimal('15000.'),
                            Decimal('0')),
                     np.pmt(Decimal('0.08') / Decimal('12'), Decimal('5') * Decimal('12'), Decimal('15000.'),
                            Decimal('0'), 'end'))
        assert_equal(np.pmt(Decimal('0.08') / Decimal('12'), Decimal('5') * Decimal('12'), Decimal('15000.'),
                            Decimal('0'), Decimal('0')),
                     np.pmt(Decimal('0.08') / Decimal('12'), Decimal('5') * Decimal('12'), Decimal('15000.'),
                            Decimal('0'), 'end'))

        # begin
        assert_equal(np.ppmt(Decimal('0.1') / Decimal('12'), Decimal('1'), Decimal('60'), Decimal('55000'),
                             Decimal('0'), Decimal('1')),
                     np.ppmt(Decimal('0.1') / Decimal('12'), Decimal('1'), Decimal('60'), Decimal('55000'),
                             Decimal('0'), 'begin'))
        # end
        assert_equal(np.ppmt(Decimal('0.1') / Decimal('12'), Decimal('1'), Decimal('60'), Decimal('55000'),
                             Decimal('0')),
                     np.ppmt(Decimal('0.1') / Decimal('12'), Decimal('1'), Decimal('60'), Decimal('55000'),
                             Decimal('0'), 'end'))
        assert_equal(np.ppmt(Decimal('0.1') / Decimal('12'), Decimal('1'), Decimal('60'), Decimal('55000'),
                             Decimal('0'), Decimal('0')),
                     np.ppmt(Decimal('0.1') / Decimal('12'), Decimal('1'), Decimal('60'), Decimal('55000'),
                             Decimal('0'), 'end'))

        # begin
        assert_equal(np.ipmt(Decimal('0.1') / Decimal('12'), Decimal('1'), Decimal('24'), Decimal('2000'),
                             Decimal('0'), Decimal('1')).flat[0],
                     np.ipmt(Decimal('0.1') / Decimal('12'), Decimal('1'), Decimal('24'), Decimal('2000'),
                             Decimal('0'), 'begin').flat[0])
        # end
        assert_equal(np.ipmt(Decimal('0.1') / Decimal('12'), Decimal('1'), Decimal('24'), Decimal('2000'),
                             Decimal('0')).flat[0],
                     np.ipmt(Decimal('0.1') / Decimal('12'), Decimal('1'), Decimal('24'), Decimal('2000'),
                             Decimal('0'), 'end').flat[0])
        assert_equal(np.ipmt(Decimal('0.1') / Decimal('12'), Decimal('1'), Decimal('24'), Decimal('2000'),
                             Decimal('0'), Decimal('0')).flat[0],
                     np.ipmt(Decimal('0.1') / Decimal('12'), Decimal('1'), Decimal('24'), Decimal('2000'),
                             Decimal('0'), 'end').flat[0])
开发者ID:Horta,项目名称:numpy,代码行数:73,代码来源:test_financial.py



注:本文中的numpy.pmt函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python numpy.poly函数代码示例发布时间:2022-05-27
下一篇:
Python numpy.place函数代码示例发布时间:2022-05-27
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap