def __update_from_symbolic__(self): import numpy # updates calibration according to the symbolic definitions system = self.symbolic.calibration_dict from dolo.compiler.triangular_solver import solve_triangular_system self.calibration_dict = solve_triangular_system( system ) from dolo.compiler.misc import calibration_to_vector self.calibration = calibration_to_vector(self.symbols, self.calibration_dict) from symbolic_eval import NumericEval evaluator = NumericEval(self.calibration_dict) # read symbolic structure covariances = evaluator.eval(self.symbolic.covariances) if covariances is None: self.covariances = covariances else: self.covariances = numpy.atleast_2d(numpy.array(covariances, dtype=float)) markov_chain = evaluator.eval(self.symbolic.markov_chain) if markov_chain is None: self.markov_chain = None else: self.markov_chain = [numpy.atleast_2d(numpy.array(tab, dtype=float)) for tab in markov_chain] self.options = evaluator.eval(self.symbolic.options)
def __update_from_symbolic__(self): import numpy # updates calibration according to the symbolic definitions system = self.symbolic.calibration_dict from dolo.compiler.triangular_solver import solve_triangular_system self.calibration_dict = solve_triangular_system( system ) from dolo.compiler.misc import CalibrationDict, calibration_to_vector calib = calibration_to_vector(self.symbols, self.calibration_dict) self.calibration = CalibrationDict(self.symbols, calib) from .symbolic_eval import NumericEval evaluator = NumericEval(self.calibration_dict) # read symbolic structure self.options = evaluator.eval(self.symbolic.options) distribution = evaluator.eval(self.symbolic.distribution) discrete_transition = evaluator.eval(self.symbolic.discrete_transition) covariances = distribution if distribution is None: self.covariances = None else: self.covariances = numpy.atleast_2d(numpy.array(covariances, dtype=float)) markov_chain = discrete_transition if markov_chain is None: self.markov_chain = None else: self.markov_chain = [numpy.atleast_2d(numpy.array(tab, dtype=float)) for tab in markov_chain]
def calibration(self): if self.__calibration__ is None: calibration_dict = super(self.__class__, self).get_calibration() from dolo.compiler.misc import CalibrationDict, calibration_to_vector calib = calibration_to_vector(self.symbols, calibration_dict) self.__calibration__ = CalibrationDict(self.symbols, calib) # return self.__calibration__
def __update_from_symbolic__(self): import numpy # updates calibration according to the symbolic definitions system = self.symbolic.calibration_dict from dolo.compiler.triangular_solver import solve_triangular_system self.calibration_dict = solve_triangular_system(system) from dolo.compiler.misc import CalibrationDict, calibration_to_vector calib = calibration_to_vector(self.symbols, self.calibration_dict) self.calibration = CalibrationDict(self.symbols, calib) from .symbolic_eval import NumericEval evaluator = NumericEval(self.calibration_dict) # read symbolic structure self.options = evaluator.eval(self.symbolic.options) self.exogenous = self.get_exogenous() self.domain = self.get_domain()
def __update_from_symbolic__(self): import numpy # updates calibration according to the symbolic definitions system = self.symbolic.calibration_dict from dolo.compiler.triangular_solver import solve_triangular_system self.calibration_dict = solve_triangular_system( system ) from dolo.compiler.misc import CalibrationDict, calibration_to_vector calib = calibration_to_vector(self.symbols, self.calibration_dict) self.calibration = CalibrationDict(self.symbols, calib) from .symbolic_eval import NumericEval evaluator = NumericEval(self.calibration_dict) # read symbolic structure self.options = evaluator.eval(self.symbolic.options) # # distribution = evaluator.eval(self.symbolic.options.get('distribution')) # discrete_transition = evaluator.eval(self.symbolic.options.get('discrete_transition')) distribution = self.options.get('distribution') discrete_transition = self.options.get('discrete_transition') self.distribution = distribution self.discrete_transition = discrete_transition if distribution is None: self.covariances = None else: self.covariances = numpy.atleast_2d(numpy.array(distribution.sigma, dtype=float)) markov_chain = discrete_transition if markov_chain is None: self.markov_chain = None else: markov_chain = [markov_chain.P, markov_chain.Q] self.markov_chain = [numpy.atleast_2d(numpy.array(tab, dtype=float)) for tab in markov_chain]
def calibration(self): if self.__calibration__ is None: calibration_dict = self.__get_calibration__() calib = calibration_to_vector(self.symbols, calibration_dict) self.__calibration__ = CalibrationDict(self.symbols, calib) # return self.__calibration__
z="zbar", rk="1/β-1+δ", w="(1-α)*exp(z)*(k/n)**(α)", k="n/(rk/α)**(1/(1-α))", y="exp(z)*k**α*n**(1-α)", i="δ*k", c="y - i", V="log(c)/(1-β)", u="c**(1-σ)/(1-σ) - χ*n**(1+η)/(1+η)", m="β/c**σ*(1-δ+rk)") from dolang.triangular_solver import solve_triangular_system calibration_dict = solve_triangular_system(calibration_strings) calibration_vector = calibration_to_vector(symbols, calibration_dict) calibration = CalibrationDict(symbols, calibration_vector) calibration ### ### Define functions ### # the basic formulation of the functions (aka kernel) # take and return "tuples" of floats because tuples are supposed # to be easy to be optimzed away by the compiler # after the definition of the function, there is some boilerplate # to translate these functions into broadcastable ones, with # optional numerical differentiation capabilities