選單

利息被銀行四捨五入後,你到底是賺了還是虧了?

大家在小學就會學四捨五入對吧,四及以下被捨去,五以及更大的數字則進1。

這個在平時做題的時候沒有什麼問題,畢竟做錯做對也不會來錢。那麼問題來了,銀行交易的最小單位是分,被小數點約掉的錢雖然不多,但是如果按照我們小學的四捨五入,你和銀行到底誰虧誰賺呢?

利息被銀行四捨五入後,你到底是賺了還是虧了?

舉個例子,比如給5位儲戶的利息分別是0。000、0。001、0。002、0。003、0。004,這些利息被四捨五入掉了,因此銀行賺了。

但是另外五位儲戶的利息是0。005、0。006、0。007、0。008、0。009,那麼他們每人拿到的利息就是0。01,銀行虧了。

而根據本福德定律的發現者弗蘭克·本福德的測算,非第一位的數基本上符合隨機分佈,也就是0-9這10個數字出現的機率相同。那麼每付出10筆利息,銀行的總收益就是:

0。000 + 0。001 + 0。002 + 0。003 + 0。004 - 0。005 - 0。004 - 0。003 - 0。002 - 0。001 = -0。005

看到了吧,妥妥的虧錢。這還只是付10筆利息的情況,如果銀行有上百萬上千萬的儲戶,那麼虧損就更大了,每千萬筆利息,銀行要虧5千塊。

也就是說,四捨五入其實不利於銀行,而有利於儲戶。

利息被銀行四捨五入後,你到底是賺了還是虧了?

話說回來,傳統的四捨五入讓銀行虧錢的原因是因為把5都往大了算。為了減小差,有人設計出了一種叫做銀行家舍入(Banker‘s Rounding)的演算法。它的規則是這樣的:

4及以下直接捨去;大於等於6時,進位後捨去;這兩點和四捨五入一樣;

5的情況比較複雜,如果5後面還有數字,則進位後捨去;如果5後面沒有數字了,那麼如果5前面是奇數,則進1,若5前面是偶數直接捨去5。

舉幾個例子:

3。016 ≈ 3。02

3。013 ≈ 3。01

3。015 ≈ 3。02

3。045 ≈ 3。04

3。04501 ≈ 3。05

如果數字隨機分佈,則銀行家舍入引起的誤差比傳統的四捨五入小,因為銀行家舍入法在計算時,平均一半的數變大,而另一半變小。當然,銀行家舍入也不是完全沒有誤差,其誤差和操作次數的平方根成正比。

不過需要指出的是,雖然這種舍入法叫“銀行家舍入”,但實際上和銀行關係不大。

我國金融系統的大部分演算法就是用四捨五入。比如分以下的利息、中國國際收支平衡表、商業銀行向中國人民銀行繳存的準備金、《中華人民共和國外資金融機構管理條例》中的儲備金等都是用的四捨五入。

利息被銀行四捨五入後,你到底是賺了還是虧了?

國際上,歐盟委員會對換匯時的舍入規定也是四捨五入。

真正廣泛採用銀行家舍入法的,是需要更小誤差的科學和計算機系統,因此銀行家舍入也常常叫做統計學家舍入(statistician’s rounding),無偏舍入(unbiased rounding)。

1940年開始,美國材料和試驗協會(ASTM)用的就是銀行家舍入法。現在大部分程式設計軟體的預設設定都是銀行家舍入法,比如C/C++、JavaScript、PHP、Go,英特爾處理器用的也是銀行家舍入。

利息被銀行四捨五入後,你到底是賺了還是虧了?

不過,不管是四捨五入還是各種花式舍入法,都無法避免誤差累積的問題。我們來看看幾個舍入引起的超級烏龍事件。

1982年,加拿大推出了溫哥華證券交易所指數VSEI。VSEI 是1500家上市公司的指數合成所得,類似於咱們的上證指數,用來衡量股市的整體走勢。

