首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在SQL中计算XIRR

在SQL中计算XIRR
EN

Stack Overflow用户
提问于 2018-09-14 18:32:45
回答 1查看 1.5K关注 0票数 0

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

代码语言:javascript
运行
复制
CREATE FUNCTION [dbo].[CalcXIRR]
(
    @Sample XIRRTable READONLY,
    @Rate DECIMAL(19, 9) = 0.1
)
RETURNS DECIMAL(38, 9)
AS
BEGIN
    DECLARE @X DECIMAL(19, 9) = 0.0,
    @X0 DECIMAL(19, 9) = 0.1,
    @f DECIMAL(19, 9) = 0.0,
    @fbar DECIMAL(19, 9) = 0.0,
    @i TINYINT = 0,
    @found TINYINT = 0

IF @Rate IS NULL
    SET @Rate = 0.1

SET @X0 = @Rate

WHILE @i < 100
    BEGIN
        SELECT  @f = 0.0,
            @fbar = 0.0

        SELECT      @f = @f + value * POWER(1 + @X0, (-theDelta / 365.0E)),
        @fbar = @fbar - theDelta / 365.0E * value * POWER(1 + @X0, (-theDelta / 365.0E - 1))
        FROM    (
                SELECT  Value,
                    DATEDIFF(DAY, MIN(date) OVER (), date) AS theDelta
                FROM    @Sample
            ) AS d

        SET @X = @X0 - @f / @fbar

        If ABS(@X - @X0) < 0.00000001
        BEGIN
           SET @found = 1
           BREAK;
        END

        SET @X0 = @X
        SET @i += 1
   END

 If @found = 1
    RETURN  @X

RETURN NULL
END

GO

然而,根据下面的数据,

我们收到了一个错误

An invalid floating point operation occurred.

这是在网上发生的

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

从本质上讲,这是一个特定的计算。

POWER(-0.635634780,-0.0849315)

是因为有一些简单的语法调整可以修复此错误,还是函数本身无法工作?Excel似乎没有问题地处理这个计算。

这只是我尝试过的许多例子中的一个。如果需要的话,我可以再举一个例子。我可以编辑文章,使其符合堆栈溢出的标准与指导。我发现对于如何在SQL中计算XIRR没有进行明确的讨论,这是非常不寻常的。每个解决方案似乎都有问题,但Excel却毫不费力地抛出了值。

EN

回答 1

Stack Overflow用户

发布于 2018-09-29 15:40:28

假设您的图像位于左上角的A1中。并不能解决您的SQL问题,但我希望能有一些帮助:

首先,我的Excel还返回-0.6719218

其次,在XIRR函数上详细介绍了Excel的计算,其中的部分如下:

但是,对于Excel使用迭代的一系列现金流,您的具体示例只是一对配对条目,对于这些条目,可解方程可以表示为:

代码语言:javascript
运行
复制
=10^(LOG(-A2/A1)*365/(B2-B1))

这部分:365/(B2-B1)0.0849315的倒数,所以可能值得更仔细地研究您的0.635634780 (我不清楚您是如何得出这个结论的)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52337532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档