Survivorship bias involves ignoring companies that no longer exist, either because they were delisted, went bankrupt or because of some other corporate action, such as M&A activity.
Meanwhile, look-ahead bias involves using data that was not known at the point in time, which is analogous to investing with a ‘crystal ball’.
For instance, of the 3,000 constituents of the Russell 3000 index as of October 1986, only 565 have survived. But to have an accurate historical database and avoid survivorship bias, information must be retained on the 2,435 companies that are no longer actively traded. The same can be happen on snp500, nasdaq 100 etc...
So, the question is how we can avoid the above two biases due to backtesting on PyInvesting?