इंट्राडे डेटा को एकत्रित और संयोजित करना

R में वित्तीय डेटा का इम्पोर्ट और प्रबंधन

Joshua Ulrich

Quantitative Analyst & quantmod Co-Author and Maintainer

टाइमज़ोन!

1 Source: https://www.shutterstock.com/video/search/time-zone-clocks
R में वित्तीय डेटा का इम्पोर्ट और प्रबंधन

टाइमज़ोन!

  • अंदरूनी तौर पर, xts इंडेक्स UTC में 1970-01-01 की मध्यरात्रि से सेकंड होते हैं
  • merge() आंतरिक इंडेक्स का उपयोग करता है
  • merge() का परिणाम पहले ऑब्जेक्ट का टाइमज़ोन लेता है
R में वित्तीय डेटा का इम्पोर्ट और प्रबंधन

टाइमज़ोन!

datetime <- as.POSIXct("2017-01-18 10:00:00", tz = "UTC")
london <- xts(1, datetime, tzone = "Europe/London")
tokyo <- xts(1, datetime, tzone = "Asia/Tokyo")
merge(london, tokyo)
                    london tokyo
2017-01-18 10:00:00      1     1
merge(tokyo, london)
                    tokyo london
2017-01-18 19:00:00     1      1
R में वित्तीय डेटा का इम्पोर्ट और प्रबंधन

नियमित इंट्राडे डेटा बनाना

head(dc_trades)
                    Price
2016-01-16 08:00:58 20.85
2016-01-16 08:01:56 20.85
2016-01-16 08:03:35 20.85
2016-01-16 08:07:44 20.84
2016-01-16 08:45:58 20.85
2016-01-16 08:46:49 20.85
R में वित्तीय डेटा का इम्पोर्ट और प्रबंधन

नियमित इंट्राडे डेटा बनाना

datetimes <- seq(from = as.POSIXct("2016-01-16 08:00"),
                  to = as.POSIXct("2016-01-17 18:00"),
                  by = "1 min")
regular_xts <- xts(, order.by = datetimes)
merged_xts <- merge(dc_trades, regular_xts)
head(merged_xts)
                    Price
2016-01-16 08:00:00    NA
2016-01-16 08:00:58 20.85
2016-01-16 08:01:00    NA
2016-01-16 08:01:56 20.85
2016-01-16 08:02:00    NA
2016-01-16 08:03:00    NA
R में वित्तीय डेटा का इम्पोर्ट और प्रबंधन

ट्रेडिंग आवर्स तक सबसेट करें

# सभी ऑब्ज़र्वेशन NA होने चाहिए
all(is.na(merged_xts["2016-01-16 19:00/2016-01-17 07:00"]))
TRUE
# xts time-of-day सबसेटिंग
merged_trade_day <- merged_xts["T08:00/T18:00"]
# अब कोई ऑब्ज़र्वेशन नहीं हैं
nrow(merged_trade_day["2016-01-16 19:00/2016-01-17 07:00"])
0
R में वित्तीय डेटा का इम्पोर्ट और प्रबंधन

ट्रेडिंग डे के अनुसार missing वैल्यू भरें

# split() से डेटा को non-overlapping टुकड़ों की सूची में बाँटें
trade_day_list <- split(merged_trade_day, "days")
# lapply() से हर टुकड़े (सूची तत्व) पर फंक्शन लगाएँ
filled_trade_day_list <- lapply(trade_day_list, na.locf)
# do.call() और rbind() से सूची को जोड़ें
filled_trade_day <- do.call(rbind, filled_trade_day_list)
R में वित्तीय डेटा का इम्पोर्ट और प्रबंधन

अनियमित इंट्राडे डेटा एग्रीगेट करें

  • to.period() से सघन इंट्राडे डेटा एग्रीगेट करें
    • period: नई periodicity (जैसे seconds, hours, days)
    • k: नई ऑब्ज़र्वेशन प्रति पीरियड की संख्या
R में वित्तीय डेटा का इम्पोर्ट और प्रबंधन

अनियमित इंट्राडे डेटा एग्रीगेट करें (1)

head(dc_price)
                    DC.Price
2016-01-16 00:00:07 20.84224
2016-01-16 00:00:08 20.84225
2016-01-16 00:00:08 20.84225
2016-01-16 00:00:11 20.84225
2016-01-16 00:00:25 20.84224
2016-01-16 00:00:44 20.84224
R में वित्तीय डेटा का इम्पोर्ट और प्रबंधन
xts_5min <- to.period(dc_price, period = "minutes", k = 5)
head(xts_5min, n = 4)
                    dc_price.Open  dc_price.High  dc_price.Low  dc_price.Close
2016-01-16 00:03:49      20.84224       20.84227      20.84140        20.84160
2016-01-16 00:09:50      20.84160       20.84160      20.84156        20.84156
2016-01-16 00:14:57      20.84156       20.84156      20.84154        20.84154
2016-01-16 00:19:23      20.84154       20.84154      20.83206        20.83211
xts_aligned <- align.time(xts_5min, n = 60 * 5)
head(xts_aligned, n = 4)
                    dc_price.Open  dc_price.High  dc_price.Low  dc_price.Close
2016-01-16 00:05:00      20.84224       20.84227      20.84140        20.84160
2016-01-16 00:05:00      20.84160       20.84160      20.84156        20.84156
2016-01-16 00:15:00      20.84156       20.84156      20.84154        20.84154
2016-01-16 00:20:00      20.84154       20.84154      20.83206        20.83211
R में वित्तीय डेटा का इम्पोर्ट और प्रबंधन

अभ्यास करते हैं!

R में वित्तीय डेटा का इम्पोर्ट और प्रबंधन

Preparing Video For Download...