Depends on the version of SQL you are using. For SQL 2012 and later try:
SELECT a.ADateTime, a.Profit,
SUM(Profit) OVER(ORDER BY EOMONTH(ADateTime)
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
AS Balance
FROM (SELECT EOMONTH (ADateTime) ADateTime,
CAST (SUM(ISNULL(Profit,0)) AS decimal(18,3)) Profit
FROM CostLedger
WHERE ISNULL(Profit,0)>0 AND YEAR(ADatetime)=YEAR(CAST ( '2017-May-01' as Date))
GROUP BY EOMONTH (ADateTime)) a