numpy中與金融有關的函式

2022-07-04 02:12:09 字數 3572 閱讀 6087

計算未來的價值

def fv(rate, nper, pmt, pv, when='end'):

...引數:rate:存款/貸款每期的利率

nper:存款/貸款期數

pmt:存款/貸款每期支付的金額

pv:當前的存款/貸款金額

比如,古明地覺去博麗靈夢神社去存款,假設年利率是3%,存款為1000,然後每個季度都會存10元,那麼五年後能拿到多少錢呢?

"""

年利率是百分之3,那麼每個季度顯然就是0.03 / 4

每個季度存10元,存五年,那麼期數顯然是5 * 4期

因此:rate = 0.0. / 4

nper = 5 * 4

pmt = -10

pv = -1000

至於pmt和pv為什麼是負的,可以想象一下存款,相當於是給別人錢,所以是負的,取出來的時候,別人給你,會是正的

"""result = np.fv(0.03 / 4, 5 * 4, -10, -1000)

print(result) # 1376.0963320407982

# 可以看到5年後能拿這麼多

# 如果我們把年利率改大一點的話,就改成1吧

import numpy as np

result = np.fv(1 / 4, 5 * 4, -10, -1000)

print(result) # 90165.62075079395

# 可以看到增長是很恐怖的

用於根據未來計算現在的價值

def pv(rate, nper, pmt, fv=0, when='end'):

...rate:存款/貸款每期的利率

nper:存款/貸款期數

pmt:存款/貸款每期支付的金額

fv:未來的存款/貸款金額

比如,古明地覺去博麗靈夢神社去存款,假設年利率是3%,然後每個季度都會存10元,如果五年後拿到1376.0963320407982,那麼她現在要存多少錢呢?

import numpy as np

result = np.pv(0.03 / 4, 5 * 4, -10, 1376.0963320407982)

# fv相當於是你拿到的錢,所以是正的

print(result) # -1000.0

# 說明如果想在五年後拿到1376.0963320407982,現在要交出1000元

因此pv函式和fv正好是相反的。fv函式要傳入pv計算fv,pv函式要傳入fv計算pv

npv(net present value)定義為按照折現率計算的淨現金流之和。淨現值是指投資方案所產生的現金淨流量(流入-流出)以資金成本為貼現率,折現之後與原始投資額現值的差額

def npv(rate, values):

...rate:存款/貸款每期的利率

values:現金

古明地覺投資100, 收益39,59,55,20,折現率為28.1%,則淨現值為:

import numpy as np

result = np.npv(0.281, [-100, 39, 59, 55, 20])

print(result) # -0.00847859163845488

根據本金和利率計算出每期需要支付的金額

def pmt(rate, nper, pv, fv=0, when='end'):

...rate:存款/貸款每期的利率

nper:存款/貸款期數

pv:存款/貸款金額

古明地覺要買房,房貸20萬,準備15年還清,年利率為7.5%,則每個月需要換多少錢

import numpy as np

"""rate:0.075 / 12

nper:15 * 12

pv:這裡是貸了200000,所以錢是到自己兜裡了,所以是正的

"""result = np.pmt(0.075 / 12, 15 * 12, 200000)

print(result) # -1854.0247200054619

# 說明每個月要支出,也就是給銀行1854.0247200054619元

計算出需要付款多少期

def nper(rate, pmt, pv, fv=0, when='end'):

...rate:存款/貸款每期的利率

pmt:存款/貸款每期的金額

pv:存款/貸款金額

古明地覺房貸20萬,年利率為7.5%,每個月還2000,則需要換多少期

import numpy as np

"""rate:0.075 / 12

pmt:每個月支出兩千,所以是負的,-200

pv:這裡是貸了200000,所以錢是到自己兜裡了,所以是正的

"""result = np.nper(0.075 / 12, -2000, 200000)

print(result) # 157.42258584992115

# 說明要還157.42258584992115期

計算利率

def rate(nper, pmt, pv, fv, when='end', guess=none, tol=none, maxiter=100):

...nper:期數

pmt:每期的存款/貸款金額

pv:present value

fv:future value

古明地盆存了1000元,然後每個季度存款10元,存了5年,五年後拿到了1376.0963320407982,那麼年利率是多少呢?

import numpy as np

result = np.rate(5 * 4, -10, -1000, 1376.0963320407982)

print(result * 4) # 0.030000000000003947

# 說明年利率是0.030000000000003947

計算內部收益率

乙個人投資100,然後按照固定的時間間隔進行取款,39,59,55,20

由於是階段性區塊,收益率不是做簡單的平均。而是用以下的公式計算

-100 + 39/(1+r) + 59/(1+r)^2 + 55/(1+r)^3 + 20/(1+r)^4 = 0

import numpy as np

result = np.irr([-100, 39, 59, 55, 20])

print(result) # 0.2809484211599611

Numpy中的函式

生成用函式 效果np.array x 將輸入資料轉化為乙個ndarray np.array x,dtype 將輸入資料轉化為乙個型別為type的ndarray np.asarray array 將輸入資料轉化為乙個新的 copy ndarray np.ones n 生成乙個n長度的一維全一ndarr...

Numpy中的transpose函式

transpose 的操作物件是矩陣。我們用乙個例子來說明這個函式 0 1 2 3 4 5 6 7 這是乙個shape為 2,2,2 的矩陣,現在對它進行transpose操作。首先我們對矩陣的維度進行編號,上述矩陣有三個維度,則編號分別為0,1,2,而transpose函式的引數輸入就是基於這個編...

numpy中的tile函式

在看機器學習實戰這本書時,遇到numpy.tile a,b 函式,愣是沒看懂怎麼回事,裝了numpy模組後,實驗了幾把,原來是這樣子 重複a,b次,這裡的b可以時int型別也可以是遠組型別。python view plain copy import numpy numpy.tile 0,0 5 在列...