Ok, nach weiterem Graben und dem Vorschlag von @Marc B bin ich endlich dort angekommen, wo ich wollte. Falls noch jemand Hilfe braucht, hier ist meine Antwort:
set @price = (select preconormal from precos where codigowine='10088' order by timestamp asc limit 1);
In der obigen Zeile setze ich @price auf den ersten Datensatz statt auf Null, um zu vermeiden, dass in der ersten Zeile ein lag_price von 65,60 angezeigt wird.
Unten ist das tatsächliche Ergebnis:
select codigowine, preconormal - @price as lag_price, @price:=preconormal curr_price from precos WHERE codigowine='10088' order by timestamp;
Hier ist die Geige funktioniert.