Neste exemplo, não tem o tipo do movimento, se é de Entrada ou Saida, mas fica fácil adaptar colocando um if e o sinal de - na frente do campo
Tabela_Tmp: LOAD * Inline [ Produto ,Mes , Movimento A ,1 , 10 A ,2 , 1 A ,3 , 5 A ,4 , 20 B ,1 , 2 B ,2 , 1 ];
Tabela_Final: LOAD Produto, Mes, Movimento, if(Produto = Previous(Produto),rangesum(Peek(Saldo),Movimento),Movimento) as Saldo
// Imaginando que tenhas um campo tipo aonde seja Entrada ou Saida poderia ser // if(Produto = Previous(Produto),rangesum(Peek(Saldo),if(tipo='E',Movimento,-Movimento)),Movimento) as Saldo
Resident Tabela_Tmp order by Produto,Mes; // Drop Table Tabela_Tmp;