Sampling Bernoulli + Exponential cannot reproduce original distribution

The exponential in this line

expense = pm.Exponential(
        'expense',
        lam=lam_expense,
    )

is noise. Otherwise, all expenses would be either zero or exactly 1/\lambda.

Right now, you are specifying that the non-zero expenses are normally distributed (which they are not). You are further specifying that you are uncertain where the mean of that normal distribution is, but specifying that your prior belief about the value of the mean of that normally-distrbuted variable is described as an exponential.