function state = Theta(dt, state)
if nargin == 0
% return comments and dimensions for Theta variables
state.S.comment = 'Stock price index';
state.EUR.comment = 'Numeraire';
state.sigma.comment = 'Volatility';
state.r.comment = 'Risk-free rate';
state.r_vola.comment = 'Volatility of interest-rate';
state.r_alpha.comment = 'Mean-reversion speed of interest-rate';
state.r_beta.comment = 'Mean-reversion level of interest-rate';
state.C.coment = 'Claims';
state.Prem.comment = 'Premium';
else
index = round(state.time+1);
% interest-rate model
vola= state.r_vola(1);
alpha= state.r_alpha(1);
beta = state.r_beta(1);
state.r= state.r + vola*sqrt(dt).*randn(size(state.r));
state.r= beta .* alpha*dt + (1-alpha*dt).*state.r;
state.EUR = exp(-dt .* state.r) .* state.EUR ;
% stock-price index model
mu = 0.05;
sigma = state.sigma(1);
ret_s = exp( (mu-0.5*sigma^2)*dt + sqrt(dt)*sigma*randn(size(state.S)));
state.S = state.S .* ret_s;
% liability model
state.C = max(10+(0.8*randn(size(state.C))).^3,0);
state.C = state.C - 0.1 * 10 * (ret_s-1);
state.Prem = 11 - 0.3 * randn(size(state.C)).^2;
end