diff --git a/extreme_fit/distribution/exp_params.py b/extreme_fit/distribution/exp_params.py
new file mode 100644
index 0000000000000000000000000000000000000000..6a003ee2dc47a68ba556bb7eabeec447fef5b8df
--- /dev/null
+++ b/extreme_fit/distribution/exp_params.py
@@ -0,0 +1,9 @@
+from extreme_fit.distribution.abstract_params import AbstractParams
+
+
+class ExpParams(object):
+    PARAM_NAMES = [AbstractParams.SCALE]
+
+    def __init__(self, scale: float):
+        self.scale = scale
+
diff --git a/extreme_fit/model/margin_model/linear_margin_model/linear_margin_model.py b/extreme_fit/model/margin_model/linear_margin_model/linear_margin_model.py
index 11fcb150533bc145d363c1dc27b37b6d0bd54849..08ac9900978dcd4ff333dfeb2ddd8515c05ec8ec 100644
--- a/extreme_fit/model/margin_model/linear_margin_model/linear_margin_model.py
+++ b/extreme_fit/model/margin_model/linear_margin_model/linear_margin_model.py
@@ -9,9 +9,9 @@ class LinearMarginModel(ParametricMarginModel):
     @classmethod
     def from_coef_list(cls, coordinates, gev_param_name_to_coef_list, **kwargs):
         params = {}
-        for gev_param_name in GevParams.PARAM_NAMES:
-            for idx, coef in enumerate(gev_param_name_to_coef_list[gev_param_name], -1):
-                params[(gev_param_name, idx)] = coef
+        for param_name, coef_list in gev_param_name_to_coef_list.items():
+            for idx, coef in enumerate(coef_list, -1):
+                params[(param_name, idx)] = coef
         return cls(coordinates, params_sample=params, params_start_fit=params, **kwargs)
 
     def load_margin_functions(self, gev_param_name_to_dims=None):
diff --git a/projects/quantile_regression_vs_evt/__init__.py b/projects/quantile_regression_vs_evt/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/projects/quantile_regression_vs_evt/annual_maxima_simulation/__init__.py b/projects/quantile_regression_vs_evt/annual_maxima_simulation/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/projects/quantile_regression_vs_evt/annual_maxima_simulation/abstract_annual_maxima_simulation.py b/projects/quantile_regression_vs_evt/annual_maxima_simulation/abstract_annual_maxima_simulation.py
new file mode 100644
index 0000000000000000000000000000000000000000..74b35ea041f05e3989515155f1adf626cffa2267
--- /dev/null
+++ b/projects/quantile_regression_vs_evt/annual_maxima_simulation/abstract_annual_maxima_simulation.py
@@ -0,0 +1,45 @@
+from collections import OrderedDict
+from typing import List, Dict
+
+import numpy as np
+from cached_property import cached_property
+
+from extreme_fit.estimator.quantile_estimator.abstract_quantile_estimator import AbstractQuantileEstimator
+from extreme_fit.model.margin_model.abstract_margin_model import AbstractMarginModel
+from projects.quantile_regression_vs_evt.AbstractSimulation import AbstractSimulation
+from spatio_temporal_dataset.spatio_temporal_observations.abstract_spatio_temporal_observations import \
+    AbstractSpatioTemporalObservations
+
+
+class AnnualMaximaSimulation(AbstractSimulation):
+
+    @property
+    def observations_class(self):
+        raise NotImplementedError
+
+    @cached_property
+    def time_series_lengths_to_margin_model(self) -> Dict[int, AbstractMarginModel]:
+        d = OrderedDict()
+        for length in self.time_series_lengths:
+            coordinates = self.time_series_length_to_coordinates[length]
+            d[length] = self.create_model(coordinates)
+        return d
+
+    def create_model(self, coordinates):
+        raise NotImplementedError
+
+    def generate_all_observation(self, nb_time_series, length) -> List[AbstractSpatioTemporalObservations]:
+        coordinates = self.time_series_length_to_coordinates[length]
+        margin_model = self.time_series_lengths_to_margin_model[length]
+        return [self.observations_class.from_sampling(nb_obs=1, coordinates=coordinates, margin_model=margin_model)
+                for _ in range(nb_time_series)]
+
+    def compute_errors(self, length: int, estimators: List[AbstractQuantileEstimator]):
+        coordinates = self.time_series_length_to_coordinates[length]
+        last_coordinate = coordinates.coordinates_values()[-1]
+        # Compute true value
+        margin_model = self.time_series_lengths_to_margin_model[length]
+        true_quantile = margin_model.margin_function_sample.get_gev_params(last_coordinate).quantile(self.quantile)
+        # Compute estimated values
+        estimated_quantiles = [estimator.function_from_fit.get_quantile(last_coordinate) for estimator in estimators]
+        return 100 * np.abs(np.array(estimated_quantiles) - true_quantile) / true_quantile
diff --git a/projects/quantile_regression_vs_evt/annual_maxima_simulation/daily_exp_simulation.py b/projects/quantile_regression_vs_evt/annual_maxima_simulation/daily_exp_simulation.py
new file mode 100644
index 0000000000000000000000000000000000000000..fd6ee11f7d64733a9a049fe3003911c1230dd7e3
--- /dev/null
+++ b/projects/quantile_regression_vs_evt/annual_maxima_simulation/daily_exp_simulation.py
@@ -0,0 +1,26 @@
+from extreme_fit.distribution.gev.gev_params import GevParams
+from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear_margin_model import \
+    TemporalMarginFitMethod
+from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel
+from projects.quantile_regression_vs_evt.annual_maxima_simulation.abstract_annual_maxima_simulation import \
+    AnnualMaximaSimulation
+from spatio_temporal_dataset.spatio_temporal_observations.annual_maxima_observations import DailyExpAnnualMaxima
+
+
+class DailyExpSimulation(AnnualMaximaSimulation):
+
+    @property
+    def observations_class(self):
+        return DailyExpAnnualMaxima
+
+
+class StationaryExpSimulation(DailyExpSimulation):
+
+    def create_model(self, coordinates):
+        gev_param_name_to_coef_list = {
+            GevParams.SCALE: [1],
+        }
+        return StationaryTemporalModel.from_coef_list(coordinates, gev_param_name_to_coef_list,
+                                                      fit_method=TemporalMarginFitMethod.extremes_fevd_mle)
+
+
diff --git a/projects/quantile_regression_vs_evt/GevSimulation.py b/projects/quantile_regression_vs_evt/annual_maxima_simulation/gev_simulation.py
similarity index 61%
rename from projects/quantile_regression_vs_evt/GevSimulation.py
rename to projects/quantile_regression_vs_evt/annual_maxima_simulation/gev_simulation.py
index b14b36e7ed76232864f473b7822491f689b80c9f..decc48180c287cefc131069b5032a7f50acf3a5d 100644
--- a/projects/quantile_regression_vs_evt/GevSimulation.py
+++ b/projects/quantile_regression_vs_evt/annual_maxima_simulation/gev_simulation.py
@@ -12,40 +12,20 @@ from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear
 from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel, \
     NonStationaryLocationTemporalModel
 from projects.quantile_regression_vs_evt.AbstractSimulation import AbstractSimulation
