Essa observação no fim das contas pode ser encarada como preferência de design, mas aqui vai minha percepção:
A classe Negociacao deve ser responsável apenas por criar uma negociação. O único motivo para haver a necessidade de converter de string para números e data é o fato de que esses dados vêm da view. O controller, como controla a view, deve ser responsável por fazer essa tradução dela para o model. Isso garante que, havendo a adição de um outro controller que receba os dados de outra maneira, não haja a necessidade de criar um novo método "criaDe" no modelo.