mirror of
https://github.com/Akkudoktor-EOS/EOS.git
synced 2026-07-21 01:08:12 +00:00
fix: price interpolation (#1154)
Use forward fill to interpolate time series data that represents prices: - elecprice_marketprice_wh - feed_in_tariff_wh Signed-off-by: Bobby Noelte <b0661n0e17e@gmail.com>
This commit is contained in:
@@ -153,6 +153,7 @@ async def prepare_optimization_real_parameters() -> GeneticOptimizationParameter
|
||||
key="elecprice_marketprice_wh",
|
||||
start_datetime=prediction_eos.ems_start_datetime,
|
||||
end_datetime=prediction_eos.end_datetime,
|
||||
fill_method="ffill",
|
||||
)
|
||||
print(f"strompreis_euro_pro_wh: {strompreis_euro_pro_wh}")
|
||||
|
||||
|
||||
@@ -127,11 +127,12 @@ class TestElecPriceAkkudokor:
|
||||
len(provider) == 73
|
||||
) # we have 48 datasets in the api response, we want to know 48h into the future. The data we get has already 23h into the future so we need only 25h more. 48+25=73
|
||||
|
||||
# Assert we get hours prioce values by resampling
|
||||
# Assert we get hours price values by resampling
|
||||
np_price_array = await provider.key_to_array(
|
||||
key="elecprice_marketprice_wh",
|
||||
start_datetime=provider.ems_start_datetime,
|
||||
end_datetime=provider.end_datetime,
|
||||
fill_method="ffill",
|
||||
)
|
||||
assert len(np_price_array) == provider.total_hours
|
||||
|
||||
@@ -204,6 +205,7 @@ class TestElecPriceAkkudokor:
|
||||
key="elecprice_marketprice_wh",
|
||||
start_datetime=provider.ems_start_datetime,
|
||||
end_datetime=provider.end_datetime,
|
||||
fill_method="ffill",
|
||||
)
|
||||
assert isinstance(array, np.ndarray)
|
||||
assert len(array) == provider.total_hours
|
||||
|
||||
@@ -129,6 +129,7 @@ class TestElecPriceEnergyCharts:
|
||||
key="elecprice_marketprice_wh",
|
||||
start_datetime=provider.ems_start_datetime,
|
||||
end_datetime=provider.end_datetime,
|
||||
fill_method="ffill",
|
||||
)
|
||||
assert len(np_price_array) == provider.total_hours
|
||||
|
||||
@@ -195,6 +196,7 @@ class TestElecPriceEnergyCharts:
|
||||
key="elecprice_marketprice_wh",
|
||||
start_datetime=provider.ems_start_datetime,
|
||||
end_datetime=provider.end_datetime,
|
||||
fill_method="ffill",
|
||||
)
|
||||
assert isinstance(array, np.ndarray)
|
||||
assert len(array) == provider.total_hours
|
||||
|
||||
@@ -241,7 +241,8 @@ class TestElecPriceFixed:
|
||||
hourly_array = await provider.key_to_array(
|
||||
key="elecprice_marketprice_wh",
|
||||
start_datetime=start_dt,
|
||||
end_datetime=start_dt.add(hours=24)
|
||||
end_datetime=start_dt.add(hours=24),
|
||||
fill_method="ffill",
|
||||
)
|
||||
|
||||
assert len(hourly_array) == 24
|
||||
@@ -253,7 +254,8 @@ class TestElecPriceFixed:
|
||||
key="elecprice_marketprice_wh",
|
||||
start_datetime=start_dt,
|
||||
end_datetime=start_dt.add(hours=24),
|
||||
interval="15 minutes"
|
||||
interval="15 minutes",
|
||||
fill_method="ffill",
|
||||
)
|
||||
|
||||
assert len(quarter_hour_array) == 96 # 24 * 4
|
||||
@@ -266,7 +268,8 @@ class TestElecPriceFixed:
|
||||
key="elecprice_marketprice_wh",
|
||||
start_datetime=start_dt,
|
||||
end_datetime=start_dt.add(hours=24),
|
||||
interval="30 minutes"
|
||||
interval="30 minutes",
|
||||
fill_method="ffill",
|
||||
)
|
||||
|
||||
assert len(half_hour_array) == 48 # 24 * 2
|
||||
|
||||
@@ -112,6 +112,7 @@ class TestElecPriceImport:
|
||||
start_datetime=provider.ems_start_datetime,
|
||||
end_datetime=provider.ems_start_datetime + to_duration(f"{len(expected_values)} hours"),
|
||||
interval=to_duration("1 hour"),
|
||||
fill_method="ffill",
|
||||
)
|
||||
# Allow for some difference due to value calculation on DST change
|
||||
npt.assert_allclose(result_values, expected_values, rtol=0.001)
|
||||
|
||||
Reference in New Issue
Block a user