def test_generator_is_stable(snapshot): # TODO Decrease sizes for i, scenario in enumerate(get_standard_scenarios(42)): snapshot.assert_match(scenario.train_signal.tolist(), f"train_signal {i}") snapshot.assert_match( np.round(scenario.test_signal, 8).tolist(), f"test_signal {i}")
def test_calculate_score(snapshot): scenarios = generation.get_standard_scenarios(2) results = [ my_solver.solve(0, s.train_signal, s.test_size, max_wave_count=1)[0] for s in scenarios ] snapshot.assert_match( evaluate.calculate_coordinator_score(scenarios, results))
def test_my_solver(): for seed in range(1, 3): for scenario_index, scenario in enumerate( generation.get_standard_scenarios(seed)): trades, _, _ = my_solver.solve(0, scenario.train_signal, scenario.test_size, scenario.sine_count) result = trade_simulator.simulate(scenario.test_signal, scenario.train_size, trades) optimal_trades = list(get_optimal_trades(scenario.test_signal)) max_result = trade_simulator.simulate(scenario.test_signal, 0, optimal_trades) quality = result / max_result # pylint: disable=line-too-long assert ( 0.93 <= quality <= 1 ), f"Seed {seed}, scenario {scenario_index}, result {result:.2f}, max {max_result:.2f}, model_parameters {scenario.model_parameters}"
def test_generator_default_sizes(): for scenario in get_standard_scenarios(None): assert scenario.train_size == 100 assert scenario.test_size == 1000 assert scenario.train_signal.shape == (scenario.train_size, ) assert scenario.test_signal.shape == (scenario.test_size, )
def test_create_challenge_input(snapshot): scenarios = generation.get_standard_scenarios(15) challenge = evaluate.create_challenge_input(scenarios) snapshot.assert_match(challenge)
# print(f"Trades: {trades}") # print(f"Optimal trades: {optimal_trades}") print() def display_scenarios(scenarios): challenge_input = evaluate.create_challenge_input(scenarios) pprint.PrettyPrinter(width=120, compact=True).pprint(challenge_input) for i, scenario in enumerate(scenarios): name = str(i + 1) print(name) simulate(name, scenario) display_scenarios(generation.get_standard_scenarios(1)) #%% import importlib from scipy.optimize import curve_fit import numpy as np import matplotlib.pyplot as plt import pprint from scipy.optimize import differential_evolution from app import generation, trade_simulator, trade_optimizer importlib.reload(generation) def test_curve_fit(): scenario = (generation.ScenarioBuilder(