If there was a way that you could store the max(trade_date) before today without having to compute it.

You could cache the data in a table and write a pl/sql procedure that could run shortly after midnight every day which would update the value. Why calculate the value many times a day when you can calulate it once a day. I'm guessing that it is doing a select on a detail table that has a lot of rows. Which is adding unnecessary overhead.

You could even write a function to return the max trade date.

select * from test where trade_date = getmaxtradedate();