Postgres: How can I force index usage for view with latest rates?
Your view gives the correct answer, while your CTE gives the wrong answer, using the oldest date, not the newest.

If you want to use an index scan (although in my hands it doesn't actually make a difference in performance), specify DESC for both ORDER BY columns, or create an index for (currency, date DESC).