python - 在 Python 中执行跨列计算

标签 python math statistics finance

语境
我正在尝试按照 this 构建一个投资组合仪表板例如,我使用 Python 而不是 Excel。我目前不确定如何从 3:47 开始,交叉计算得出下一期余额。
问题
有没有办法在 Python 中执行此操作?我尝试了一个 for 循环,但它返回了在前向周期数上迭代的相同数字。下面是示例:

date_range = pd.date_range(start=today, periods=period_of_investments, freq=contribution_periods)
returns_port = 12
rs = []
balance_total = []
for one in range(len(date_range))):
    return_loss = (returns_port/period_of_investments)*capital_insert
    rs.append(return_loss)
    period_one_balance = capital_insert+return_loss
    period_two_return_loss = (returns_port/period_of_investments)*(period_one_balance + capital_insert)
    period_two_balance = period_one_balance + capital_insert + period_two_return_loss
    balance_total.append(period_two_balance)

最佳答案

我没有看视频,但我会解释如何为以下问题编写 Python 代码,这与视频中的问题类似。
假设您要计算 future 20 年固定利率的每月定期存款的投资返回。
第一步是了解如何pd.date_range()作品。如果您在本月初开始,则整个期间将为 pd.date_rage(start='4-1-2021', periods='240', freq='1m') (240 来自 20 年,每个 12 个月)。基本上,我们在每个月末计算返回。

import pandas as pd
portfolio = pd.DataFrame(columns=['Date', 'Investment', 'Return/Loss', 'Balance'])
interest_rate = 0.121
monthly_deposit = 500

dates = pd.date_range(start="3-31-2021", periods=240, freq='1m')
investment = [monthly_deposit]*len(dates)
return_losses = []
balances = []
current_balance = 500
for date in dates:
    current_return_loss = (interest_rate/12)*current_balance
    return_losses.append(round(current_return_loss,2))
    balances.append(round(current_balance + current_return_loss))
    current_balance += (current_return_loss + monthly_deposit)

portfolio['Date'] = pd.to_datetime(dates)
portfolio['Investment'] = investment
portfolio['Return/Loss'] = return_losses
portfolio['Balance'] = balances

balance_at_end = balances[-1]

print(portfolio.head(10))
print(balance_at_end)
您将得到以下结果,与视频相同:
 Date  Investment  Return/Loss  Balance
0 2021-03-31         500         5.04      505
1 2021-04-30         500        10.13     1015
2 2021-05-31         500        15.28     1530
3 2021-06-30         500        20.47     2051
4 2021-07-31         500        25.72     2577
5 2021-08-31         500        31.02     3108
6 2021-09-30         500        36.38     3644
7 2021-10-31         500        41.79     4186
8 2021-11-30         500        47.25     4733
9 2021-12-31         500        52.77     5286
506397

关于python - 在 Python 中执行跨列计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67149968/

相关文章:

c# - 从单个 for 循环生成乘法表

algorithm - 检测两个矩形是否可以组合成一个矩形

python - 为什么 "median"使用统计包比 "mean"快 2 倍?

像timeSeries一样检测锯齿的算法

python - 如何隐藏子进程的输出

python - 我可以在 pythonw 中获取 "print"语句的输出吗?

python - 如何使用 Python 函数联合模拟 fmu?

python - 从 Python 中的切片对象中检索切片的长度

statistics - 使用 GLM 回归时,如何在 stata 中获取伪 R2 度量?

java - 检查像素坐标偏移的高效代码