我正在处理报价数据,并希望获得一些有关报价变动分布的基本信息。我的数据库由 10 个开放日期间的报价数据组成。 我已经获取了刻度价格的第一个差异:
Tick spread
2010-02-02 08:00:04 -1
2010-02-02 08:00:04 1
2010-02-02 08:00:04 0
2010-02-02 08:00:04 0
2010-02-02 08:00:04 0
2010-02-02 08:00:04 -1
2010-02-02 08:00:05 1
2010-02-02 08:00:05 1
我创建了一个数组,它为我提供了每天的第一个和最后一个刻度:
Open Close
[1,] 1 59115
[2,] 59116 119303
[3,] 119304 207300
[4,] 207301 351379
[5,] 351380 426553
[6,] 426554 516742
[7,] 516743 594182
[8,] 594183 683840
[9,] 683841 754962
[10,] 754963 780725
我想知道每天我的报价点差的经验分布。 我知道我可以使用 R 函数 table() 但问题是它给了我一个长度随天而变化的表对象。第二个问题是,有一天我可以有3个点的点差,而之后的几天我的点差只有不到3个点。
第一天表()输出:
-3 -2 -1 0 1 2 3
1 19 6262 46494 6321 16 2
第二天表()输出:
-2 -1 0 1 2 3 5
27 5636 48902 5588 33 1 1
我想要的是为我的整个刻度样本创建一个包含所有 table() 输出的数据框。 任何想法? 谢谢
最佳答案
只需使用二维表,使用 as.Date(index(x))
作为行:
# create some example data
set.seed(21)
p <- sort(runif(6))*(1:6)^2
p <- c(p,rev(p)[-1])
p <- p/sum(p)
P <- sample(-5:5, 1e5, TRUE, p)
x <- .xts(P, (1:1e5)*5)
# create table
table(as.Date(index(x)), x)
# x
# -5 -4 -3 -2 -1 0 1 2 3 4 5
# 1970-01-01 22 141 527 1623 2968 6647 2953 1700 538 139 21
# 1970-01-02 31 142 548 1596 2937 6757 2874 1677 529 167 22
# 1970-01-03 26 172 547 1599 2858 6814 2896 1681 504 163 20
# 1970-01-04 23 178 537 1645 2855 6805 2891 1626 537 165 18
# 1970-01-05 23 139 490 1597 3028 6740 2848 1724 505 158 28
# 1970-01-06 21 134 400 1304 2266 5496 2232 1213 397 112 26
关于R : High frequency data statistical analysis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11774962/