Exemple #1
0
def arima():
    """
    ARIMA (AutoRegressive Integrated Moving Average)
    :return: list of prediction
    """
    df = read_as_df("total.csv")
    train_data, test_data = df[0:int(len(df) * 0.8)], df[int(len(df) * 0.8):]
    df.head()
    plot_train_and_test(train_data, test_data, df)
    train_ar = train_data['price'].values
    test_ar = test_data['price'].values

    history = [x for x in train_ar]
    print(type(history))

    predictions = list()
    for t in range(len(test_ar)):
        model = ARIMA(history, order=(3, 1, 0))
        model_fit = model.fit(disp=0)
        output = model_fit.forecast()
        yhat = output[0]
        predictions.append(yhat)
        obs = test_ar[t]
        history.append(obs)

    plot_prediction(df, test_data, predictions)

    return predictions
Exemple #2
0
def arima_validation(predictions):
    df = read_as_df("total.csv")
    train_data, test_data = df[0:int(len(df) * 0.8)], df[int(len(df) * 0.8):]

    test_ar = test_data['price'].values
    #error = mean_squared_error(test_ar, predictions)
    #print('Testing Mean Squared Error: %.3f' % error)
    #error2 = smape(test_ar, predictions)
    #print('Symmetric mean absolute percentage error: %.3f' % error2)

    plot_validation(df, test_data, predictions)
    score = score_with_diff(test_ar.tolist(), predictions, 0.05, 0)  # 5 cents
    return score
Exemple #3
0
def earning_calculation(pred_list, fee_p):
    df = read_as_df("total.csv")
    train_data, test_data = df[0:int(len(df) * 0.8)], df[int(len(df) * 0.8):]

    train_arr = test_data['price'].values
    test_list = test_data['price'].values.tolist()

    # calculation
    baseline = np.mean(train_arr)
    inventory = 0
    earning = 0
    for i in range(len(pred_list)):
        if pred_list[i] < baseline * (1 - fee_p) and inventory < 10:
            inventory += 1
            earning -= test_list[i] * (1 + fee_p)
        elif pred_list[i] > baseline * (1 + fee_p) and 0 < inventory:
            earning += test_list[i] * (1 - fee_p)

    return earning + inventory * test_list[-1]
Exemple #4
0
def earning_calculation(pred_list: [], fee_p: float) -> float:
    df = read_as_df("total.csv")
    train_data, test_data = df[0:int(len(df) * 0.8)], df[int(len(df) * 0.8):]

    train_arr = test_data['price'].values
    test_list = test_data['price'].values.tolist()

    # calculation
    baseline = np.mean(train_arr)
    inventory = 0
    earning = 0
    total_val = 100000  # account initial values
    for i in range(len(pred_list)):
        if pred_list[i] < baseline * (1 - fee_p) and inventory < 10:
            inventory += 1
            earning -= test_list[i] * (1 + fee_p)
        elif pred_list[i] > baseline * (1 + fee_p) and inventory > 0:
            inventory -= 1
            earning += test_list[i] * (1 - fee_p)

    return earning + inventory * test_list[-1]
Exemple #5
0
 def test_write_file(self):
     unit_test_file = "unit_test.csv"
     write_as_new_file(unit_test_file, [["n1", 1], ["n2", 100]],
                       ["col1", "col2"])
     self.assertTrue(len(read_as_df(unit_test_file)) > 0)