Skip to content

EEP draft Conventions about Time

Sebastian Benthall edited this page May 31, 2023 · 4 revisions

EEP N — Conventions about Time

  • Author: Sebastian Benthall @sbenthall
  • Status: Draft

Abstract

The abstract should be a short description of what the EEP will achieve.

Motivation and Scope

Settling on terminology and notation about time would give HARK more consistency and rigor across models.

Ideally there would be:

  • An unambiguous correct usage for each term about time used
  • Each term has a clear notation for expression in code and in LaTeX math

Usage and Impact

This section describes how users of Econ-ARK will use features described in this EEP. It should be comprised mainly of code examples that wouldn’t be possible without acceptance and implementation of this EEP, as well as the impact the proposed changes would have on the ecosystem.

TBD

SB: The scope of this EEP is not the entirety of DARK; how can we incrementally change HARK to conform to new conventions about time?

Backward compatibility

This section describes the ways in which the EEP breaks backward compatibility.

Currently:

  • HARK: Infinite horizon models; lifecycle models; 'cyclic' time-varying models. Time-varying parameters given as list; indexed by t.
  • NARK: $T$ used for terminal period (even in an infinite horizon model!). $t$ used ubiquitously for an individual agent's model.
  • HARK: 'age' is tracked in a simulation and interacts with birth and mortality mechanisms. It increments ones per 'period', and is used to index into the time-varying solution object.

Detailed description

This section should provide a detailed description of the proposed change. It should include examples of how the new functionality would be used, intended use-cases and pseudo-code illustrating its use.

TBD

Related Work

This section should list relevant and/or similar technologies, possibly in other libraries. It does not need to be comprehensive, just list the major examples of prior and relevant art.

  • NetLogo's tick counter. link

Implementation

This section lists the major steps required to implement the EEP. Where possible, it should be noted where one step is dependent on another, and which steps may be optionally omitted. Where it makes sense, each step should include a link to related pull requests as the implementation progresses.

TBD

Alternatives

Proposals

Age

CDC: We try to use "age" (and not "time") as the default temporal nominative for IndShockConsumerType models

So that Mateo's recent merge would have said he was adding a test for proper treatment of locations of parameters across ages

Date

CDC: We use "date" for the thing needed for macro models

e.g. "the central bank will raise rates at a date 5 quarters in the future" in text

Period

CDC:

  • only "transition" blocks are allowed to interact with multiple different periods
  • Even "transition blocks" have only the right to connect adjacent periods
  • That is, a "transition" cannot reference something that is two periods in the future or past
  • A period can include several stages

SB:

  • Period. Contains stages and steps, and one tick at the 'end'.

Stage

CDC: Each stage can have a sequence of "moves" (or "operations", or some other nontemporal word)

SB:

  • Stages. Can contain multiple steps.

step

CDC: We use "step" to keep track of where we are in a sequence of calculations conceptualized as happening simultaneously

SB:

  • Steps. An atom of computation
    • Optimization
    • Expectations over shocks
    • Transitions. In the sense of computing the next state values from states, shocks and actions.

time

CDC: We deprecate the use of the word "time" altogether until we are used to using these other words for disambiguating everything

SB: replace 'time' with 'tick', referring still to $t$.

Nonce

CDC: We consider a "nonce" as a freely available temporal indicator that we have not used yet (:->)

Discussion

This section may just be a bullet list including links to any discussions regarding the EEP:

References and Footnotes