Quickstart Guide

Get up and running with scikit-agent in minutes. This guide covers the basic concepts and shows you how to create, solve, and simulate your first economic model.

Installation

First, install scikit-agent:

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]"

Core Concepts

scikit-agent is built around several key concepts:

DBlock (Dynamic Block)

A DBlock represents a “block” of model behavior with:

  • Shocks: Random variables that affect the model

  • Dynamics: Equations describing how variables evolve

  • Controls: Decision variables that agents optimize

  • Rewards: Objective functions that agents maximize

Grid

A Grid represents discrete state spaces for numerical solutions.

Simulators

Monte Carlo simulation engines for analyzing model behavior.

Your First Model: Consumption-Saving

Let’s create a simple consumption-saving model step by step.

Step 1: Import scikit-agent

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

Step 2: Examine the Pre-built Model

The consumption block defines a standard consumption-saving problem:

print("Model dynamics:")
for var, eq in consumption_block.dynamics.items():
    print(f"  {var}: {eq}")

print("\nModel shocks:")
for shock, dist in consumption_block.shocks.items():
    print(f"  {shock}: {dist}")

Step 3: Set Up Model Parameters

# Use the default calibration or modify it
my_calibration = calibration.copy()
my_calibration.update(
    {
        "DiscFac": 0.95,  # Discount factor
        "CRRA": 2.5,  # Risk aversion
        "R": 1.04,  # Interest rate
    }
)

print("Calibration:")
for param, value in my_calibration.items():
    print(f"  {param}: {value}")

Step 4: Construct Shocks

# Build the shock distributions using calibration
consumption_block.construct_shocks(my_calibration)

Step 5: Create a Simple Decision Rule

For this example, we’ll use a simple consumption rule (consume 90% of resources):

def simple_consumption_rule(m):
    """Simple rule: consume 90% of market resources"""
    return 0.9 * m


# Wrap in the format expected by the simulator
decision_rules = {"c": simple_consumption_rule}

Step 6: Run a Simulation

# Set up initial conditions
initial_conditions = {
    "k": 1.0,  # Initial capital
    "p": 1.0,  # Initial permanent income
}

# Create simulator
simulator = ska.MonteCarloSimulator(
    calibration=my_calibration,
    block=consumption_block,
    dr=decision_rules,
    initial=initial_conditions,
    agent_count=1000,
    T_sim=50,
    seed=42,
)

# Run simulation
print("Running simulation...")
results = simulator.simulate()

print(f"Simulation completed. History keys: {list(results.keys())}")

Step 7: Analyze Results

import matplotlib.pyplot as plt

# Plot average consumption over time
if "c" in simulator.history:
    consumption_data = np.array(simulator.history["c"])
    mean_consumption = np.mean(consumption_data, axis=1)

    plt.figure(figsize=(10, 6))
    plt.plot(mean_consumption)
    plt.title("Average Consumption Over Time")
    plt.xlabel("Period")
    plt.ylabel("Consumption")
    plt.grid(True)
    plt.show()

Working with Grids

For more sophisticated solution methods, you’ll work with grids:

# Create a grid for wealth
wealth_grid_config = {"m": {"min": 0.1, "max": 10.0, "count": 50}}

wealth_grid = ska.Grid.from_config(wealth_grid_config)
print(f"Grid shape: {wealth_grid.shape()}")
print(f"First few wealth points: {wealth_grid['m'][:5]}")

Neural Network Solutions

scikit-agent supports neural network-based solution methods:

# Create a neural network policy
policy_net = ska.BlockPolicyNet(consumption_block, width=64)

print(f"Neural network input size: {policy_net.hidden1.in_features}")
print(f"Neural network output size: {policy_net.output.out_features}")

Next Steps

After completing this quickstart:

  • Learn more about models: Read the Models Guide guide to understand different model types and how to create custom models

  • Explore algorithms: Check out the Algorithms Guide guide for different solution methods including value function iteration and neural network approaches

  • Master simulation: See the Simulation Guide guide for advanced simulation techniques and analysis methods

  • Browse examples: Look at the Examples for more complex examples and use cases

Key Takeaways

  • DBlocks are the fundamental building blocks for economic models

  • Grids discretize continuous state spaces for numerical methods

  • Simulators generate synthetic data from solved models

  • Decision rules map states to optimal actions

  • The package follows scikit-learn conventions for a familiar API

You’re now ready to build more sophisticated economic models with scikit-agent!


This page is under construction. More detailed examples will be added.