我如何通过每月的累计市场量来赢得每月的样本?

时间:2019-07-31 12:35:59

标签: r rank

跟随http://pages.stern.nyu.edu/~lpederse/papers/ValMomEverywhere.pdf (第933页的底部),我只想将我的每月数据限制为市值合计为90%的公司。 因此,对于每个月,我需要按其月初市场交易量对我的股票进行排名。我猜这不是问题,因为排序功能可以做到。 然后,我必须按降序排列它们,只包括股票,这些股票累计占股票市场市值的90%。 所以我需要计算每个月的总市值:

Marketcap<-rowSums(Volume.Monthly,na.rm=TRUE)

按升序排列:

help.variable<-sort(Volume.Monthly[i,],decreasing = FALSE)

按市值划分

q<-help.variable/Marketcap[i]

执行cum

cumsum(q) 

并将所有低于0.9的值替换为NA

但是对于300个月以上的样本我该怎么做,仍然保持结构(Apple在第1列,AMZ在第2列,依此类推),这样在每一行(对于每个日期)中,公司(在专栏)不是90%市值排名靠前的公司的一部分,是NA吗?

非常感谢您的每次输入!

编辑

这是我的数据集      VM <-(matrix(c(3,1,5,2,6,5,7,8,9,19,17,2,4,9,11),nrow = 5,ncol = 3))

     [,1] [,2] [,3]
[1,]    3    5   17
[2,]    1    7    2
[3,]    5    8    4
[4,]    2    9    9
[5,]    6   19   11

这将是我每行(日期)的总交易量

Mcap<-rowSums(V.M)

V.M / Mcap给出:

       [,1]      [,2]      [,3]
[1,] 0.1200000 0.2000000 0.6800000
[2,] 0.1000000 0.7000000 0.2000000
[3,] 0.2941176 0.4705882 0.2352941
[4,] 0.1000000 0.4500000 0.4500000
[5,] 0.1666667 0.5277778 0.3055556

ö<-V.M/Mcap 

这将是每个股票在每个月(行)的市场份额百分比

现在,我只想包含最大的股票,它们总共拥有50%的市值(在我的示例中选择错误的数字)。

所以我需要

q<-foreach(i=1:5,.combine = rbind) %do%
+     sort(ö[i,])

哪个会产生:

             [,1]      [,2]      [,3]
result.1 0.1200000 0.2000000 0.6800000
result.2 0.1000000 0.2000000 0.7000000
result.3 0.2352941 0.2941176 0.4705882
result.4 0.1000000 0.4500000 0.4500000
result.5 0.1666667 0.3055556 0.5277778

现在累计:

e<-foreach(i=1:5,.combine = rbind) %do%
+     cumsum(q[i,])


            [,1]      [,2] [,3]
result.1 0.1200000 0.3200000    1
result.2 0.1000000 0.3000000    1
result.3 0.2352941 0.5294118    1
result.4 0.1000000 0.5500000    1
result.5 0.1666667 0.4722222    1

这将是我的初始数据的标准,每只股票都不属于累积市值达到或超过50%的最大股票的一部分(是的,我的回答是90%,但我最终决定我的示例)应排除在外。

所以我输入数据的输出应该是

     [,1]       [,2]      [,3]
[1,]     NA       NA     0.6800000
[2,]     NA     0.7000000    NA
[3,] 0.2941176 0.4705882     NA
[4,]     NA    0.4500000 0.4500000
[5,]     NA     0.5277778     NA

很显然,由于排序,我的初始结构发生了变化。

每条有用的建议都将受到高度赞赏。

0 个答案:

没有答案