+from projects.quantile_regression_vs_evt.annual_maxima_simulation.abstract_annual_maxima_simulation import \
+    AnnualMaximaSimulation
 from spatio_temporal_dataset.spatio_temporal_observations.abstract_spatio_temporal_observations import \
     AbstractSpatioTemporalObservations
 from spatio_temporal_dataset.spatio_temporal_observations.annual_maxima_observations import MarginAnnualMaxima
 
 
-class GevSimulation(AbstractSimulation):
 
-    @cached_property
-    def time_series_lengths_to_margin_model(self) -> Dict[int, AbstractMarginModel]:
-        d = OrderedDict()
-        for length in self.time_series_lengths:
-            coordinates = self.time_series_length_to_coordinates[length]
-            d[length] = self.create_model(coordinates)
-        return d
 
-    def create_model(self, coordinates):
-        raise NotImplementedError
-
-    def generate_all_observation(self, nb_time_series, length) -> List[AbstractSpatioTemporalObservations]:
-        coordinates = self.time_series_length_to_coordinates[length]
-        margin_model = self.time_series_lengths_to_margin_model[length]
-        return [MarginAnnualMaxima.from_sampling(nb_obs=1, coordinates=coordinates, margin_model=margin_model)
-                for _ in range(nb_time_series)]
-
-    def compute_errors(self, length: int, estimators: List[AbstractQuantileEstimator]):
-        coordinates = self.time_series_length_to_coordinates[length]
-        last_coordinate = coordinates.coordinates_values()[-1]
-        # Compute true value
-        margin_model = self.time_series_lengths_to_margin_model[length]
-        true_quantile = margin_model.margin_function_sample.get_gev_params(last_coordinate).quantile(self.quantile)
-        # Compute estimated values
-        estimated_quantiles = [estimator.function_from_fit.get_quantile(last_coordinate) for estimator in estimators]
-        return 100 * np.abs(np.array(estimated_quantiles) - true_quantile) / true_quantile
+class GevSimulation(AnnualMaximaSimulation):
 
+    @property
+    def observations_class(self):
+        return MarginAnnualMaxima
 
 class StationarySimulation(GevSimulation):
 
diff --git a/projects/quantile_regression_vs_evt/main_quantile_regression.py b/projects/quantile_regression_vs_evt/main_quantile_regression.py
index 6618762a113cd2871a4185e3ca72ff36631d6011..b163ad3d3755dbb154483412e27c8a2d2bd0ebab 100644
--- a/projects/quantile_regression_vs_evt/main_quantile_regression.py
+++ b/projects/quantile_regression_vs_evt/main_quantile_regression.py
@@ -1,13 +1,10 @@
-from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel, \
+from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \
     NonStationaryLocationTemporalModel, NonStationaryLocationGumbelModel
