Both are fully grammatical, and fully natural. Why do you think one of them is wrong?
Mostly, they would be usable in precisely the same circumstances. As with other questions of aspect in English, the difference is in how the speaker is choosing to view the events, not in any objective difference in the events.
"Why are you cooking food today" suggests that the cooking is happening in the future - later today. It may or may not be happening at the moment, or before now.
"Why have you been cooking food today" suggests that the cooking has been happening earlier today - it may or may not be happening still (or afterwards), but it is in some way still relevant now: maybe because people are still eating, or because you are still really hot from cooking.