I thought (that) you would have finishied this by now. But you didn't.
這裡是省略了名詞子句的that,並不是同一子句之中主詞重複。
不句不適用未來完成式,因為時間座標是[現在](by now)不是[未來]。而且與現實不符:你沒做完這件事。我以前以為你今天可以做完的。所以子句裡用的是與現實不符的假設語氣動詞。
這是未來完成式沒錯, 只是其時間基準在"過去" . 這並不是假設虛擬的語意.
就跟這句是未來式的道理一樣:
I told her I would arrive at six.
未來完成式:
I promised her that I would have finished my homework by now, and I have.
其實主要是因為它用了[by now]這個片語, 所以傾向用完成式, 否則用未來式就可以了.
I promised her that I would finish my homework today/tomorrow.