to finish vs. to have finished

Both are fine grammatically but your alternative version changes the context. "We hope to have finished by X" refers to the situation after completion, implying that there will then be other issues to consider - issues affected by the completion. In contrast, "We hope to finish by X" only discusses the task itself, leaving open the possibility that you will have no involvement after X and will walk away. It doesn't imply that, but it doesn't invoke any consideration of the post-completion context, unlike the first.