从价格的每日时间序列计算每周 Returns
Calculating Weekly Returns from Daily Time Series of Prices
我想根据每日价格的时间序列计算每周 return 秒的共同基金。我的数据如下所示:
A B C D E
DATE WEEK W.DAY MF.PRICE WEEKLY RETURN
02/01/12 1 1 2,7587
03/01/12 1 2 2,7667
04/01/12 1 3 2,7892
05/01/12 1 4 2,7666
06/01/12 1 5 2,7391 -0,007
09/01/12 2 1 2,7288
10/01/12 2 2 2,6707
11/01/12 2 3 2,7044
12/01/12 2 4 2,7183
13/01/12 2 5 2,7619 0,012
16/01/12 3 1 2,7470
17/01/12 3 2 2,7878
18/01/12 3 3 2,8156
19/01/12 3 4 2,8310
20/01/12 3 5 2,8760 0,047
日期为(dd/mm/yy)格式,“,”为小数点分隔符。这将通过使用以下公式来完成:(最后一个工作日的价格 - 第一个工作日的价格)/(第一个工作日的价格)。例如,第一周的 return 是 (2,7391 - 2,7587)/2,7587 = -0,007,第二周是 (2,7619 - 2,7288)/2,7288 = 0,012。
问题是这个列表持续了一年,有些周因为节假日或其他原因少于五个工作日。所以我不能简单地复制粘贴上面的公式。我使用 WEEKNUM 和 WEEKDAY 函数为周数和工作日添加了额外的两列,认为这可能有帮助。我想用公式或使用 VBA 自动执行此操作,并希望得到这样的 table:
WEEK RETURN
1 -0,007
2 0,012
3 0,047
.
.
.
正如我所说,由于节假日或其他原因,有些周的工作日少于五个工作日,有些从工作日 2 开始或在工作日 3 结束等。所以我在想办法告诉 excel 到 "find the prices that correspond to the max and min weekday of each week and apply the formula (Price for last weekday - Price for first weekday)/(Price for first weekday)".
抱歉这么久 post,我尽量表达清楚,如有任何帮助,我将不胜感激! (我连续几年有 5 个单独的工作表,每个都有 20 个共同基金的每日价格)
我会使用一些查找公式来解决它以获取每周的值,然后对每周进行简单的计算。
结果table:
H I J K L M
first last first val last val return
1 02.01.2012 06.01.2012 2,7587 2,7391 -0,007
2 09.01.2012 13.01.2012 2,7288 2,7619 0,012
3 16.01.2012 20.01.2012 2,747 2,876 0,047
第一列公式:
=MINIFS($A:$A;$B:$B;$H2)
J 列中的公式:
=MAXIFS($A:$A;$B:$B;$H2)
K 列中的公式:
=VLOOKUP($I2;$A:$D;4;FALSE)
L 列中的公式:
=VLOOKUP($J2;$A:$D;4;FALSE)
M 列中的公式:
=(L2-K2)/K2
用一个公式完成:
=(INDEX(D:D,AGGREGATE(15,6,ROW($D:$D)/(($C:$C=AGGREGATE(14,6,$C:$C/($B:$B=G2),1))*($B:$B=G2)),1))-INDEX(D:D,MATCH(G2,B:B,0)))/INDEX(D:D,MATCH(G2,B:B,0))
您可能需要根据您的本地设置将所有 ,
更改为 ;
。
我想根据每日价格的时间序列计算每周 return 秒的共同基金。我的数据如下所示:
A B C D E
DATE WEEK W.DAY MF.PRICE WEEKLY RETURN
02/01/12 1 1 2,7587
03/01/12 1 2 2,7667
04/01/12 1 3 2,7892
05/01/12 1 4 2,7666
06/01/12 1 5 2,7391 -0,007
09/01/12 2 1 2,7288
10/01/12 2 2 2,6707
11/01/12 2 3 2,7044
12/01/12 2 4 2,7183
13/01/12 2 5 2,7619 0,012
16/01/12 3 1 2,7470
17/01/12 3 2 2,7878
18/01/12 3 3 2,8156
19/01/12 3 4 2,8310
20/01/12 3 5 2,8760 0,047
日期为(dd/mm/yy)格式,“,”为小数点分隔符。这将通过使用以下公式来完成:(最后一个工作日的价格 - 第一个工作日的价格)/(第一个工作日的价格)。例如,第一周的 return 是 (2,7391 - 2,7587)/2,7587 = -0,007,第二周是 (2,7619 - 2,7288)/2,7288 = 0,012。
问题是这个列表持续了一年,有些周因为节假日或其他原因少于五个工作日。所以我不能简单地复制粘贴上面的公式。我使用 WEEKNUM 和 WEEKDAY 函数为周数和工作日添加了额外的两列,认为这可能有帮助。我想用公式或使用 VBA 自动执行此操作,并希望得到这样的 table:
WEEK RETURN
1 -0,007
2 0,012
3 0,047
.
.
.
正如我所说,由于节假日或其他原因,有些周的工作日少于五个工作日,有些从工作日 2 开始或在工作日 3 结束等。所以我在想办法告诉 excel 到 "find the prices that correspond to the max and min weekday of each week and apply the formula (Price for last weekday - Price for first weekday)/(Price for first weekday)".
抱歉这么久 post,我尽量表达清楚,如有任何帮助,我将不胜感激! (我连续几年有 5 个单独的工作表,每个都有 20 个共同基金的每日价格)
我会使用一些查找公式来解决它以获取每周的值,然后对每周进行简单的计算。
结果table:
H I J K L M
first last first val last val return
1 02.01.2012 06.01.2012 2,7587 2,7391 -0,007
2 09.01.2012 13.01.2012 2,7288 2,7619 0,012
3 16.01.2012 20.01.2012 2,747 2,876 0,047
第一列公式:
=MINIFS($A:$A;$B:$B;$H2)
J 列中的公式:
=MAXIFS($A:$A;$B:$B;$H2)
K 列中的公式:
=VLOOKUP($I2;$A:$D;4;FALSE)
L 列中的公式:
=VLOOKUP($J2;$A:$D;4;FALSE)
M 列中的公式:
=(L2-K2)/K2
用一个公式完成:
=(INDEX(D:D,AGGREGATE(15,6,ROW($D:$D)/(($C:$C=AGGREGATE(14,6,$C:$C/($B:$B=G2),1))*($B:$B=G2)),1))-INDEX(D:D,MATCH(G2,B:B,0)))/INDEX(D:D,MATCH(G2,B:B,0))
您可能需要根据您的本地设置将所有 ,
更改为 ;
。