I would tackle this in the load script using Previous and Weekday..
So data would need to be sorted by date, then a field could be scripted:
Previous(TargetValue) - If(Weekday(date)<=4,5) As TargetValue
You would need to add a seed like, where date was smaller that the first date in your data.
LOAD * INLINE[
ID, Date, TargetValue
0, 1/1/2018, 100];
Or if the 1st of the month is a set point,
If(Day(Date)=1, 100, Previous(TargetValue) - If(Weekday(date)<=4,5)) As TargetValue