利息被銀行四捨五入後,你到底是賺了還是虧了?

VSEI的初始值是1000點。但是1983年11月,VSEI跌到了524。811點,和一開始相比跌去了近一半。但奇怪的是,構成VSEI的幾個股票本身並沒有跌這麼慘,所以股指到底怎麼了呢?

原來,這是舍入誤差造成的烏龍。VSEI的計算交由計算機程式自動處理,計算到小數點後第4位。但是,報告中只用了小數點後的3位,最後一位是直接被掐掉的。

因此,每次計算,VSEI的真實值和報告值之間就出現了一個很小但可逐漸累積的誤差。而等到1983年11月,這個誤差已經壯觀到肉眼可見了。

後來,溫哥華證券交易所的人花了3周的時間才想明白了重新計算股指的方法。一夜之間,VSEI就從524。811點平白無故地跳到了1098。892點。

舍入誤差不光造成金融界的烏龍,還曾造成美軍重大傷亡。

利息被銀行四捨五入後,你到底是賺了還是虧了?

海灣戰爭期間,在沙特的愛國者導彈的計算機精度為24位,有0。0001%的計時誤差。執行100小時後,導彈的計算機系統累積了0。3422秒的誤差,最終沒能攔截伊拉克發射的一枚飛毛腿導彈,造成28名美國陸軍死亡。

還有一些人利用舍入的誤差攻擊金融系統賺錢。

因為日常的金融操作的最小單位是分,也就是小數點後2位,在匯率換算的時候也是如此,有人就想到,可以人為使這個誤差朝使自己有利的方向偏移。

利息被銀行四捨五入後,你到底是賺了還是虧了?

舉個例子。0。01日元換成美元是0。000093美元,銀行不可能把你的錢換沒了,所以只能給你0。01美元,這樣一來,你就白賺了99。07%。

1分錢雖然是小錢,但蒼蠅也是肉,如果迴圈多次交易,就能利用舍入誤差套利。用100日元換1萬次,就能賺99美金。

利息被銀行四捨五入後,你到底是賺了還是虧了?

2013年,羅馬尼亞計算機安全學家 Adrian Furtuna 發現,歐元在換算成羅馬尼亞的貨幣的過程中可以透過這種方法套利。他就利用外匯舍入的漏洞設計了一款自動賺錢機器。如果能全速運轉,這臺機器每天就能透過數千次小額交易賺取70歐元。

因為這種交易是在銀行設定的合法語境下進行的,所以銀行只能吃啞巴虧。銀行把這種套利行為取名為“邏輯攻擊”(logical attack)。當然,銀行也有應對措施,比如收取交易費、設定最小換匯數額,或者限制每日換匯次數等等。

利息被銀行四捨五入後,你到底是賺了還是虧了?

這種對金融系統的攻擊,就屬於著名的“臘腸術”——神不知鬼不覺地把一片片薩拉米切下來,合起來就是一根完整的臘腸啦。

歷史上的確發生過很多次臘腸攻擊的案件,不少影視作品也有相應描述,比如1983年的《超人》、1999年的《電影上班一條蟲》。

利息被銀行四捨五入後,你到底是賺了還是虧了?

在《上班一條蟲》中,男主利用駭客技術篡改了銀行的利息演算法,把普通儲戶被四捨五入掉的利息全部轉到了他的賬戶裡,超爽der。

臘腸攻擊不僅適用於銀行,也適用於稅務系統。

想想看,如果一家公司有很多員工,把員工交的稅分開來計算和合起來計算的數額會因為舍入的問題而略有差異,公司就可以利用多次舍入而少交稅。

為了避免有人利用這個漏洞,美國國家稅務局就設定了相應的規定(fractions of cents adjustment),使得公司在報稅時沒有舍入的漏洞可鑽。

總之,只有小學生會瞧不起四捨五入,大人都是用它賺錢養小學生。

一個悲傷的悖論:四捨五入有利於儲戶,而我的1分錢賬戶卻永遠沒有利息。