-from extreme_fit.model.quantile_model.quantile_regression_model import ConstantQuantileRegressionModel, \
-    TemporalCoordinatesQuantileRegressionModel
-from projects.quantile_regression_vs_evt.GevSimulation import StationarySimulation, \
+from extreme_fit.model.quantile_model.quantile_regression_model import TemporalCoordinatesQuantileRegressionModel
+from projects.quantile_regression_vs_evt.annual_maxima_simulation.gev_simulation import \
     NonStationaryLocationGumbelSimulation, NonStationaryLocationGevSimulation
 from spatio_temporal_dataset.coordinates.transformed_coordinates.transformation.abstract_transformation import \
     CenteredScaledNormalization, IdentityTransformation
-from spatio_temporal_dataset.coordinates.transformed_coordinates.transformation.uniform_normalization import \
-    BetweenZeroAndOneNormalization
 
 nb_time_series = 10
 quantile = 0.98
diff --git a/spatio_temporal_dataset/spatio_temporal_observations/annual_maxima_observations.py b/spatio_temporal_dataset/spatio_temporal_observations/annual_maxima_observations.py
index 7c21358ee4df511ac52867c7f3e7a18f9ed8cfd9..9347416514b947b57fd729e9b548ecd0d9e72e67 100644
--- a/spatio_temporal_dataset/spatio_temporal_observations/annual_maxima_observations.py
+++ b/spatio_temporal_dataset/spatio_temporal_observations/annual_maxima_observations.py
@@ -30,6 +30,22 @@ class MarginAnnualMaxima(AnnualMaxima):
         return cls(df_maxima_gev=df_maxima_gev)
 
 
+class DailyExpAnnualMaxima(AnnualMaxima):
+
+    @classmethod
+    def from_sampling(cls, nb_obs: int, coordinates: AbstractCoordinates,
+                      margin_model: AbstractMarginModel):
+        pass
+
+
+class DailyExp(AbstractSpatioTemporalObservations):
+
+    @classmethod
+    def from_sampling(cls, nb_obs: int, coordinates: AbstractCoordinates,
+                      margin_model: AbstractMarginModel):
+        pass
+
+
 class MaxStableAnnualMaxima(AnnualMaxima):
 
     @classmethod
diff --git a/test/test_projects/test_quantile_regression/test_gev_simulations.py b/test/test_projects/test_quantile_regression/test_annual_maxima_simulations.py
similarity index 63%
rename from test/test_projects/test_quantile_regression/test_gev_simulations.py
rename to test/test_projects/test_quantile_regression/test_annual_maxima_simulations.py
index b18321f374896254d32f6c56a7b1d473a6c95fd0..ab3de724a72c1fb392e3905d9ea38d8576402510 100644
--- a/test/test_projects/test_quantile_regression/test_gev_simulations.py
+++ b/test/test_projects/test_quantile_regression/test_annual_maxima_simulations.py
@@ -4,7 +4,8 @@ from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_m
     NonStationaryLocationTemporalModel
 from extreme_fit.model.quantile_model.quantile_regression_model import ConstantQuantileRegressionModel, \
     TemporalCoordinatesQuantileRegressionModel
-from projects.quantile_regression_vs_evt.GevSimulation import GevSimulation, StationarySimulation, \
+from projects.quantile_regression_vs_evt.annual_maxima_simulation.daily_exp_simulation import StationaryExpSimulation
+from projects.quantile_regression_vs_evt.annual_maxima_simulation.gev_simulation import StationarySimulation, \
     NonStationaryLocationGumbelSimulation
 
 
@@ -19,9 +20,18 @@ class TestGevSimulations(unittest.TestCase):
     def test_non_stationary_run(self):
         simulation = NonStationaryLocationGumbelSimulation(nb_time_series=1, quantile=0.5, time_series_lengths=[50, 60],
                                                            model_classes=[NonStationaryLocationTemporalModel,
-                                                                    TemporalCoordinatesQuantileRegressionModel])
+                                                                          TemporalCoordinatesQuantileRegressionModel])
         simulation.plot_error_for_last_year_quantile(self.DISPLAY)
 
 
+# class TestExpSimulations(unittest.TestCase):
+#     DISPLAY = True
+#
+#     def test_stationary_run(self):
+#         simulation = StationaryExpSimulation(nb_time_series=1, quantile=0.5, time_series_lengths=[50, 60],
+#                                              model_classes=[StationaryTemporalModel, ConstantQuantileRegressionModel])
+#         simulation.plot_error_for_last_year_quantile(self.DISPLAY)
+
+
 if __name__ == '__main__':
     unittest.main()