As with any model, you'd need to make some assumptions and see how factoring in these assumptions play out. You're trying to model the core deposits so it would make sense to consider these account by account since how each client uses their account will vary.
If core means deposits that are not withdrawn then I don't see an issue with considering the minimum balance of that month. To formalize, for each account, you can have
core_deposit = running_min(account_balance, 3 months)
Other things you can try are the average balance over the past X months +- rollin standard deviation of balance changes.
I haven't seen how much the data varies but also try median balance +- mean absolute deviation to reduce the effect of outliers.
Each of these methods will produce an answer, but what's important is how we evaluate that answer. Perhaps we can phrase this as an ML question.
So you have your data set which is essentially a time series for each account. For each account, for each point in time, calculate the MINIMUM amount in the account over the next, say, 6 months, that quantity will be the target quantity you want to train your machine learning model to learn. If we are successful in building such a model, your model should spit out a quantity which the client should at least have in his account over the next 6 months.
Next part, feature engineering, this is where you can be creative in developing features like calculate how often balance changes, magnitude of changes, average change if deposit/spend, etc.