加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

年度回报转换函数返回复数值

发布时间:2020-12-17 17:39:45 所属栏目:Python 来源:网络整理
导读:我正在编写一个Python函数,将复合回报率转换为年化收益率: annual_rate = ((1 + ((1 + compound_rate) ** (1 / nb_days) - 1)) ** 365 - 1) 这很好 compound_rate = 0.1nb_days = 1000.41606536550485806 但是在某些情况下,会返回一个复数 compound_rate =

我正在编写一个Python函数,将复合回报率转换为年化收益率:

annual_rate = ((1 + ((1 + compound_rate) ** (1 / nb_days) - 1)) ** 365 - 1)

这很好

compound_rate = 0.1
nb_days = 100
>>0.41606536550485806

但是在某些情况下,会返回一个复数

compound_rate = -1.8536
nb_days = 362
>>(-1.852192062046392-0.022192088919279443j)

这是一个真实的例子:

如果我有以下付款表:

03/03/2018  £1000
03/04/2018  £1000
03/05/2018  £1000
03/06/2018  £1000
03/07/2018  £1000
03/08/2018  £1000
03/09/2018  £1000
03/10/2018  £1000
03/11/2018  £1000
03/12/2018  £1000
03/01/2019  £1000
03/02/2019  £1000

….如果我亏了所有钱并在2019年2月底得到100英镑,我将在362天内投入12000英镑,损失11900英镑.

如果我从那里应用公式,则会返回一个复数(请参见上面的第二个示例).

有没有我在这里看不到的东西?从字面上看,这个结果对我来说并不真实.

最佳答案
这可能是您要寻找的:

import numpy as np
l = [-1000]*12
l.append(100)
print(l)
#[-1000,-1000,100]
print(np.irr(l))
#-0.9090909090908827

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读