I created a rotation strategy and tested it on Yahoo data, then I switched to WealthData -> S&P500 data to test how delisted stocks affect the performance. I got a drastic deterioration, but then I digged into the data and found out that the rotation strategy will not provide me the full candidate list.
For example, when I open SMCI data from the WealthData -> S&P500, I can see its history from 2014, but when I run a simplified rotational strategy the data for the symbol is only available since 2024.
Is it a problem with PreExecute, the Data source or my ignorance?
For example, when I open SMCI data from the WealthData -> S&P500, I can see its history from 2014, but when I run a simplified rotational strategy the data for the symbol is only available since 2024.
Is it a problem with PreExecute, the Data source or my ignorance?
CODE:
public class MyTest : UserStrategyBase { public override void PreExecute(DateTime date, List<BarHistory> allBars) { WriteToDebugLog("\nChecking data: " + date); foreach (BarHistory bars in allBars) { if (bars.Symbol == "SMCI") WriteToDebugLog("Check OK"); } } public override void Execute(BarHistory bars, int bar) { } }
Rename
If you haven't read this blog please do so:
https://www.wealth-lab.com/blog/survivorship-bias
What would PreExecute have to do with the inherent difference between Yahoo and WealthData's specially tailored survivorship bias free DataSets?
https://www.wealth-lab.com/blog/survivorship-bias
What would PreExecute have to do with the inherent difference between Yahoo and WealthData's specially tailored survivorship bias free DataSets?
Hello, Eugene, thanks for the answer. I'm perfectly aware about the survivorship bias, and wrote the first couple of sentences just as introduction.
The main question - why PreExecute will not return the SMCI symbol data (from WealthData) until 18.03.2024?
The main question - why PreExecute will not return the SMCI symbol data (from WealthData) until 18.03.2024?
The reason behind WD not returning data in a built in DataSet (i.e. Dow 30, Naz 100, S&P 100/500, and *DAX) on a given date is exactly the avoidance of survivorship bias. That means that a symbol was not part of this specific DataSet on that date (e.g. was expelled before or entered later).
SMCI is present in Wealth-Data starting 2014, it hasn't been delisted. And I provided a chart screenshot that proves it.
But the PreExecute doesn't return it to me.
According to the chart I would expect that PreExecute returns me SMCI in, say, December 2023
But the PreExecute doesn't return it to me.
According to the chart I would expect that PreExecute returns me SMCI in, say, December 2023
Hi Pavel,
SMCI is not included in the PreExecute participants list prior to 2024 because it was not in the S&P 500 prior to 2024. Just because you see some prior data charted does not mean it was in the index at that point. We add some room for lead data so indicators can get calculated.
SMCI is not included in the PreExecute participants list prior to 2024 because it was not in the S&P 500 prior to 2024. Just because you see some prior data charted does not mean it was in the index at that point. We add some room for lead data so indicators can get calculated.
To add to Dion's reply, Pavel, "That means that a symbol was not part of this specific WD DataSet on that date (e.g. was expelled before or entered later)." In other words, data in these DataSets can be intermittent (discrete)!
Shame on me, didn't check inclusion to SP500. Thank you, Colleagues!
Your Response
Post
Edit Post
Login is required