Możesz użyć tego zapytania. Możesz osiągnąć wyniki w 75% mniej czasu. Sprawdziłem z większą ilością danych. Podzapytania zajmują więcej czasu.
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