股票

掃描庫存數據庫中的錯誤/缺陷

  • March 19, 2013

我目前正在編寫一些 matlab 程式碼,該程式碼應該檢查股票數據庫是否存在任何錯誤(缺失值、錯誤值等)。這樣做的原因是,在閱讀了這篇文章後,我得出的結論是,在使用該數據庫進行回測時,我可能必須編寫一些數據清理程式碼才能獲得準確可靠的結果。

該數據庫是從yahoo Finance下載的,包含每隻股票的以下列:日期、開盤價、最高價、最低價、收盤價、成交量、AdjClose。

到目前為止,該程序會掃描以下微不足道的錯誤:

  • 關閉 > 高
  • 收盤價<低
  • 打開 > 高
  • 開<低
  • 高 < 低

該程序還檢查任何數據列是否包含小於零或 NaN 的值。

我可以在數據庫中查找哪些其他錯誤/缺陷?

我的經驗有幾點:

1 您應該考慮的另一個過濾器是某些數據提供程序中出現的價格 = 999 或 999.99。

2 另一組檢查是查看所有名稱的橫截面,例如 range = (high-low)/close。檢查最小範圍和最大範圍以查看這些值是否有意義。您還可以檢查一天到另一天的每日百分比變化。檢查所有最大的移動數據中的錯誤。美國的閃電崩盤造成了巨大的範圍,但是如果您在不同的日子看到異常範圍,請檢查數據的質量。同樣在 2008 年 9 月,即使在流動性非常強的產品中也存在許多荒謬的值。

3 對於更改名稱或進入/退出破產的公司,您必須小心使用雅虎(和其他來源)。

調整後的收盤價將在股息和股票分割後發生變化。因此,舊數據將不得不被新數據替換。因此,根據目前值檢查下載值的 adj close 通常是一個好主意。

我還喜歡對照其他來源(如穀歌)檢查下載的數據。我通過編寫一個單元測試來做到這一點,該測試將隨機選擇一個日期並從Google下載數據並檢查雅虎。

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