It’s not entirely clear to me why you have done what you have done, but I suspect that your inability to recover the parameter values you plugged into the data generating process have to do with the fact that your model does not resemble the data generating process. You are modeling the expenses as a mixture of two normally distributed variables when they are actually a mixture of a spike at 0 and an exponentially distributed set of non-zero expenses from (roughly) zero to 100. Approximating the spike at zero with a normal might be ok (though I wouldn’t recommend it), but the exponentially distributed non-zero expenses will be poorly captured by a normal distribution (particularly one in which sigma=1).