我们可能会使用 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)
仔细检查数据后,您可能会注意到这些来源的值存在显着差异。然后我想知道每个来源当天的时间戳究竟是什么时间?看起来不是格林威治标准时间午夜。
如果你有线索,我将不胜感激。谢谢。
最佳答案
外汇是一个场外交易市场,因此没有随时设定汇率的中央交易所,但套利考虑意味着所有主要参与者(银行、对冲基金、真实货币)在任何特定时间都以大致相同的汇率定价流动市场时间(大约是美国东部标准时间周日下午 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
雅虎数据:
首先,我们看到 yahoo 返回 OHLC 数据。我可以告诉您,yahoo 提供的收盘价 (EUR.X.Close
) 对应于 UTC 午夜左右。我已经根据其他可靠(专有)的外汇报价数据定价来源对此进行了检查。
此外,您可以清楚地看到开盘价 (EUR.X.Open
) 与前一个柱线后的收盘价不同,因此我们可以得出结论,开盘价设置为在任何给定交易日 UTC 午夜结束的 24 小时内的某个任意时间窗口(高点和低点也将在此期间设置)。这只是雅虎创建栏的惯例,没有“对”或“错”之分,只是他们选择如何传播数据。
Oanda 数据:
每天美国东部标准时间下午 5 点的流动性非常差,因为这是在外汇市场支付展期利息的时间,因此这个时间通常被用作外汇交易日的结束时间。创建每日外汇数据的合理方法是假设第一个工作日从美国东部标准时间周日下午 5 点开始,到美国东部标准时间周一下午 5 点结束,第二个工作日从美国东部标准时间周一下午 5 点开始,到美国东部标准时间周二下午 5 点结束,依此类推。这每周有 5 个甚至 24 小时的交易柱.
关于相关主题,显然上述两种来源均不可用于回溯测试日间外汇策略。如果您碰巧正在寻找每日或更高频率的免费外汇数据,一些选项包括:
https://stackoverflow.com/questions/41275039/