scikit-agent

scikit-agent is a scientific Python toolkit for agent-based economic modeling and multi-agent systems design. It provides a unified interface for creating, solving, and simulating economic models using modern computational methods including deep reinforcement learning as well as more traditional numerical techniques.

Our goal is for scikit-agent to be for computational social scientific modeling and statistics what scikit-learn is for machine learning.

Key Features

  • Built on Scientific Python and Torch for easy integration with the Python ecosystem

  • Modular modeling system. Construct multi-agent environments from modular blocks of structural equations.

  • Solution algorithms including deep reinforcement learning methods.

  • Simulation tools for generating synthetic data and running policy experiments

Installation

pip install scikit-agent

For development installation:

git clone https://github.com/scikit-agent/scikit-agent.git
cd scikit-agent
pip install -e ".[dev,docs]"

Key references

  • Hammond, L., Fox, J., Everitt, T., Carey, R., Abate, A. and Wooldridge, M., 2023. Reasoning about causality in games. Artificial Intelligence, 320, p.103919.

  • Maliar, L., Maliar, S. and Winant, P., 2021. Deep learning for solving dynamic economic models. Journal of Monetary Economics, 122, pp.76-101.

Quick Example

import skagent as ska
from skagent.models.consumer import consumption_block, calibration

# Create a consumption-saving model
model = consumption_block
model.construct_shocks(calibration)

# Define simple decision rule
decision_rules = {"c": lambda m: 0.9 * m}

# Run simulation
simulator = ska.MonteCarloSimulator(
    calibration=calibration,
    block=model,
    dr=decision_rules,
    initial={"k": 1.0, "p": 1.0},
    agent_count=1000,
    T_sim=50,
)

results = simulator.simulate()

What Can You Build?

Consumption-Saving Models

  • Life-cycle consumption with income uncertainty

  • Precautionary saving with borrowing constraints

  • Habit formation and durable goods

Portfolio Choice Models

  • Mean-variance optimization with labor income

  • Multi-asset allocation problems

  • Portfolio constraints and transaction costs

General Equilibrium Models

  • Overlapping generations models

  • Heterogeneous agent models with aggregate shocks

  • Market clearing and equilibrium computation

Policy Analysis

  • Tax and transfer policy evaluation

  • Social Security and pension reform

  • Regulatory impact assessment

Why scikit-agent?

🧱 Modular Design

Build complex economic models using intuitive building blocks. Compose DBlocks and RBlocks to represent different stages of economic behavior with clear separation of shocks, dynamics, controls, and rewards.

🔬 Multiple Solution Methods

Choose from traditional methods like value function iteration or modern neural network approaches. All algorithms follow consistent APIs and integrate seamlessly with the model framework.

📊 Rich Simulation Engine

Generate synthetic data with sophisticated Monte Carlo simulators that handle agent heterogeneity, life-cycle dynamics, and complex stochastic processes.

🐍 Scikit-Learn Compatible

Familiar fit-predict patterns, consistent APIs, and integration with the broader Python scientific ecosystem.

Next Steps

New to scikit-agent? Start with the Quickstart Guide guide.

Want to dive deeper? Check out:

Community & Support

  • GitHub Repository: github.com/scikit-agent/scikit-agent

  • Issue Tracker: Report bugs and request features

  • Discussions: Ask questions and share examples

  • Contributing: Help improve scikit-agent for everyone


Indices and tables