Skip to content

Releases: ito-haru/econox

v0.1.4

Choose a tag to compare

@ito-haru ito-haru released this 05 Jul 09:54
f250be2

What's Changed

  • Feat: enhance fixed point by @ito-haru in #28
  • Feat: add clipping and scaling factor to terminal value approximators by @ito-haru in #29
  • Fix: vcov parameter ordering by @ito-haru in #30
  • Refactor: Move estimation logic from Estimator into methods by @ito-haru in #31
  • Fix: restrict trend terminal approximators to exogenous growth only by @ito-haru in #32
  • Fix: correct docstrings that misdescribe actual field behavior by @ito-haru in #33
  • Release v0.1.4 by @ito-haru in #34

Full Changelog: v0.1.3...v0.1.4

v0.1.3

Choose a tag to compare

@ito-haru ito-haru released this 17 Jan 03:02
75392a7

Econox v0.1.3 Release Notes

This release focuses on expanding the practical utility of the framework for policy analysis and improving the robustness of the inference engine. Key highlights include the introduction of a formal counterfactual simulation workflow, support for terminal value function approximators, and critical fixes for variance-covariance estimation.

✨ New Features

Counterfactual Simulation & Policy Evaluation

  • Workflow Integration: Introduced a dedicated workflow for counterfactual simulation, allowing researchers to evaluate the impact of policy changes (e.g., changes in infrastructure, taxes, or costs) within the estimated structural model.
  • Simulator Class: A new entry point in econox.workflow that simplifies the process of generating synthetic data and evaluating alternative scenarios using estimated parameters.

Terminal Value Function Approximators

  • Added support for Terminal Value Function Approximators. This is particularly useful for models with finite horizons or specific steady-state assumptions where the value in the final period needs to be explicitly modeled or approximated.

🛠 Improvements & Refactoring

Inference and IO Refactor

  • Standardized IO: Refactored the Input/Output (IO) logic to provide a more consistent interface for saving and loading model states, parameters, and estimation results.
  • Inference Engine: Internal cleanup of the inference modules to improve compatibility with JAX's transformation primitives and prepare for more advanced diagnostic tools.

Benchmark Enhancements

  • Updated the Replication & Scalability Benchmark. The benchmark now features a more rigorous comparison between NumPy (Numerical Differentiation) and Econox (Auto-Differentiation/GPU), ensuring honest comparisons by unifying iteration steps and convergence criteria.

🐛 Bug Fixes

Variance Computation

  • Resolved a critical issue where a parameter mask shape mismatch occurred during variance-covariance matrix computation. This ensures that standard errors are correctly calculated even when a subset of parameters is fixed or constrained.

General Fixes

  • Updated benchmark scripts to accurately reflect the performance gains from JAX’s JIT compilation and hardware acceleration.

Full Changelog: v0.1.2...v0.1.3

v0.1.2

Choose a tag to compare

@ito-haru ito-haru released this 17 Dec 06:42
ac63214

Econox v0.1.2 Release Notes

This release brings a significant architectural refactor to improve the flexibility and modularity of the framework. Key updates include a redesigned solver architecture, enhanced feedback mechanisms for general equilibrium models, and new utilities to simplify user-defined functions.

⚠️ Breaking Changes

Solver Initialization API Changes

The initialization signature for EquilibriumSolver has been updated. You must now explicitly provide the core components—inner_solver, feedback, and dynamics—during instantiation.

Decoupled Estimator and Solver

The Estimator no longer accepts configuration arguments for the solver. Instead, it expects a fully configured Solver instance to be passed explicitly. This separates the responsibility of estimation from model solving.

  • Change: Instantiate your solver (e.g., ValueIterationSolver) with all necessary settings and pass it to the Estimator constructor.
# Previous (Implicit configuration)
# solver = ValueIterationSolver(discount_factor=0.95, ...)
# estimator = Estimator(..., solver=solver, utility=utility, dist=dist)

# New (Explicit dependency injection)
solver = ValueIterationSolver(utility=utility, dist=dist, discount_factor=0.95, ...)
estimator = Estimator(..., solver=solver)

Feedback Definition Changes

Due to the refactoring of the feedback mechanism, previous methods for defining feedback loops are deprecated or removed. Please use the new @function_feedback or @model_feedback decorators.

✨ New Features

Simplified Utility Definitions

  • @utility Decorator: Introduced a new decorator to easily convert user-defined functions into Utility protocol-compliant modules.
  • FunctionUtility: Added a wrapper class that allows any callable to be used directly as a utility component.

Flexible Feedback Mechanisms

  • New Feedback Decorators:

    • @function_feedback: A lightweight decorator for updating specific variables (e.g., wages) in the model data.
    • @model_feedback: A powerful decorator for defining complex feedback loops that require updating the entire StructuralModel.
  • CompositeFeedback: Added a container class to chain multiple feedback mechanisms sequentially, allowing for multi-step updates within a single iteration.

🛠 Refactoring & Architecture

Overhauled Solver Architecture

Explicit Solver Composition: Both EquilibriumSolver and ValueIterationSolver have been refactored to require their specific logic components to be explicitly passed during initialization.

  • For ValueIterationSolver, you now inject utility and distribution modules directly.

  • For EquilibriumSolver, you compose the solver by passing inner_solver, feedback, and dynamics. This shift to dependency injection makes the model structure more transparent and modular.

📚 Documentation

  • API Reference: Improved docstrings and added examples for key components.

Full Changelog: v0.1.1...v0.1.2

v0.1.1: First Public Alpha Release

Choose a tag to compare

@ito-haru ito-haru released this 11 Dec 23:56
4c845a1

v0.1.1: First Public Alpha Release

🚀 Overview

This is the first official public alpha release of Econox, a JAX-based library for structural modeling and estimation in economics.

Note: This release supersedes v0.1.0, fixing a build configuration issue regarding versioning. Please use v0.1.1 for all new installations.

✨ Key Features

This release establishes the foundational architecture of Econox:

  • Core Interfaces: Defined protocols for StructuralModel, Utility, Solver, and Estimator to ensure modularity.
  • Model Abstraction: Implemented JAX/Equinox-based containers for defining economic environments.
  • Solvers:
    • ValueIterationSolver: For dynamic programming problems.
    • EquilibriumSolver: For finding fixed-point equilibrium distributions.
  • Estimation Tools:
    • Numerical: Maximum Likelihood Estimation (MLE), Method of Moments.
    • Analytical: OLS and 2SLS estimators with support for fixed parameters.
  • Workflow: Automated documentation and release pipelines (CI/CD).

🛠️ Fixes & Improvements

  • Build System: Updated pyproject.toml configuration for setuptools_scm. The version scheme now strictly respects git tags (no-guess-dev), preventing accidental stable releases from pre-release tags.
  • Documentation: Updated README.md and CITATION.cff to reflect the correct version and citation information.

📦 Installation

You can install the latest version via pip:

pip install econox

⚠️ Disclaimer

The API is currently experimental and subject to breaking changes. While we strive for accuracy, this is an early alpha release; please verify results before using them in production or research.