Ejemplo n.º 1
0
    def _sample_poisson_process(self, n=None, length=None):
        """Generate a realization of a Poisson process.

        Generate a poisson process sample up to count of length if time=False,
        otherwise generate a sample up to time t=length if time=True
        """
        if n is not None:
            check_positive_integer(n)

            exponentials = self.rng.exponential(scale=1.0 / self.rate, size=n)

            s = np.array([0] + list(np.cumsum(exponentials)))
            return s
        elif length is not None:
            check_positive_number(length, "Sample length")

            t = 0
            times = [0]
            exp_rate = 1.0 / self.rate

            while t < length:
                t += self.rng.exponential(scale=exp_rate)
                times.append(t)

            return np.array(times)
        else:
            raise ValueError("Must provide either argument n or length.")
Ejemplo n.º 2
0
def test_check_positive_number(positive_number_fixture,
                               parameter_name_fixture):
    if positive_number_fixture <= 0:
        with pytest.raises(ValueError):
            check_positive_number(positive_number_fixture,
                                  parameter_name_fixture)
    else:
        assert check_positive_number(positive_number_fixture,
                                     parameter_name_fixture) is None
    def _sample_geometric_brownian_motion(self, n, initial=1.0):
        """Generate a realization of geometric Brownian motion."""
        check_positive_integer(n)
        check_positive_number(initial, "Initial")

        # Opt for repeated use
        if self._n != n:
            self._n = n
            self._line = generate_times(self.drift - self.volatility**2 / 2.0,
                                        n)

        noise = self.volatility * self._brownian_motion.sample(n)

        return initial * np.exp(self._line + noise)
Ejemplo n.º 4
0
 def scale(self, value):
     check_positive_number(value, "Scale")
     self._scale = value
Ejemplo n.º 5
0
 def t(self, value):
     check_positive_number(value, "Time end")
     self._t = float(value)
 def volatility(self, value):
     check_positive_number(value, "Volatility")
     self._volatility = value
Ejemplo n.º 7
0
 def variance(self, value):
     check_positive_number(value, "Variance")
     self._variance = value
Ejemplo n.º 8
0
 def rate(self, value):
     check_positive_number(value, "Rate parameter")
     self._rate = value
Ejemplo n.º 9
0
 def mean(self, value):
     check_positive_number(value, "Mean parameter")
     self._mean = float(value)
Ejemplo n.º 10
0
 def alpha(self, value):
     check_positive_number(value)
     self._alpha = value