コード例 #1
0
def main():
    symbols = ['AAPL', 'MSFT', 'BRK-A']
    # Specifically chosen to include the AAPL split on June 9, 2014.
    for symbol in symbols:
        data = DataReader(
            symbol,
            'yahoo',
            start='2014-03-01',
            end='2014-09-01',
        )
        data.rename(
            columns={
                'Open': 'open',
                'High': 'high',
                'Low': 'low',
                'Close': 'close',
                'Volume': 'volume',
            },
            inplace=True,
        )
        del data['Adj Close']

        dest = join(here, symbol + '.csv')
        print("Writing %s -> %s" % (symbol, dest))
        data.to_csv(dest, index_label='day')
コード例 #2
0
def main():
    symbols = ["AAPL", "MSFT", "BRK-A"]
    # Specifically chosen to include the AAPL split on June 9, 2014.
    for symbol in symbols:
        data = DataReader(
            symbol,
            "yahoo",
            start="2014-03-01",
            end="2014-09-01",
        )
        data.rename(
            columns={
                "Open": "open",
                "High": "high",
                "Low": "low",
                "Close": "close",
                "Volume": "volume",
            },
            inplace=True,
        )
        del data["Adj Close"]

        dest = join(here, symbol + ".csv")
        print("Writing %s -> %s" % (symbol, dest))
        data.to_csv(dest, index_label="day")
コード例 #3
0
    def get(self, symbol, asset_type=None, **kwargs):
        """
        Get the latest data for the specified symbol
        """
        if not asset_type:
            logger.error("No asset_type argument set")
            raise Exception("asset_type must be set")

        if asset_type == "F":
            symbol = symbol.replace("/", "") + "=X"

        try:
            df = DataReader(symbol, "yahoo", start="1950-01-01", **kwargs)
        except (RemoteDataError, KeyError):
            logger.error(f"Symbol {symbol} not found")
            raise SymbolNotFound(symbol)

        df = (df.rename(
            columns={
                "Open": "open",
                "High": "high",
                "Low": "low",
                "Close": "close",
                "Volume": "volume",
                "Adj Close": "adj_close"
            }).sort_index())

        df = (df[["adj_close"]].rename({"adj_close": "close"}, axis=1))

        return df
コード例 #4
0
def yahoo_prices(symbols, start_date, verbose = True):
    ticker_df_list = []
    start_dates = {};
    for index, row in symbols.iterrows(): 
        try:
            data = DataReader(row.Ticker, 'yahoo', start_date)
            data['Ref'] = row.Ticker 
            data = data.loc[:, ['Ref', 'Adj Close']]
            data.rename(columns={'Adj Close': 'Price'}, inplace=True)
            if verbose:
                print("{}: Historical Perf: {}".format(row.Ticker, data.tail(1).iloc[0]['Price']/data.head(1).iloc[0]['Price']-1))            
            ticker_df_list.append(data)
            start_dates[row.Ticker] = data.head(1).index[0]
        except Exception as e:
            if verbose:
                print("No data for ticker %s\n%s" % (row.Ticker, str(e)))    
    df = pd.concat(ticker_df_list)   
    cell= df[['Ref','Price']] 
    return cell.pivot(columns='Ref'), start_dates
コード例 #5
0
ファイル: yafin.py プロジェクト: antogranell/index_calculator
def get_adtv(symbols, startdate, enddate):
    """Returns pricing/volume table field timeseries
    fields used 'Close', 'Volume'
    """
    if type(symbols) == str:
        symbols = [symbols]
    data = []
    for symbol in symbols:
        try:
            df = DataReader(symbol, 'yahoo', startdate,
                            enddate)[['Close', 'Volume']]
            df['adtv'] = df['Close'] * df['Volume']
            df.rename(columns={'adtv': symbol}, inplace=True)
            df = df[symbol]
        except:
            df = pd.DataFrame(np.nan,
                              index=pd.bdate_range(startdate, enddate),
                              columns=[symbol])
        data.append(df)
    df = pd.concat(data, axis=1)
    df = pd.DataFrame(df.apply(np.mean, axis=0), columns=['adtv'])
    df['Ticker'] = df.index
    return df.reset_index(drop=True)
コード例 #6
0
def download_stock(symbol, start_date=dt.datetime(1990, 1, 1)):
    # Download assets.
    stock = DataReader(symbol, "yahoo", start_date)
    stock.rename(columns={"Adj Close": "Adj. Close"}, inplace=True)
    # Compute the adjusted prices.
    ratio = stock["Adj. Close"] / stock["Close"]
    stock["Adj. Open"] = stock["Open"] * ratio
    stock["Adj. High"] = stock["High"] * ratio
    stock["Adj. Low"] = stock["Low"] * ratio
    stock["Adj. Volume"] = stock["Volume"] * ratio
    stock["Split Ratio"] = 1.0
    stock["Ex-Dividend"] = 0.0

    # Fetch the dividends and splits for this stock. Notice that we restrict the
    # dates to lie in the appropriate range.
    ds = download_splits_dividends(symbol)

    # Store dividend data.
    if "DIVIDEND" in ds.index:
        divs = ds.ix[["DIVIDEND"]].set_index("datetime")
        idx = divs.index.intersection(stock.index)
        stock.ix[idx, "Ex-Dividend"] = [
            float(x) for x in divs.ix[idx, "adjustment"]
        ]

    # Store stock split data.
    if "SPLIT" in ds.index:
        splits = ds.ix[["SPLIT"]].set_index("datetime")
        splits["adjustment"] = [
            float(x.split(":")[0]) / float(x.split(":")[1])
            for x in splits["adjustment"]
        ]
        idx = splits.index.intersection(stock.index)
        stock.ix[idx, "Split Ratio"] = splits.ix[idx, "adjustment"]

    return stock
コード例 #7
0
import pandas as pd
import matplotlib.pyplot as plt
from pandas_datareader.data import DataReader
from datetime import date

start = date(1900,1,1) # default Jan 1, 2010
series_code = 'DGS10'  # 10-year Treasury Rate
data_source = 'fred'  # FED Economic Data Service

data = DataReader(series_code, data_source, start)
data.info()
pd.concat([data.head(3), data.tail(3)])

series_name = '10-year Treasury'
data = data.rename(columns={series_code: series_name})
data.plot(title=series_name)
plt.show()
コード例 #8
0
#companies = pdconn.read_table('companies')
#cursor = pdconn.execute('select ticker from company c left join industry i on c.industry = i.industry where sector = "Healthcare"')
cursor = pdconn.execute('select ticker from company')
companies = cursor.fetchall()

start_date = '1985-01-01'
#start_date = '2016-01-01'
end_date = '2016-05-10'

#companies is a list of tuples
for co in companies:
    co = co[0]
    if co in done: continue
    done.append(co)
    print("Fetching data for " + co)
    #fetch data from yahoo as pandas dataframe
    try:
        ts = DataReader(co, 'yahoo', start=start_date, end=end_date)
    except:
        print('Could not read data for ' + co)
        continue
    ts.rename(columns={'Adj Close': 'AdjClose'}, inplace=True)
    # AdjClose values sometimes get extremely large, causing out of bounds errors.  Limit those values here.
    if max(ts['AdjClose']) > 9.99e5:
        ts.loc[ts.AdjClose > 9.99e5, 'AdjClose'] = 9.99e5
    ts.insert(0, 'ticker', co)  #add ticker to dataframe
    ts = ts.round(decimals=2)
    pdconn.to_sql(ts, 'histPrice', if_exists='append')
    time.sleep(random.randint(1, 5))