Ștampilarea exactă a timpului pentru datele privind moneda Quantmod (FX) (Programare, R, Monedă, Yahoo Api, Quantmod)

Cyril DL a intrebat.

este posibil să colectăm date zilnice de la Oanda și Yahoo finance cu quantmod pachet ca atare:

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

După ce verificați datele cu atenție, puteți observa că valorile din aceste surse sunt semnificativ diferite. Mă întreb atunci care a fost exact momentul în care a fost luată ștampila de timp a zilei pentru fiecare sursă? Nu pare să fie la miezul nopții GMT.

Aș aprecia dacă aveți un indiciu. Vă mulțumesc.

Comentarii

  • După ce am verificat documentația, am constatat că sursa de getFX și getSymbols sunt Oanda și Yahoo Finance respectiv Sper să vă fie de ajutor. –  > Por raymkchow.
1 răspunsuri
FXQuantTrader

FX este o piață OTC, deci nu există o bursă centrală care stabilește rata în orice moment, dar considerațiile de arbitraj înseamnă că toți jucătorii majori (bănci, fonduri speculative, bani reali) stabilesc prețurile la aproximativ aceleași rate în orice moment în timpul orelor de piață lichide (care este 5pm duminică EST (America / New_York) până la 5pm vineri EST aproximativ). Prin urmare, diferite surse pot oferi prețuri ușor diferite chiar și pentru aceleași date de timp. Ținând cont de acest lucru, iată câteva rate recente ale Oanda și Yahoo pentru 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

Date Yahoo:

  • În primul rând, vedem că yahoo returnează date OHLC. Pot să vă spun că prețul de închidere oferit de yahoo (EUR.X.Close) corespunde în jurul miezului nopții UTC. Am verificat acest lucru în comparație cu alte surse fiabile (proprietare) de stabilire a prețului datelor FX tick.

  • De asemenea, puteți vedea în mod clar că prețul de deschidere (EUR.X.Open) este diferit de prețul de închidere anterior, cu o bară în urmă, astfel încât putem concluziona că prețul de deschidere este stabilit la o fereastră de timp arbitrară în timpul perioadei de 24 de ore care se încheie la miezul nopții UTC în orice zi de tranzacționare (maximul și minimul ar fi, de asemenea, stabilite în această perioadă). Aceasta este doar convenția Yahoo pentru crearea barelor și nu este „corectă” sau „greșită”, ci doar modul în care Yahoo alege să difuzeze datele.

  • În realitate, FX se tranzacționează 24/5, astfel încât datele yahoo au lacune.

Datele Oanda:

  • Observați că Oanda returnează prețurile pentru fiecare zi, inclusiv pentru weekenduri și sărbători legale, și doar o singură coloană de valori. Oanda returnează un preț mediu ponderat pentru fiecare zi din seria de timp. (Nu returnează date apropiate la ora 17:00 EST sau la miezul nopții UTC). Atunci de ce ar fi util acest lucru? Ei bine, pentru că mulți oameni doresc să utilizeze ratele zilnice de date FX pentru a evalua tranzacțiile comerciale în diferite valute etc., iar Oanda este considerat un nume de încredere cu date de preț fiabile (https://www.oanda.com/fx-for-business/)

Lichiditatea este foarte slabă la ora 17:00 EST în fiecare zi, deoarece la această oră se plătește dobânda de reînnoire pe piața FX, prin urmare, această oră este adesea folosită ca final al unei zile de tranzacționare FX. O modalitate rezonabilă de a crea date zilnice FX este să presupunem că prima zi a săptămânii începe la ora 17:00 duminică EST și se termină luni la ora 17:00 EST, a doua zi a săptămânii începe luni la ora 17:00 EST și se termină marți la ora 17:00 EST etc. Acest lucru oferă 5 bare de tranzacționare egale de 24 de ore în fiecare săptămână.

Pe un subiect conex, este clar că niciuna dintre sursele de mai sus nu este utilizabilă pentru testarea inversă a strategiilor FX interjurnal. Dacă se întâmplă să căutați date FX gratuite la frecvențe zilnice sau mai mari, câteva opțiuni includ:

  1. Date FX agregate gratuite la nivel de tick de la http://www.truefx.com/?page=downloads
  2. Configurați un hârtie de tranzacționare cu Interactive Brokers. Puteți obține până la un an de istorie zilnică a OHLC, precum și date la intervale de timp mai scurte de 5, 30 de secunde, 1 minut (cel puțin ultima dată când am verificat, ceea ce a fost cu ceva timp în urmă).
  3. DIY: Deschideți un cont la un broker de renume și începeți să stocați singuri căpușele de streaming

Comentarii

  • Vă mulțumim FXQuantTrader! –  > Por Cyril DL.
  • Ați menționat că Oanda returnează un preț mediu ponderat pentru fiecare zi din seria de timp. Știți cum se face această ponderare? –  > Por Cyril DL.
  • Pentru datele Oanda: „Noi obținem cursul OANDA, care reprezintă o medie zilnică la vedere din mai multe surse diferite, inclusiv platforma de tranzacționare fxTrade a OANDA și instituțiile financiare. Datele noastre sursă trec printr-un algoritm care detectează și filtrează anomaliile, cum ar fi vârfurile de curs, iar apoi încărcăm cursurile noastre la ora 22:00, ora New York-ului.” –  > Por Cyril DL.
  • @Cyril DL Da, oanda.com/currency/help/how-to-read-currency-conversion-results. –  > Por FXQuantTrader.
  • Puteți obține chiar și datele minuțioase. Vă rugăm să consultați quantmod.com/examples/data pentru mai multe informații. –  > Por RYO ENG Lian Hu.