股票

float64 儲存價格數據:精度足夠嗎?

  • August 11, 2016

我希望將股票價格數據儲存在 hdf5 表中。使用將純粹作為歷史檔案,而不是作為日常數據源。

選項

  1. 一種選擇是將base10 有效數和指數分別儲存為例如uint64 和uint8。缺點是處理起來相當尷尬,特別是因為 int 不是開箱即用的 NaN 處理缺失值。
  2. 另一種選擇是使用更易於處理且內置 NaN 支持的 float64。

我的問題:float64 是否有足夠的精度來儲存價格數據?價格存檔所需的有效位數是什麼體驗?

注意:float64 似乎具有15-17“有效十進制數字”精度。不確定這是否意味著“有效數字”或者這是否僅指十進制數字。

作為背景,浮點精度是一種儲存數字的方式,使得精度相對於最大數字。例如,數 $ 0.00123 $ 以固定精度儲存需要 6 位精度(3 個零和 3 個非零數字)。但是,這個相同的數字儲存為浮點精度 $ 1.23 \cdot 10^{-3} $ 只需要 3 位有效的十進制數字來儲存。浮點數通常是一種更有效的方式來儲存具有許多不同數量級的數字,但更重要的是它們以電腦可以進行有效的基本計算(如乘法)的形式儲存,並且在您的情況下比選項 1 更容易使用.

即使是最深的市場(國債、貨幣)也只需要 6-7 位的浮動精度來儲存價格數據。有一些重要的限制意味著儲存的價格並不總是準確的,但可能近似於第 16 位或第 17 位。如果稍後在計算中使用價格(畢竟我們是在量化金融上),如果對於具有 6-7 位精度的數字四捨五入到第 16 位/第 17 位數字很重要,那將是令人震驚的。在這種近似值很重要的極端情況下,您可以查看選項 3,它是定點儲存

引用自:https://quant.stackexchange.com/questions/15488