Heterogeneous agent model