You have only one Amount record per Date, Category and Group or do you need to sum amounts prior getting the max?
I think you could try using max(Amount) and FirstSortedValue:
max(Amount) as MaxAmount,
FirstSortedValue(Distinct Date, -Amount) as MaxAmountDate
resident YourTable group by Group, Category;