mirror of
https://github.com/webclinic017/drift.git
synced 2026-08-14 19:38:09 +00:00
feat(Core): ensemble models, correct forward returns calculation, scaling, only train from when asset returns are available, major bug fixed in walk_forward_train_test (#35)
* fix(Core): correct forward returns calculation, classifiers are now working again, only train from when asset returns are available * feat(Utils): added get_first_valid_return_index() * feat(Ensemble): return models from `run_whole_pipeline` * feat(Ensemble): added ensemble step, fixed walk_forward_train_test predictions index confusion, * chore(Pipeline): remove unnecessary extra ensemble results dataframe * refactor(Core): removed unnecessary ensemble_train_predict, moved run_single_asset_trainig_pipeline to a separate file * feat(Training): added scaling on expanding window (the past) to walk_forward_train_test(), now printing out mean sharpe ratio * feat(CI): added environment.yml file * chore(Environment): update env.yml * feat(CI): added testing workflow * fix(CI): renamed enviroment.yml * fix(Tests): added missing new parameter to walk_forward_train_test()
This commit is contained in:
@@ -1,20 +1,21 @@
|
||||
import pytest
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
from utils.walk_forward import walk_forward_train_test
|
||||
from training.walk_forward import walk_forward_train_test
|
||||
from sklearn.base import BaseEstimator
|
||||
|
||||
def __generate_test_data():
|
||||
no_of_rows = 100
|
||||
|
||||
def __generate_test_data(no_of_rows):
|
||||
no_columns = 6
|
||||
no_rows = 100
|
||||
X = [[row] * no_columns for row in range(no_rows)]
|
||||
X = [[row] * no_columns for row in range(no_of_rows)]
|
||||
assert X[0][0] == 0
|
||||
assert X[1][0] == 1
|
||||
assert X[2][0] == 2
|
||||
assert X[3][0] == 3
|
||||
X = pd.DataFrame(X)
|
||||
|
||||
y = [row+1 for row in range(no_rows)]
|
||||
y = [row+1 for row in range(no_of_rows)]
|
||||
assert y[0] == 1
|
||||
assert y[1] == 2
|
||||
assert y[2] == 3
|
||||
@@ -24,7 +25,7 @@ def __generate_test_data():
|
||||
|
||||
|
||||
def test_walk_forward_train_test():
|
||||
X, y = __generate_test_data()
|
||||
X, y = __generate_test_data(no_of_rows)
|
||||
|
||||
window_length = 10
|
||||
class StubModel(BaseEstimator):
|
||||
@@ -38,4 +39,16 @@ def test_walk_forward_train_test():
|
||||
return np.array([X[0][0] + 1])
|
||||
|
||||
model = StubModel()
|
||||
walk_forward_train_test('test', model, X, y, window_length, 10)
|
||||
scaler = None
|
||||
models, predictions = walk_forward_train_test(
|
||||
model_name='test',
|
||||
model=model,
|
||||
X=X,
|
||||
y=y,
|
||||
target_returns=y,
|
||||
window_size=window_length,
|
||||
retrain_every=10,
|
||||
scaler=scaler)
|
||||
for i in range(window_length, no_of_rows):
|
||||
predictions[i] == y[i]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user