获取加权平均日期值



如果我在2011年6月3日拥有50%的权重,在2011年1月6日拥有50%权重,则加权平均值将为2011年2月6日。

现在,我似乎不知道如何在权重不均匀的情况下做到这一点,因为这不像你可以用DateTime乘以两倍,然后总结结果(或者你可以吗?)。

DateTime dateA = ...;
DateTime dateB = ...;
TimeSpan difference = dateA - dateB;
double units = difference.Ticks;
// Do your weighted logic here on 'units'.
DateTime average = dateA + new TimeSpan(units);

类似于上面的内容(你已经明白了——基本上需要将差异标准化为一种你可以使用的格式,即ticks等)。

您可以找到两个日期(开始和结束)之间的天数差异。在difference_days上应用权重,并通过startdate + weightedDays 获得最终输出日期

您不能将日期时间乘以一个双精度,但您可以按比例(1到100)为日期1和日期2设置一个值,并计算出您的值在中间的位置。在50/50的情况下,1对100最终是50。

然后,您必须计算出该范围内的天数。然后,您可以乘以加权小数(百分比),并将其转换为天数。然后将该天数与第一个值相加。

既然你可以把日期变成数字,这就提供了一些非常有趣的其他方法来实现这一点。TimeSpan是将其设置为数字的一种方法。

使用DateTime对象的长时间戳。

您能使用DateTimeTicks属性吗?类似于:

        DateTime firstDate = new DateTime(2011, 6, 5);
        DateTime secondDate = new DateTime(2011, 6, 1);
        double weight1 = 0.4;
        double weight2 = 0.6;
        var averageTicks = (firstDate.Ticks * weight1) + (secondDate.Ticks * weight2) / 2;
        DateTime averageDate = new DateTime(Convert.ToInt64(averageTicks));

我认为加权平均公式应该是sumproduct (Weights*Dates)/sum(Weights)

其中,sumproduct是指所有因素的总和。权重和日期刻度的乘积。如果权重之和=1,则只剩下分子。

我也有同样的问题,只是货币(现金流),这意味着有一个复合的增长折现率\价值衰减率,称为货币的时间价值)。。。

为了避免这个错误,我编写了一个电子表格,位于:https://1drv.ms/x/s!AqGuYeJW3VHggc9ARWCxcHIeodd2Pg

你只需要试验一下!!!。。。请理解,在0%的利率下,结果与其他帖子中描述的加权平均值相同,但随着利率的增加,会出现偏差。然后你必须为你的编程语言构建一个XNPV函数,并将其与你的应用程序融合。

代数书中也有许多增长的例子。也许它们与现金流中的日期时间偏移量有交集

相关内容

  • 没有找到相关文章

最新更新