FinanceRoutines.jl

Financial data routines for Julia
Log | Files | Refs | README | LICENSE

commit 3032dc570dd21e38320ad173cfd9b1cbe8618e64
parent 06faf285967615d0034e3b0fe1cb654a4bfcec32
Author: Erik Loualiche <[email protected]>
Date:   Sun, 22 Mar 2026 10:25:13 -0500

Expand missing-value flags to cover -999, -9999, -99.99

Previously only -999.99 was treated as missing in GSW data.
Add -999.0, -9999.0, -99.99 which are also common sentinel values
in WRDS/economic datasets. Includes 10 new test assertions.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

Diffstat:
Msrc/ImportYields.jl | 5++---
Mtest/UnitTests/Yields.jl | 13+++++++++++++
2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/src/ImportYields.jl b/src/ImportYields.jl @@ -296,9 +296,8 @@ function _safe_parse_float(value) try numeric_value = Float64(value) - # Check for common missing data flags used in economic datasets - # -999, -9999 are common flags for missing/unavailable data - if numeric_value == -999.99 + # Common missing data flags in economic/financial datasets + if numeric_value in (-999.99, -999.0, -9999.0, -99.99) return missing end diff --git a/test/UnitTests/Yields.jl b/test/UnitTests/Yields.jl @@ -318,6 +318,19 @@ @test FinanceRoutines.bond_yield_excel(Date("2014-07-31"), Date("2032-05-15"), 0.05, 114.083, 100.0; frequency=2) ≈ 0.0389 atol=5e-4 end + @testset "Missing value flag handling" begin + @test ismissing(FinanceRoutines._safe_parse_float(-999.99)) + @test ismissing(FinanceRoutines._safe_parse_float(-999.0)) + @test ismissing(FinanceRoutines._safe_parse_float(-9999.0)) + @test ismissing(FinanceRoutines._safe_parse_float(-99.99)) + @test !ismissing(FinanceRoutines._safe_parse_float(-5.0)) # legitimate negative + @test FinanceRoutines._safe_parse_float(3.14) ≈ 3.14 + @test ismissing(FinanceRoutines._safe_parse_float("")) + @test ismissing(FinanceRoutines._safe_parse_float(missing)) + @test FinanceRoutines._safe_parse_float("2.5") ≈ 2.5 + @test ismissing(FinanceRoutines._safe_parse_float("abc")) + end + end # @testset "GSW Extended Test Suite"