2017-08-22 2 views
0

zu ziehen, bin ich ein kompletter Anfänger. Dies war eine Aufgabe und das Ziel ist es, eine For-Schleife zu erstellen, um tägliche Aktienrenditen für jeden dieser Aktien ab 2012 bis heute zu ziehen.Mit quant-Paket mit R, um tägliche Aktienrenditen mit einer For-Schleife

Ich könnte die Renditen für jedes Jahr einzeln erhalten, indem ich einfach diese Jahre ziehe, aber ich bin mir nicht sicher, wie man eine For-Schleife erstellt. Ich habe versucht, einen zu erstellen, konnte ihn aber nur durch Wiederholung des Codes für jedes Jahr zum Laufen bringen.

Der Code unten ist, was ich begann, um diese Jahre zu ziehen, aber dann würde ich es für jedes Jahr danach wiederholen. Mein Prozess schien völlig überflüssig und ineffizient.

MSFT = Microsoft

GOOG = Google

AAPL = Apple Inc.

FB = Facebook Inc.

X = United States Steel Inc.

SBUX = Starbucks Inc.

TGT = Zielgeschäfte Inc.

DNKN = Dunkin' Donuts

library(quantmod) 
setwd("C:/TEMP") 

Microsoft

MSFT1 <- getSymbols("MSFT", auto.assign = FALSE) 

MFSFT2012 <- MSFT1$MSFT.Close['2012'] 
MFSFT2012 

Google

GOOG1 <- getSymbols("GOOG", auto.assign = FALSE) 
GOOG2012 <- GOOG1$GOOG.Close['2012'] 
GOOG2012 

APPLE

AAPL1 <- getSymbols("AAPL", auto.assign = FALSE) 
AAPL2012 <- AAPL1$AAPL.Close['2012'] 
AAPL2012 

F acebook

FB1 <- getSymbols("FB", auto.assign = FALSE) 
FB2012 <- FB1$FB.Close['2012'] 
FB2012 

US Steel

XSTEEL1 <- getSymbols("X", auto.assign = FALSE) 
XSTEEL12012 <- XSTEEL1$X.Close['2012'] 
XSTEEL12012 

Starbucks

SBUX1 <- getSymbols("SBUX", auto.assign = FALSE) 
SBUX12012 <- SBUX1$SBUX.Close['2012'] 
SBUX12012 

Ziel

TGT1 <- getSymbols("TGT", auto.assign = FALSE) 
TGT12012 <- TGT1$TGT.Close['2012'] 
TGT12012 

Dunkin Donuts

DNKN1 <- getSymbols("DNKN", auto.assign = FALSE) 
DNKN12012 <- DNKN1$DNKN.Close['2012'] 
DNKN12012 
+0

Sie brauchen keine for-Schleife, um dies zu tun. – AK88

Antwort

2

Ich kann diese Lösung vorschlagen, aber hier brauchen Sie nicht wirklich eine for-Schleife.

Ich nahm als Beispiel Microsoft

#zoo and xts are need to allows quantmod library to work (I got an error message from R... 
library(zoo) 
library(xts) 
library(quantmod) 

MFSFT <- NULL 
    for(i in 2012:2017){ 
     MSFT1 <- getSymbols("MSFT", auto.assign = FALSE) 
     MFSFT2012 <- MSFT1$MSFT.Close[as.character(i),] 
     MFSFT <- rbind(MFSFT, MFSFT2012) 
    } 

Ihr Ergebnis wird wie folgt aussehen

head(MFSFT) 
       MSFT.Close 
2012-01-03  26.77 
2012-01-04  27.40 
2012-01-05  27.68 
2012-01-06  28.11 
2012-01-09  27.74 
2012-01-10  27.84 

Allerdings, wenn Sie einen für Zyklus wollen in wenige Linie direkt in der ganzen Lager zu gehen, Sie kann es so machen

Stocks <- c("MSFT", "GOOG", "AAPL", "FB", "X", "SBUX", "TGT", "DNKN") 
Daily_Stock <- NULL 
for(i in Stocks){ 
    df1 <- getSymbols(i, auto.assign = FALSE) 
    Close <- df1[as.character(2012:2017),4] 
    Daily_Stock <- cbind(Daily_Stock, Close) 
} 

Und du wirst Ich bekomme so etwas

head(Daily_Stock) 

       MSFT.Close GOOG.Close AAPL.Close FB.Close X.Close SBUX.Close TGT.Close DNKN.Close 
2012-01-03  26.77 331.4626 58.74714  NA 28.17  22.645  51.12  24.74 
2012-01-04  27.40 332.8922 59.06286  NA 28.44  23.085  50.00  24.73 
2012-01-05  27.68 328.2745 59.71857  NA 27.79  23.180  48.51  25.17 
2012-01-06  28.11 323.7963 60.34286  NA 27.30  23.360  48.95  25.47 
2012-01-09  27.74 310.0678 60.24714  NA 26.78  23.295  48.57  25.21 
2012-01-10  27.84 310.4065 60.46286  NA 27.29  23.410  48.79  25.42 
Verwandte Themen