Here's a much simpler way to calculating the CloseBalance. No recursion or temp tables. A temp table for the daily total would definitely be faster especially in future dates, just keep adding to it daily since the GL should be immutable.
If validated the SQL but haven't tested it against their DB. I based it off one for order totals in a commerce app and worked great.
WITH tvDailyTotal AS
SELECT Company_Key, Account_Key, SUM(ISNULL(Amount,0)) DailyTotal, [Date]
GROUP BY [Date]
HAVING DailyTotal != 0
SELECT Company_Key, Account_Key, TD2.[Date], TD2.DailyTotal, SUM(TD1.DailyTotal) Amount_CB
RIGHT JOIN tvDailyTotal TD2 ON TD1.[Date] <= TD2.[Date]
GROUP BY TD2.[Date], TD2.DailyTotal
ORDER BY TD2.[Date]