sanity check
ClearAll[y, yd, td, cd, hs, cs, gs, ts, hh, dHs, dHh];
eqns = {y[t] == cs[t] + gs[t],dHs[t] == hs[t] - hs[t - 1],dHh[t] == hh[t] - hh[t - 1],cs[t] == cd[t],gs[t] == gd[t],ts[t] == td[t],cd[t] == c1 * yd[t] + c2 * hh[t - 1],td[t] == \[Theta] * y[t - 1],yd[t] == y[t] - \[Theta] * y[t - 1],y[0] == 0, cs[0] == 0,yd[0] == 0, hh[0] == 0,hs[0] == 0, td[0] == 0, gs[0] == 0,gs[1] == g };(*all your recurrences*)
vars = {y, yd, td, cd, hs, cs, gs, ts, hh, dHs, dHh};
init = {y[0] == 0, cs[0] == 0, yd[0] == 0, hh[0] == 0, hs[0] == 0, td[0] == 0, gs[0] == 0, dHh[0] == 0, gs[1] == 20};
RecurrenceTable[Join[eqns, init], vars, {t, 1, 10}]
Still gives -
There are more dependent variables than equations, so the system is
underdetermined.
So I rewrote it, think I got it correct (, but hope it helps).
ClearAll[y, taxes, yd, c, h, hg, g];
Manipulate[
Module[{sim},
sim =
RecurrenceTable[{
g[t] == Piecewise[{{g1, t <= switchTime}, {g2, t > switchTime}}],
taxes[t] == taxRate y[t],
yd[t] == y[t] - taxes[t],
c[t] == income yd[t] + wealth h[t - 1],
y[t] == c[t] + g[t],
h[t] == h[t - 1] + yd[t] - c[t],
hg[t] == hg[t - 1] + g[t] - taxes[t],
h[0] == 0,
hg[0] == 0},
{y, c, yd, taxes, h, hg, g},
{t, 1, periods}];
ListLinePlot[
sim[[All, #]] & /@ {1, 2, 5, 7},
PlotLegends -> {"y", "c", "h", "g"},
PlotRange -> All,
AxesLabel -> {"Time", "Value"},
ImageSize -> Large]]
, {{g1, 20, "initial g"}, 1, 30, 1, Appearance -> "Labeled"},
{{g2, 30, "new g"}, 1, 50, 1, Appearance -> "Labeled"},
{{taxRate, 0.2, "tax rate \[Theta]"}, 0., 1., 0.05,
Appearance -> "Labeled"},
{{income, 0.6, "income \[Alpha]1"}, 0., 0.99, 0.05,
Appearance -> "Labeled"},
{{wealth, 0.4, "wealth \[Alpha]2"}, 0., 1., 0.05,
Appearance -> "Labeled"},
{{switchTime, 20, "switch time"}, 1, 49, 1,
Appearance -> "Labeled"}, {{periods, 50, "periods"}, 20, 100, 1,
Appearance -> "Labeled"}]