1.4 Dolo translation and open points¶
This section covers the mapping from dolo-plus blocks to vanilla Dolo dtcc/EGM blocks (for "horse" translation), plus open semantic issues.
1.4.1 Mapping to Dolo dtcc/EGM blocks (horse translation target)¶
The dolo-plus blocks are designed to map onto standard dtcc/EGM blocks that vanilla Dolo already knows how to compile and solve. For movers, the mapping is most naturally stated at the level of sub-equations (because Dolo collapses "shadow carry-back" into the expectation + direct_response_egm pair).
| dolo-plus canonical | dolo-plus sub-equation | dolo-plus equation (as written) | Dolo horse equation (as written) | Maps to Dolo |
|---|---|---|---|---|
| \(\mathrm{g}_{\prec\sim}\) | — | w = exp(y) + b[<]*r |
w[t] = exp(y[t]) + a[t-1]*r |
half_transition |
| \(\mathrm{g}_{\sim\succ}\) | — | a[>] = w - c |
a[t] = w[t] - c[t] |
auxiliary_direct_egm |
| \(\mathrm{g}_{\sim\succ}^{-1}\) | — | w = a[>] + c |
w[t] = a[t] + c[t] |
reverse_state |
| \(\mathbb{B}\) | InvEuler |
c[>] = (β*dV[>])^(-1/γ) |
c[t] = (mr[t])^(-1/γ) |
direct_response_egm |
| \(\mathbb{B}\) | ShadowBellman |
dV = (c)^(-γ) |
mr[t] = β*(c[t+1])^(-γ)*r |
expectation (RHS / integrand) |
| \(\mathbb{I}\) | ShadowBellman |
dV[<] = r * E_y(dV) |
mr[t] = β*(c[t+1])^(-γ)*r (expectation performed algorithmically by the expectation block) |
expectation (LHS / output) |
| \(\mathbb{B}\) | Bellman |
V = max_c{(c^(1-γ))/(1-γ) + β*V[>]} |
— | (implicit in dtcc/EGM; not explicit in horse YAML) |
| \(\mathbb{I}\) | Bellman |
V[<] = E_y(V) |
— | (implicit in dtcc/EGM; not explicit in horse YAML) |
Note on factor placement (v0.1): in the horse, the "expected marginal value" object mr typically already includes discount/return factors (e.g. mr[t] = β*(c[t+1])^(-γ)*r). In dolo-plus, we split these across sub-equations: dV (at the decision perch) is the marginal-utility integrand, r appears in \(\mathbb{I}\)[ShadowBellman], and β is applied in \(\mathbb{B}\)[InvEuler] via β*dV[>] (with dV[>] linked to dV[<] across stages).
Open point (does not block v0.1):
- how to represent the "shock signature" canonically. Current direction: shocks are recorded as edge events in
information_timing; once observed, they expand the information statex[·]at the next perch. We do not assign shocks their own slot-indexed state variables.
1.4.2 Other considerations¶
1.4.2.1 Open semantic point (keep explicit)¶
To make the "ShadowBellman" equations fully rigorous in T core (formerly “DDSL-CORE”), we must pin down:
- what
dV[slot]differentiates with respect to (which canonical state slot), and - where chain-rule factors (like
r) belong (in the mover vs in the transition composition).
1.4.2.2 Underlying structure of the model (how functions are implied)¶
The dolo-plus surface syntax is not functional notation, but it implies functional objects once a solution method is chosen:
cbecomes a policy function object (a decision rule)V[slot]becomes a perch value-function objectdV[slot]becomes a perch marginal-value object
Exactly how these objects are constructed/evaluated is method-dependent and will be made explicit in T core / semantic directives. The purpose of the dolo-plus YAML is to provide a clean, modular, perch-aware representation that can be methodized later.