quantmod货币(FX)数据的确切时间戳

时间:2016-12-22 02:44:52

标签: r currency yahoo-api quantmod

我们可以使用quantmod包收集Oanda和Yahoo finance的每日数据:

getFX("USD/JPY",from="2007-01-01", to = Sys.Date())
getSymbols("EUR=X",src="yahoo",from="2002-01-01",auto.assign=F)

仔细检查数据后,您可能会注意到这些来源的值明显不同。然后我想知道每个来源的时间戳到底是什么时候?它看起来不是格林威治标准时间午夜。

如果你有线索,我将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:2)

FX是场外交易市场,所以没有中央交易所可以随时设定利率,但套利考虑意味着所有主要参与者(银行,对冲基金,真实货币)的定价几乎都是相同的液体市场营业时间(美国东部时间周日下午5点(美国/纽约)至美国东部时间周五下午5点左右)的时间。因此,即使对于相同的时间戳,不同的来源也可以提供略微不同的定价。考虑到这一点,这里有一些最近的Oanda和Yahoo EUR/USD费率:

library(quantmod)
getFX("EUR/USD",from="2007-01-01", to = Sys.Date())
ya2 <- getSymbols("EUR=X",src="yahoo",from="2002-01-01",auto.assign=F)

# Yahoo reports the unconventional pricing of USDEUR = 1 / EURUSD, so lets get in the conventional form EUR/USD:
ya2[, c(1, 4, 6)] <- 1 / coredata(ya2)[, c(1, 4, 6)]
ya2[, c(2, 3)] <- 1 / coredata(ya2)[, c(3, 2)]

tail(ya2, 5)
# > tail(ya2, 5)
# EUR=X.Open EUR=X.High EUR=X.Low EUR=X.Close EUR=X.Volume EUR=X.Adjusted
# 2016-12-20   1.040474   1.041992  1.035518    1.040583            0       1.040583
# 2016-12-21   1.039393   1.045151  1.038529    1.039047            0       1.039047
# 2016-12-22   1.042753   1.049759  1.042753    1.042862            0       1.042862
# 2016-12-23   1.043950   1.046792  1.042970    1.043765            0       1.043765
# 2016-12-26   1.045588   1.047011  1.044600    1.045478            0       1.045478
colnames(EURUSD) <- "Oanda"
compare <- merge(ya2, EURUSD)
indexFormat(compare) <- "%Y-%m-%d, %a"

tail(round(compare, 4), 15)
# EUR.X.Open EUR.X.High EUR.X.Low EUR.X.Close EUR.X.Volume EUR.X.Adjusted  Oanda
# 2016-12-13, Tue     1.0643     1.0653    1.0607      1.0642            0         1.0642 1.0629
# 2016-12-14, Wed     1.0630     1.0667    1.0615      1.0629            0         1.0629 1.0632
# 2016-12-15, Thu     1.0515     1.0525    1.0404      1.0514            0         1.0514 1.0468
# 2016-12-16, Fri     1.0418     1.0472    1.0404      1.0419            0         1.0419 1.0435
# 2016-12-17, Sat         NA         NA        NA          NA           NA             NA 1.0451
# 2016-12-18, Sun         NA         NA        NA          NA           NA             NA 1.0451
# 2016-12-19, Mon     1.0448     1.0482    1.0413      1.0450            0         1.0450 1.0446
# 2016-12-20, Tue     1.0405     1.0420    1.0355      1.0406            0         1.0406 1.0391
# 2016-12-21, Wed     1.0394     1.0452    1.0385      1.0390            0         1.0390 1.0413
# 2016-12-22, Thu     1.0428     1.0498    1.0428      1.0429            0         1.0429 1.0443
# 2016-12-23, Fri     1.0440     1.0468    1.0430      1.0438            0         1.0438 1.0445
# 2016-12-24, Sat         NA         NA        NA          NA           NA             NA 1.0455
# 2016-12-25, Sun         NA         NA        NA          NA           NA             NA 1.0455
# 2016-12-26, Mon     1.0456     1.0470    1.0446      1.0455            0         1.0455 1.0455
# 2016-12-27, Tue         NA         NA        NA          NA           NA             NA 1.0449

雅虎数据:

  • 首先,我们看到雅虎返回OHLC数据。我可以告诉你,yahoo(EUR.X.Close)提供的收盘价大约相当于午夜UTC。我已经对其他可靠的(专有)FX tick数据定价来源进行了检查。

  • 此外,您可以清楚地看到开盘价(EUR.X.Open)与之前的收盘价不同,因此我们可以得出结论,开盘价是在24日的某个任意时间窗口设定的。在任何给定交易日结束午夜UTC的小时期间(在此期间也将设置高点和低点)。这只是雅虎的酒吧创建惯例,并不是“正确”或“错误”,只是他们选择传播数据的方式。

  • 实际上,外汇交易24/5,因此雅虎数据存在差距。

Oanda数据:

  • 注意Oanda会返回每天的价格,包括周末和公众假期,以及只有一列价值。 Oanda在时间序列中返回每天的加权平均价格。 (它不会在美国东部时间下午5点或午夜UTC返回关闭数据)。为什么这会有用呢?好吧,因为许多人想要使用每日外汇数据汇率来评估不同货币等的商业交易,而且Oanda被认为是具有可靠定价数据的可靠名称(https://www.oanda.com/fx-for-business/

每天美国东部时间下午5点流动性非常差,因为这是在外汇市场支付展期利息,因此这段时间通常用作外汇交易日的结束。创建每日外汇数据的合理方法是假设工作日从美国东部时间周日下午5点开始,到美国东部时间周一下午5点结束,工作日美国东部时间周一下午5点开始,美国东部时间周二下午5点结束。这样每周提供5个甚至24小时交易条

在相关主题上,显然上述来源均无法用于回溯测试日间外汇策略。如果您正在寻找每日或更高频率的免费外汇数据,一些选项包括:

  1. 来自http://www.truefx.com/?page=downloads
  2. 的免费汇总外汇价格数据
  3. 使用 Interactive Brokers 设置 paper 交易账户。您可以获得最多一年的OHLC历史记录,以及5,30秒,1分钟的较短时间范围内的数据(至少我最近一次检查,这是前一段时间)。
  4. DIY:与信誉良好的经纪商开立账户并自行开始存储流式传输账号