Ok, quindi dopo aver scavato ancora un po' e il suggerimento di @Marc B, sono finalmente arrivato dove volevo. Nel caso qualcun altro avesse bisogno di aiuto, ecco la mia risposta:
set @price = (select preconormal from precos where codigowine='10088' order by timestamp asc limit 1);
Nella riga sopra sto impostando @price sul primo record invece di zero, per evitare di ottenere un lag_price di 65,60 sulla prima riga.
Di seguito è riportato il risultato effettivo:
select codigowine, preconormal - @price as lag_price, @price:=preconormal curr_price from precos WHERE codigowine='10088' order by timestamp;
Ecco il violino funzionante.