2017-02-24 2 views
1

Dies ist mein erster Beitrag, und ich bin neu bei Python und Pandas. Ich habe daran gearbeitet, den untenstehenden Code zusammenzufassen, basierend auf vielen Fragen und Antworten, die ich auf dieser Website gesehen habe. Meine nächste Herausforderung ist die Anwendung eines Monatsend-Handelskalenders auf den unten stehenden Code, so dass die Ausgabe aus den "Adj Close" -Werten für die beiden ETFs mit der Bezeichnung "VTI und BND" besteht. Der "100mA" 100 Tage gleitende Durchschnitt muss immer noch basierend auf den letzten 100 Handelstagen berechnet werden.Anwenden eines Monatsenden-Handelskalenders auf Yahoo API-Daten

@rry Sheftel scheint etwas auf dieser Seite zu haben, die funktionieren würde, aber ich kann nicht scheinen, es mit meinem Code zu implementieren, um mir zu geben, was ich will.

Create trading holiday calendar with Pandas

Code I zusammen bisher gesetzt haben:

import datetime as dt #set start and end dates for data we are using 
import pandas as pd 
import numpy as np 
import pandas_datareader.data as web # how I grab data from Yahoo Finance API. Pandas is popular data analysis library. 

start = dt.datetime(2007,1,1) 
end = dt.datetime(2017,2,18) 

vti = web.DataReader('vti', 'yahoo',start, end)# data frame, stock ticker symbol, where getting from, start time, end time 
bnd = web.DataReader('bnd', 'yahoo', start, end) 

vti["100ma"] = vti["Adj Close"].rolling(window=100).mean() 
bnd["100ma"] = bnd["Adj Close"].rolling(window=100).mean() 

# Below I create a DataFrame consisting of the adjusted closing price of these stocks, first by making a list of these objects and using the join method 
stocks = pd.DataFrame({'VTI': vti["Adj Close"], 
         'VTI 100ma': vti["100ma"], 
         'BND': bnd["Adj Close"], 
         'BND 100ma': bnd["100ma"], 
         }) 

print (stocks.head()) 

stocks.to_csv('Stock ETFs.csv') 

Antwort

0

ich asfreq verwenden würde, um Geschäfts Monat zur Probe nach unten

import datetime as dt #set start and end dates for data we are using 
import pandas as pd 
import numpy as np 
import pandas_datareader.data as web # how I grab data from Yahoo Finance API. Pandas is popular data analysis library. 

start = dt.datetime(2007,1,1) 
end = dt.datetime(2017,2,18) 

ids = ['vti', 'bnd'] 
data = web.DataReader(ids, 'yahoo', start, end) 

ac = data['Adj Close'] 
ac.join(ac.rolling(100).mean(), rsuffix=' 100ma').asfreq('BM') 

        bnd  vti bnd 100ma vti 100ma 
Date             
2007-01-31  NaN 58.453726  NaN  NaN 
2007-02-28  NaN 57.504188  NaN  NaN 
2007-03-30  NaN 58.148760  NaN  NaN 
2007-04-30 54.632232 60.487535  NaN  NaN 
2007-05-31 54.202353 62.739991  NaN 59.207899 
2007-06-29 54.033591 61.634027  NaN 60.057136 
2007-07-31 54.531996 59.455505  NaN 60.902113 
2007-08-31 55.340892 60.330213 54.335640 61.227386 
2007-09-28 55.674840 62.650936 54.542452 61.363872 
2007-10-31 56.186500 63.773849 54.942038 61.675567 
+0

Auf den ersten Blick dachte ich, das obige Skript gearbeitet . Ich habe dann festgestellt, dass der 31.05.2010 (Memorial Day) und der 29.03.2013 (Karfreitag) ohne Daten auftauchen, wenn ich den gesamten Datumsbereich exportiert habe. Kann jemand das innerhalb des oben von piRSquared bereitgestellten Codes beheben? – clamorte001

Verwandte Themen