示例#1
0
    def get_data(symbol, start_date=datetime(year=2015, month=1, day=1)):

        data = DataReader(symbol, 'yahoo', start_date).reset_index()
        data['Daily_Returns'] = data['Adj Close'].pct_change()
        data['Daily_Log_Returns'] = np.log(data['Adj Close']) - np.log(
            data['Adj Close'].shift(1))
        data.drop(data.index[:1], inplace=True)
        data.columns = StockDataDownloader.COLUMNS
        return data
示例#2
0
 def get_web_data(self, symbol, src, start_date, end_date=None):
     try:
         stk_df = DataReader(symbol, src, start=start_date, end=end_date)
         stk_df.rename(columns={'Adj. Close': 'Close'}, inplace=True)
         stk_df.drop(['Adj Close'], axis=1, inplace=True)
         stk_df['Source'] = src
         stk_df['Symbol'] = symbol
         with sqlite3.connect(self.db_path) as con:
             stk_df.to_sql('Prices', con, if_exists='append')
         return stk_df
     except Exception as e:
         raise Exception, '[+] get_web_data Error - {}'.format(e)
示例#3
0
def create_stockdir():
    with open("Stocks.csv") as file:
        reader = csv.reader(file)
        header = next(reader)
        if header != None:
            for row in reader:
                stock = row[1]
                df = DataReader(stock,
                                data_source="yahoo",
                                start="2011-01-01",
                                end=datetime.now())
                df.drop(["Adj Close"], axis=1)
                df.to_csv(path + f"\{stock}.csv")
示例#4
0
import pandas as pd
from pandas_datareader import DataReader
import matplotlib.pyplot as plt
from pylab import rcParams
import yahoo_fin.stock_info as si

start = dt.datetime(1980, 12, 1)
now = dt.datetime.now()
stock = input('enter a ticker: ')

while stock != 'quit':
    price = si.get_live_price(stock)

    df = DataReader(stock, 'yahoo', start, now)

    df.drop(df[df["Volume"] < 1000].index, inplace=True)

    dfmonth = df.groupby(pd.Grouper(freq="M"))["High"].max()

    glDate = 0
    lastGLV = 0
    currentDate = ""
    curentGLV = 0
    for index, value in dfmonth.items():
        if value > curentGLV:
            curentGLV = value
            currentDate = index
            counter = 0
        if value < curentGLV:
            counter = counter + 1
from sklearn.ensemble import RandomForestRegressor, BaggingRegressor, GradientBoostingRegressor, AdaBoostRegressor
from sklearn.neighbors import KNeighborsRegressor
from sklearn.neural_network import MLPRegressor
import matplotlib.pyplot as plt
from pandas_datareader import DataReader
import datetime as dt

num_of_years = 40
start = dt.datetime.now() - dt.timedelta(int(365.25 * num_of_years))
now = dt.datetime.now()
ticker = 'MSFT'

df = DataReader(ticker, 'yahoo', start, now)

df['Close'] = df['Adj Close']
df = df.drop("Adj Close", axis=1)

for sma_period in [5, 10, 20, 50, 100, 200]:
    indicator_name = "SMA_%d" % (sma_period)
    df[indicator_name] = df['Close'].rolling(sma_period).mean()

# # Adding Bollinger bands
df['BollingerBand_Up_20_2'] = df['Close'].rolling(
    20).mean() + 2 * df['Close'].rolling(20).std()
df['BollingerBand_Down_20_2'] = df['Close'].rolling(
    20).mean() - 2 * df['Close'].rolling(20).std()
df['BollingerBand_Up_20_1'] = df['Close'].rolling(
    20).mean() + df['Close'].rolling(20).std()
df['BollingerBand_Down_20_1'] = df['Close'].rolling(
    20).mean() - df['Close'].rolling(20).std()
df['BollingerBand_Up_10_1'] = df['Close'].rolling(
示例#6
0
                df['obvPos'].iloc[row] = 1
            else:
                df['obvPos'].iloc[row] = -1

            if (df['CCI'].iloc[row] > 0):
                df['cciPos'].iloc[row] = 1
            else:
                df['cciPos'].iloc[row] = -1

        # Clean up dataframe
        frame = pd.DataFrame()
        frame['PC'] = df['Adj Close'].pct_change()
        db = df.copy()
        df = df.drop(columns=[
            'Open', 'High', 'Low', 'Close', 'Adj Close', 'Volume',
            'upper_band', 'lower_band', 'middle_band', 'lower_band', 'macd',
            'macdsignal', 'macdhist', 'RSI', 'Momentum', 'Z-Score', 'SMA',
            'EMA', 'OBV', 'CCI'
        ])
        df['pos'] = df.mean(axis=1)
        df['PC'] = frame['PC']

        db = db.reset_index()
        db['Buy'] = np.where((df['pos'] < 0.7), 1, 0)
        db['Sell'] = np.where((df['pos'] < -0.3), 1, 0)

        db['Buy_ind'] = np.where((db['Buy'] > db['Buy'].shift(1)), 1, 0)
        db['Sell_ind'] = np.where((db['Sell'] > db['Sell'].shift(1)), 1, 0)

        plt.gcf()
        plt.subplots()
        plt.rcParams['figure.figsize'] = (15, 10)
示例#7
0
import seaborn as sns 
import matplotlib.pyplot as plt
from pandas_datareader import DataReader
import datetime as datetime
from matplotlib.colors import ListedColormap

pd.set_option('display.max_columns', None)

start_date = datetime.datetime.now() - datetime.timedelta(days=3)
end_date = datetime.date.today() 
stocks = ['AAPL', 'MSFT', 'GOOGL', 'AMZN', 'FB', 'WMT', 'COST', 'NFLX', 'TSLA', 'SBUX', 'TGT', 'GM', 'GE', 'NIO', 'NKE', 'AXP']

df = DataReader(stocks, 'yahoo', start_date, end_date)['Close']

df = df.reset_index()
df = df.drop(['Date'], axis=1)

dataframe = df.pct_change()
dataframe.index = ['Nothing', 'Change']
dataframe = dataframe.drop(['Nothing'])
dataframe = dataframe.transpose()
print (dataframe)

dataframe = dataframe.reset_index()

Yrows = [1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4]
Xcols = [1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4]

dataframe['Yrows'] = Yrows
dataframe['Xcols'] = Xcols
#pd.set_option("display.max_columns", None)
#pd.set_option("display.max_rows", 50)

stock = "AAPL"
start_date = datetime.datetime.now() - datetime.timedelta(days=365)
end_date = datetime.date.today()

df = DataReader(stock, "yahoo", start_date, end_date)

rows = df.values.tolist()

forecast_out = 30
df['Prediction'] = df[['Close']].shift(-forecast_out)

X = np.array(df.drop(['Prediction'], 1))

X = X[:-forecast_out]

y = np.array(df['Prediction'])
Y = y[:-forecast_out]

x_train, x_test, y_train, y_test = train_test_split(
    X, Y, test_size=0.2)  # split training and test data

# Convert lists into numpy arrays
x_train = np.array(x_train)
y_train = np.array(y_train)
x_test = np.array(x_test)
y_test = np.array(y_test)