This is an issue that is related to computer storage and memory designs. Different systems may hold and display numerical values at different levels of precision, but this rarely matters in practice. Still, there is always some type of rounding being displayed in large sets of computer-generated numbers and this is an example.
For example, you may be looking at 2.700000048 as a 'cell' value using data imported into EXCEL, but see that EXCEL prints out such a cell as 2.7. Or you may see 2.70 on Yahoo Finance or a Bloomberg terminal screen, but since this a 'rounded-to-the-second-decimal-place' value, you cannot be sure that the actual stored value is not 2.700000048. In fact, it is likely that the stored value is 2.700000048, simply because 2.70 cannot be exactly represented in a computer's set of binary (0/1) memory registers.
Here is what text output through WRDS shows
PERMNO DATE TICKER PRC
88337 20010601 ECMN 2.55000
88337 20010604 ECMN 2.55000
88337 20010605 ECMN 2.55000
88337 20010606 ECMN -2.56500
88337 20010607 ECMN 2.63000
88337 20010608 ECMN 2.55000
88337 20010611 ECMN 2.70000
88337 20010612 ECMN 2.50000
88337 20010613 ECMN 2.50000
88337 20010614 ECMN 2.47000
88337 20010615 ECMN 2.47000
88337 20010618 ECMN 2.35000
88337 20010619 ECMN 2.35000
88337 20010620 ECMN 2.37000
88337 20010621 ECMN 2.37000
88337 20010622 ECMN 2.26000
88337 20010625 ECMN 2.25000
88337 20010626 ECMN -2.36000
88337 20010627 ECMN 2.25000
88337 20010628 ECMN -2.25500
88337 20010629 ECMN 2.25000
and here is the comma delimitted output
PERMNO,DATE,TICKER,PRC
88337,20010601,ECMN,2.549999952
88337,20010604,ECMN,2.549999952
88337,20010605,ECMN,2.549999952
88337,20010606,ECMN,-2.565000057
88337,20010607,ECMN,2.630000114
88337,20010608,ECMN,2.549999952
88337,20010611,ECMN,2.700000048
88337,20010612,ECMN,2.5
88337,20010613,ECMN,2.5
88337,20010614,ECMN,2.470000029
88337,20010615,ECMN,2.470000029
88337,20010618,ECMN,2.349999905
88337,20010619,ECMN,2.349999905
88337,20010620,ECMN,2.369999886
88337,20010621,ECMN,2.369999886
88337,20010622,ECMN,2.259999991
88337,20010625,ECMN,2.25
88337,20010626,ECMN,-2.360000134
88337,20010627,ECMN,2.25
88337,20010628,ECMN,-2.255000114
88337,20010629,ECMN,2.25
Note how 2.5 and 2.25 are represented exactly. In other cases, there is loss of precision. In sum, output from a WRDS web query may have numbers rounded up or down under certain circumstances in the formatted text output , but using either comma-delimited or tab-delimited output (or a native SAS dataset file) will show the fully stored and feasible numerical precision, where an exact value of 2.70 can not be represented precisely.
No one typed in the extra zeros and the 48, and no one believes the actual value is not 2.70. Only the computer is 'confused' and it 'saves' itself by generally treating 2.700000048 and 2.7 as equivalent.
The whole story is a complicated computer science issue that has to do with the fact that computer memory makes use of base 2 system (byte on or off ==> 0 or 1) that cannot represent every base 10 number with exact precision (using either 8 or 16 bytes of memory). In essence, mapping real numbers into computer numbers and then back to real numbers creates unavoidable rounding effects.
Here are two web links on the issue that may help
https://www.cpearson.com/excel/rounding.htm
https://docs.sun.com/source/806-3568/ncg_goldberg.html
In sum, you may be worried that either CRSP or WRDS changed the value from 2.7 to 2.700000048 by mistake. This did not happen and you can trust that what you are seeing is an inherent part of all computing, not a CRSP-WRDS issue.
Comments
0 comments
Please sign in to leave a comment.