quantmod 货币 (FX) 数据的准确时间戳
Exact time stamp on quantmod currency (FX) data
我们可以使用 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 点 (America/New_York) 到周五下午 5 点)。因此,即使对于相同的时间戳,不同的来源也可能提供略有不同的定价。考虑到这一点,以下是 EUR/USD
:
最近的一些 Oanda 和雅虎费率
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 returns OHLC数据。我可以告诉您,yahoo (EUR.X.Close
) 提供的收盘价对应于 UTC 午夜左右。我已将其与其他可靠(专有)外汇报价数据定价来源进行核对。
此外,您可以清楚地看到开盘价 (EUR.X.Open
) 与前一柱的收盘价不同,因此我们可以得出结论,开盘价是在任意时间设定的window 在任何给定交易日的世界标准时间午夜结束的 24 小时内(最高价和最低价也将在此期间设定)。这只是 Yahoo 创建栏的惯例,而不是 "right" 或 "wrong",只是他们选择传播数据的方式。
- 实际上,外汇交易全天候 24/5,因此雅虎数据中存在差距。
奥达数据:
- 通知 Oanda returns 每天的价格,包括周末和 public 节假日,并且只有一列值。 Oanda 返回时间序列中每一天的加权平均价格。 (它不会在美国东部标准时间下午 5 点或 UTC 午夜返回关闭数据)。为什么这会有用呢?好吧,因为许多人希望使用每日外汇数据汇率来评估不同货币等的商业交易,而 Oanda 被认为是具有可靠定价数据的可信赖名称 (https://www.oanda.com/fx-for-business/)
每天美国东部时间下午 5 点的流动性非常差,因为这是在外汇市场支付展期利息的时间,因此这个时间通常被用作外汇交易日的结束时间。创建每日外汇数据的合理方法是假设第一个工作日从美国东部标准时间周日下午 5 点开始,到美国东部标准时间周一下午 5 点结束,第二个工作日从美国东部标准时间周一下午 5 点开始,到美国东部标准时间周二下午 5 点结束,依此类推。这每周有 5 个甚至 24 小时的交易柱.
关于相关主题,显然上述两种来源均不可用于回测日间外汇策略。如果您碰巧正在寻找每日或更高频率的免费外汇数据,一些选项包括:
- 来自 http://www.truefx.com/?page=downloads
的免费聚合外汇报价数据
- 在 Interactive Brokers 开一个 paper 交易账户。您可以获得长达一年的 OHLC 每日滚动历史记录,以及 5 秒、30 秒、1 分钟条柱的较短时间范围内的数据(至少我上次检查是在不久前)。
- DIY:在信誉良好的经纪商处开立账户并开始自己存储流式报价
我们可以使用 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 点 (America/New_York) 到周五下午 5 点)。因此,即使对于相同的时间戳,不同的来源也可能提供略有不同的定价。考虑到这一点,以下是 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 returns OHLC数据。我可以告诉您,yahoo (
EUR.X.Close
) 提供的收盘价对应于 UTC 午夜左右。我已将其与其他可靠(专有)外汇报价数据定价来源进行核对。此外,您可以清楚地看到开盘价 (
EUR.X.Open
) 与前一柱的收盘价不同,因此我们可以得出结论,开盘价是在任意时间设定的window 在任何给定交易日的世界标准时间午夜结束的 24 小时内(最高价和最低价也将在此期间设定)。这只是 Yahoo 创建栏的惯例,而不是 "right" 或 "wrong",只是他们选择传播数据的方式。- 实际上,外汇交易全天候 24/5,因此雅虎数据中存在差距。
奥达数据:
- 通知 Oanda returns 每天的价格,包括周末和 public 节假日,并且只有一列值。 Oanda 返回时间序列中每一天的加权平均价格。 (它不会在美国东部标准时间下午 5 点或 UTC 午夜返回关闭数据)。为什么这会有用呢?好吧,因为许多人希望使用每日外汇数据汇率来评估不同货币等的商业交易,而 Oanda 被认为是具有可靠定价数据的可信赖名称 (https://www.oanda.com/fx-for-business/)
每天美国东部时间下午 5 点的流动性非常差,因为这是在外汇市场支付展期利息的时间,因此这个时间通常被用作外汇交易日的结束时间。创建每日外汇数据的合理方法是假设第一个工作日从美国东部标准时间周日下午 5 点开始,到美国东部标准时间周一下午 5 点结束,第二个工作日从美国东部标准时间周一下午 5 点开始,到美国东部标准时间周二下午 5 点结束,依此类推。这每周有 5 个甚至 24 小时的交易柱.
关于相关主题,显然上述两种来源均不可用于回测日间外汇策略。如果您碰巧正在寻找每日或更高频率的免费外汇数据,一些选项包括:
- 来自 http://www.truefx.com/?page=downloads 的免费聚合外汇报价数据
- 在 Interactive Brokers 开一个 paper 交易账户。您可以获得长达一年的 OHLC 每日滚动历史记录,以及 5 秒、30 秒、1 分钟条柱的较短时间范围内的数据(至少我上次检查是在不久前)。
- DIY:在信誉良好的经纪商处开立账户并开始自己存储流式报价