Example #1
0
def get_normalized_train_dataset_xy_for_rsi(df, steps_in, steps_out):
    # normalize (windowed approach) data
    scaler = MinMaxScaler(feature_range=(0, 1))
    df = normalize_window(df, "u_rsi-14", "p_in_rsi", scaler)

    # add normalized input data to dataframe as normalized output data
    df = talib.copy_column(df, "p_in_rsi", "p_out_rsi")

    # use exponential smoothing to remove noise from the normalized input data (helps to reduce training loss)
    # NOTE: helps to make predictions more precise (needs further testing)...
    df = exponential_smooth(df, "p_in_rsi", "p_in_rsi_exp", gamma=0.1)

    # convert to [rows, columns] structure
    in_values = df["p_in_rsi_exp"].values
    out_values = df["p_out_rsi"].values
    in_values = in_values.reshape((len(in_values), 1))
    out_values = out_values.reshape((len(out_values), 1))

    # horizontally stack columns
    sequences = np.hstack((in_values, out_values))

    # create dataset
    x, y = create_dataset_xy_shift(sequences, steps_in, steps_out)

    return df, sequences, x, y, scaler
Example #2
0
def get_normalized_test_dataset_xy_for_macd_signal(df, steps_in, steps_out,
                                                   scaler):
    # normalize (non-windowed approach) data using specified scaler
    df = normalize_transform(df, "u_macd_signal-12-26-9", "p_in_macd_signal",
                             scaler)

    # add normalized input data to dataframe as normalized output data
    df = talib.copy_column(df, "p_in_macd_signal", "p_out_macd_signal")

    # use exponential smoothing to remove noise from the normalized input data (helps to reduce training loss)
    # NOTE: helps to make predictions more precise (needs further testing)...
    df = exponential_smooth(df,
                            "p_in_macd_signal",
                            "p_in_macd_signal_exp",
                            gamma=0.1)

    # convert to [rows, columns] structure
    in_values = df["p_in_macd_signal_exp"].values
    out_values = df["p_out_macd_signal"].values
    in_values = in_values.reshape((len(in_values), 1))
    out_values = out_values.reshape((len(out_values), 1))

    # horizontally stack columns
    sequences = np.hstack((in_values, out_values))

    # create dataset
    x, y = create_dataset_xy_shift(sequences, steps_in, steps_out)

    return df, sequences, x, y
Example #3
0
def process_equities(symbols, start_date, end_date, reader, model_dir, db_dir,
                     db_perf_dir, db_predict_dir, plot_predict, plot_ta):
    """
    :param symbols: list of equity symbols to fetch, compute and plot
    :param start_date: earliest date to fetch
    :param end_date: latest date to fetch
    :param reader: data reader (e.g. yahoo, stooq, etc.)
    :param model_dir: directory location containing model for prediction
    :param db_dir: directory location to save processed dataframe
    :param db_perf_dir: directory location to save performance dataframe
    :param db_predict_dir: directory location to save future prediction dataframe
    :param plot_predict: true = plot prediction charts, false = do not plot prediction charts
    :param plot_ta: true = plot TA charts, false = do not plot TA charts
    :return:
    """
    plotter_predict = PAPlot(c.CHART_PREDICT_DIR)
    plotter_ta = TAPlot(c.CHART_TA_DIR)
    for symbol in symbols:
        symbol_name = symbol
        # load data
        df = reader.load(symbol, start_date, end_date, symbol_name)
        # use 'Adj Close' as our close price
        df = talib.copy_column(df, "Adj Close", c.CLOSE)
        # compute ta
        df = compute_ta(df)
        # compute performance
        df_perf = compute_perf(df, symbol_name)
        # compute prediction
        df, df_predict = predict_all(df, symbol_name, model_dir, plot_predict,
                                     plotter_predict)
        # save all
        save_all(symbol_name, df, df_perf, df_predict, db_dir, db_perf_dir,
                 db_predict_dir)
        # plot TA charts
        plot_ta_charts(symbol_name, df, plot_ta, plotter_ta)
Example #4
0
def process_equities(symbols, start_date, end_date, reader, db_dir, plot_ta):
    """
    :param symbols: list of equity symbols to fetch, compute and plot
    :param start_date: earliest date to fetch
    :param end_date: latest date to fetch
    :param reader: data reader (e.g. yahoo, stooq, etc.)
    :param db_dir: directory location to save processed dataframe
    :param plot_ta: true = plot TA charts, false = do not plot TA charts
    :return:
    """
    df_all = {}
    df_perf_all = pd.DataFrame()
    plotter_ta = TAPlot(c.CHART_TA_DIR)
    for symbol in symbols:
        symbol_name = symbol
        # load data
        df = reader.load(symbol, start_date, end_date, symbol_name)
        # use 'Adj Close' as our close price
        df = talib.copy_column(df, "Adj Close", c.CLOSE)
        # compute all
        df, df_perf = compute_all(df, symbol_name)
        # aggregate symbol dataframes
        df_all[symbol] = df
        df_perf_all = df_perf_all.append(df_perf, ignore_index=True)
        # plot TA charts
        #plot_ta_charts(symbol_name, df, plot_ta, plotter_ta)

    # analyze
    analyze(df_all, df_perf_all)
Example #5
0
def process_equities(symbols, start_date, end_date, model_dir):
    """
    :param symbols: list of equity symbols to fetch, predict and plot
    :param start_date: earliest date to fetch
    :param end_date: latest date to fetch
    :param model_dir: location to save model
    :return:
    """
    data_reader = YahooDataReader()
    plotter = PAPlot(c.CHART_TRAIN_DIR)
    for symbol in symbols:
        symbol_name = symbol
        # load data
        df = data_reader.load(symbol, start_date, end_date, symbol_name)
        # use 'Adj Close' as our close price
        df = talib.copy_column(df, "Adj Close", c.CLOSE)
        # train and plot all
        train_all(df, symbol, symbol_name, model_dir, plotter)
Example #6
0
def process_indices(symbols, start_date, end_date, model_dir):
    """
    :param symbols: list of index symbols to fetch, predict and plot
    :param start_date: earliest date to fetch
    :param end_date: latest date to fetch
    :param model_dir: location to save model
    :return:
    """
    data_reader = StooqDataReader()
    plotter = PAPlot(c.CHART_TRAIN_DIR)
    for symbol in symbols:
        symbol_name = symbol[1:]  # strip off the ^ character
        # load data
        df = data_reader.load(symbol, start_date, end_date, symbol_name)
        # use 'Close' (no adjusted close for indices) as our close price
        df = talib.copy_column(df, "Close", c.CLOSE)
        # train and plot all
        train_all(df, symbol, symbol_name, model_dir, plotter)