python goalseek用于求解贴现率变量

2024-09-28 15:12:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道如何使用numpy irr和npv,但是,当其中一个现金流(终值)依赖于此利率时,我正在努力解决使我的npv=0的利率问题。实际上,我需要找到一种方法来编写goalseek函数,通过更改所有现金流的贴现系数,将净现值设置为0。所以要解决这样的问题:

  1. 现金支出(在这种情况下,市值为负值)
  2. 现金流_1/(1+利率+利差)^1
  3. 现金流_2/(1+利率+利差)^2
  4. 现金流_3/(1+利率+利差)^3
  5. ((现金流3*(1+lt增长率))/(利率+利差-lt增长率))/(1+利率+利差)^3

我需要找到利差度量使我的净现值=市值的位置,第0步,即零值

以下是我迄今为止一直尝试但没有成功的方法:


import numpy as np
from scipy.optimize import newton, fsolve


def fn(x):
    return np.npv(x, [-tst['mkt_cap'][i] + (tst['fcfe_1'][i]/(1+ x + tst['10y_tsy'][i])) + (tst['fcfe_2'][i]/(1+ x + tst['10y_tsy'][i])**2) + (tst['fcfe_3'][i]/(1+x+tst['10y_tsy'][i])**3) + ((tst['fcfe_3'][i] * (1+terminal_growth))/(tst['10y_tsy'][i] + x - terminal_growth))])

[newton(fn,x0=0) for x in range(len(tst))]

我还尝试从这里(https://github.com/DrTol/GoalSeek_Python)使用GoalSeek函数

像这样:

[print(GoalSeek(fn,goal,x0)) for i in range(len(tst))]

其中,目标为0,x0=.05,为猜测值

任何帮助都将不胜感激!!多谢各位

编辑:这里是数据帧的一个片段,来自主数据帧而不是“tst”,它只是我测试的一个片段:

其中,“10y_tsy”是每个发行人的10年期政府债券(对于不同的居住国,它们的价值不同),fwiw

enter image description here


Tags: 方法函数numpyfn市值利率tstx0