用python编写一个投资决策的excle模型,计算投资回收期以及内部收益率等指标
时间: 2024-12-28 15:37:44 浏览: 13
在Python中,你可以使用pandas库处理Excel数据,同时结合numpy和matplotlib等工具来进行财务分析,包括投资回收期(Payback Period,PP)和内部收益率(Internal Rate of Return,IRR)的计算。以下是一个简单的例子:
```python
import pandas as pd
import numpy as np
from scipy.optimize import brentq
# 假设你有一个包含项目现金流的Excel表格,例如DataFrame df
# 这里我们简化为年份(列名Year)、现金流量(列名Cash_Flow)
df = pd.read_excel('investment_data.xlsx')
# 函数用于计算投资回收期
def payback_period(cash_flows):
cumulative_cashflows = cash_flows.cumsum()
for i, val in enumerate(cumulative_cashflows):
if val >= 0:
return i + 1
return np.inf # 如果所有现金流都是负的,返回无穷大表示无法收回初始投资
# 计算投资回收期
df['Payback_Period'] = df.groupby(level=0)['Cash_Flow'].apply(payback_period)
# 函数用于二分法计算内部收益率
def irr_calculator(cash_flows, initial_investment):
def net现值(NR, cum_sum):
return cum_sum - NR * np.arange(len(cash_flows))
# 初始化猜测范围
lower_bound = 0
upper_bound = max(df['Cash_Flow']) + 1
while True:
guess = (lower_bound + upper_bound) / 2
npv = net现值(guess, df['Cash_Flow'].cumsum())
if np.all(npv <= 0):
upper_bound = guess
else:
lower_bound = guess
if abs(np.sum(npv)) < 0.001: # 设置一个很小的精度阈值
break
return guess
# 针对每个项目的初始投资,计算内部收益率
df['IRR'] = df.apply(lambda row: brentq(irr_calculator, 0, 1, args=(row['Initial_Investment'],)), axis=1)
```
在这个模型中,你需要将`initial_investment`替换为你实际的数据中的初始投资金额,并确保你的Excel数据已经按项目分组。
阅读全文