Puoi usare questa query. Puoi ottenere risultati nel 75% in meno di tempo. Ho controllato con più set di dati. Le sottoquery richiedono più tempo.
SELECT p1.id,
p1.security,
p1.buy_date
FROM positions p1
left join
positions p2
on p1.security = p2.security
and p1.buy_date < p2.buy_date
where
p2.id is null;
SQL-Fiddle link