The key transaction table is going to have ~450 Million transactions per day and the data querying/filtering will always happen based on the "transaction date" column.
...
Should we go for simple daily range partitioning on the transaction_date column?
This one gets my vote. That and some good indexes.