问题标签 [xirr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
154 浏览

excel - Excel XIRR 信息,没有额外的列

我有一个 Excel 表,每行包含

  • 一个约会
  • 截至该日期用于购买股票的总金额
  • 股票在该日期的当前价值

xirr将每行的回报计算为第四列 的最有效方法是什么?

我的目标是以一种不需要引入计算与第二列差异的虚拟列的方式来执行此操作。

0 投票
2 回答
564 浏览

excel - 每项投资的 XIRR 公式

我正在尝试应用 XIRR 公式,以便单独计算每项投资的百分比。我尝试了一个 IF 公式,但没有成功。我需要修改以下公式。这将很有用,因为我正在尝试将其应用于 200 家以上的投资。

下面是数据。 在此处输入图像描述

下面是我想要得到的结果。

在此处输入图像描述

0 投票
1 回答
184 浏览

r - 通过内部函数调用提高循环性能

因此,为了提供上下文,我正在尝试执行以下操作:

  1. 使用 RODBC 连接从数据库中获取数据
  2. 获取唯一的公司名称
  3. 拆分每家公司的现金流和日期
  4. 使用已知行数初始化数据表,使其不需要增量增长。
  5. 循环遍历唯一的公司名称并调用函数 get xirr 在公司的现金流和日期列表上。
  6. 将带有公司名称和 XIRR 值的每一行添加到新数据表中。
  7. 使用 rbindlist。

这是我正在使用的源数据示例

我是 R 新手——大约有 2000 个独特的公司名称,平均有 50 个日期,每个现金流组合 = 100000 条记录,循环大约需要 28 秒来处理。

我已经研究过使用 asParallel 库并使用了 foreach ,但这似乎对速度没有任何影响。如果我取出函数 xirr 的调用,则循环将立即处理并完成。

xirr 需要异常处理,因为有时它不可能迭代地计算 xirr 值。

我知道循环并不是 R 中的最佳实践——关于如何向量化它以获得更好的性能的任何建议?

0 投票
0 回答
685 浏览

r - R中TVM包中的XIRR函数

我正在尝试利用tvmR 中的包来计算XIRR一组现金流和日期。

我有一个移动窗口,我从 i = 1 、 CF = CF[1]、d = d[1] 开始,随着我的前进,其余的现金流量都会涉及。

我知道如果XIRR现金流输入中没有符号更改,该函数会引发错误。

所以,为了处理它,我把它放在一个tryCatch.

对于我在下面提供的可重现示例,我打算何时看到 NA 直到遇到正现金流值 - 但是一旦遇到正现金流值,我希望函数像 Excel 一样返回有效值。

任何修复指导表示赞赏

0 投票
1 回答
576 浏览

excel - 使用 XIRR 函数和非连续数据计算同比回报

我输入了如下数据,其中“投资”是在 A 列的“日期”进行的,而“回报”(C 列)是截至今天的。

我想使用 XIRR 公式计算截至今天的年回报率。结果应该是这样的

实际上,我按顺序有流出(负值),但我无法将流入(作为正值)添加为每年的最后一行。

我在 2011 年和 2012 年尝试了以下方法,但 XIRR 不支持显然不连续的值

2011 年 =XIRR({B2:B5;sum(C2:C5)},{A2:A5;today()})

2012 年 =XIRR({B2:B16;sum(C2:C16)},{A2:A16;today()})

请求您的帮助。

谢谢,金舒克。

0 投票
1 回答
1429 浏览

excel - 如何基于唯一名称和特定日期之间创建 XIRR 函数?

我正在尝试创建一个 XIRR 函数,该函数将根据唯一的投资名称和特定日期之间的相应现金流来计算回报。例如,我想用以下现金流计算投资 A 在 2018 年 1 月 16 日至 2018 年 5 月 20 日之间的 IRR:

投资日期 金额 A 01/15/18 ($55) B 01/18/18 ($20) B 01/19/18 $9 B 04/06/18 $6 A 04/08/18 $24 A 05/20/18 $40 B 2018 年 5 月 21 日 7 美元一个 2018 年 5 月 23 日(5 美元)

开始 01/16/18
结束 05/20/18

我面临的挑战是跳过投资 B 的现金流,只计算投资 A。这是我正在尝试做的简化版本。完整版有大约 50 个投资名称,分布在大约 1000 行中。任何建议都会有所帮助。我试过使用 fncs INDEX、MATCH、OFFSET、COUNTIF。

附上电子表格供参考。

我提前感谢您的帮助!

0 投票
1 回答
1197 浏览

sql - 在 SQL 中计算 XIRR

我一直在尝试找到一种在 SQL (TSQL) 中计算 XIRR 的解决方案。理想情况下,这些值将与 Excel 使用相同输入数据计算的值相匹配。我在网上找到了几个建议的解决方案,但似乎都存在某种缺陷。下面是一个我们一直在使用的示例,它几乎适用于所有情况。

但是,根据下面的数据,

在此处输入图像描述

我们得到一个错误

An invalid floating point operation occurred.

这是在线上发生的

SELECT @f = @f + value * POWER(1 + @X0, (-theDelta / 365.0E))

它基本上归结为特定的计算

POWER(-0.635634780,-0.0849315)

是不是有一些简单的语法调整可以修复这个错误,或者函数本身不起作用?Excel 似乎可以毫无问题地处理此计算。

这只是我尝试使用的众多示例之一。如果需要,我可以分解另一个示例。我可以在指导下编辑帖子以使其符合 Stack Overflow 的标准。我发现没有关于如何在 SQL 中计算 XIRR 的明确讨论非常不寻常。每个解决方案似乎都有问题,但 Excel 毫不费力地吐出值。

0 投票
2 回答
287 浏览

excel - 如何将值列表传递给 Excel 中的用户定义函数 (UDF)

我希望在 Excel 中创建一个名为 MyXIRR(Dates as Range, Values as Range, Balance as Double, BalanceAsOn Date) 的函数

对于这个函数,我需要将时间戳列中的数据作为日期传递,数量 X 价格作为每个股票的值。Balance 和 BalanceAsOn 是我将分别确定的。

例如对于 ST1

日期将在下方

值将低于

我面临的问题是如何根据股票代码的过滤器传递值列表。

我不是 INDEX 或 MATCH 等方面的专家,但是当我尝试类似

或按 Ctrl + Shift + Enter 将其用作数组,即

然后在调试 MyXIRR 时,我在 Dates 中只得到一个值,在 Values 中得到一个值,即 2011 年 2 月 1 日和 100。我希望 MyXIRR 获得列表而不仅仅是第一个值。

怀疑我在滥用 INDEX 我尝试了 IF 和 SUMPRODUCT 但我得到了#VALUE!以下两种情况均出错

或者

有人可以建议我做错了什么和/或建议前进的方向吗?

我正在使用 Excel for Mac 版本 16.16.2

下面是我的功能的样子

当我为 ST1 调用它时,这只循环一次并显示 01/02/2011

0 投票
1 回答
457 浏览

excel - dd/mm/yyyy 格式的日期在 Excel Vba 中返回 1004 错误

我有这段代码,它可以工作:

但是,如果我更改日期,例如,

,然后我收到错误 1004:

“无法获得类 WorksheetFuntion 的属性 Xirr”。

我的计算机日期格式是欧洲(dd/mm/yyyy)。如果我将其更改为美国(mm/dd/yyyy),那么我的代码就可以工作。

我想在我的系统中保留欧洲格式,并且我希望我的代码可以在任何计算机上运行,​​无论其系统的日期格式如何

我试图按如下方式定义日期,但我得到了同样的错误。

知道如何在我的计算机中保留欧洲格式的同时让 VBA 理解日期吗?

谢谢

0 投票
1 回答
250 浏览

r - 我可以将 tvm 库中的 XIRR 函数应用于表中的每一行,其中现金流已经在该行上?

这是我的第一个问题,所以如果这不是一个完美的问题,我提前道歉。我已经在 Stack Overflow (& Google) 上进行了搜索,但找不到我要找的东西。另外,我是 R 的新手,我正在自己学习它。

我的问题是:我正在尝试使用 tvm 的 XIRR 函数计算表中每一行的内部收益率。我能够让 XIRR 为单一现金流工作。这是我能够开始工作的一个例子。

在我的特定场景中,我有一个表格,其中包含每个 ID 的每行填充的定期现金流和日期。现金流在列 cf1, cf2, cf3, cf(n)... 日期在列 date1, date2, date3, date(n)... 目前现金流和日期的数量为 14 (n =14),但可能有所不同(即 36、60 等)。这是一个从我更大的表中填充 2 行的代码。

我想使用 XIRR 函数来读取 cf1:n 和 date1:n。结果应该是插入的另一列 (XIRR),计算值为 A = 0.1412532 和 B = 0.1458380。

这可能吗,还是我应该研究其他功能?谢谢!

编辑 - 附加详细信息和对“同行”答案为何不起作用的回应

我的实际数据包含超过 550 万行的长表格式的现金流和日期。我将它们转换为“已弃用”表的原因是因为我最终要做的是创建一个滚动的每月 IRR 计算。我想如果我在每一行上建立日期和现金流,那么我可以避免循环将 XIRR 直接应用于每一行。创建包含 ID/Date 每次迭代的长表对于这么多数据是不现实的(我不认为)。

使用建议的代码,现金流和日期合并为相同的 ID,因此它不考虑滚动期。我知道这在我原来的问题中没有解释。

此外,我有一段时间缺少显示 NA 的现金流(因为它们被变异为.numeric)。我需要 XIRR 在有任何 NA 时不执行计算来处理这个问题。我认为这可以通过 summarise 命令中的 is.na = TRUE 来处理。

编辑#2:找到部分解决方案

在玩弄这个之后,我能够让 XIRR 函数为上面的示例数据工作。这是有效的代码,但我的实际数据需要很长时间。

我收到一条警告消息“警告消息:在 bind_rows_(x, .id) 中:不相等的因子级别:强制转换为字符”,但计算是准确的。

我仍然遇到的问题是这对于我的实际数据集来说有多慢。它运行了很长时间(6 小时以上),但确实产生了正确的结果。有没有办法使用并行处理或不按行来重写它,我假设这是一个循环操作并且很慢。