{
  "id": 1178,
  "title": "Kaggle, please check your scoring system",
  "url": "/competitions/AlgorithmicTradingChallenge/discussion/1178",
  "author_name": "",
  "post_date": "2011-12-18T21:08:05.943Z",
  "votes": 1,
  "comment_count": 15,
  "views": 13020,
  "content": "<p>Something doesn't smell right...</p>\r\n<p>I compared the testing dataset to the old testing dataset (the one you had appended to the training dataset as the last 50K lines). Using measures such as variance of the prices, mean and variance of the spread etc., they look very similar. And yet, they\r\n score very differently from each other. As I pointed out in another thread, the benchmark RMSE is ~0.85 for the testing dataset while it is 1.2695 for the old testing dataset. I have a few hypotheses.</p>\r\n<p>- the scoring is done in way less than 30% of the testing dataset.</p>\r\n<p>- the 30-70 split was not done randomly.</p>\r\n<p>- the score is not RMSE, but some other beast.</p>\r\n<p>Another red flag is that minor tweaks to the code that should result in a small variation in accuracy actually leads to wild swings on the score reported by the scoring system.</p>\r\n<p>Please check and get back to us.</p>",
  "messages": [
    {
      "id": "7314",
      "postDate": "12/18/2011 21:08:05",
      "content": "<p>Something doesn't smell right...</p>\r\n<p>I compared the testing dataset to the old testing dataset (the one you had appended to the training dataset as the last 50K lines). Using measures such as variance of the prices, mean and variance of the spread etc., they look very similar. And yet, they\r\n score very differently from each other. As I pointed out in another thread, the benchmark RMSE is ~0.85 for the testing dataset while it is 1.2695 for the old testing dataset. I have a few hypotheses.</p>\r\n<p>- the scoring is done in way less than 30% of the testing dataset.</p>\r\n<p>- the 30-70 split was not done randomly.</p>\r\n<p>- the score is not RMSE, but some other beast.</p>\r\n<p>Another red flag is that minor tweaks to the code that should result in a small variation in accuracy actually leads to wild swings on the score reported by the scoring system.</p>\r\n<p>Please check and get back to us.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "7318",
      "postDate": "12/18/2011 23:32:14",
      "content": "<p>I definitely agree that something is wrong with the evaluation statistic as computed by Kaggle.&nbsp; I have found that the evaluation metric for the testing set generally (and I say generally because there are a few large exceptions that I assume relate to the\r\n differing methods of sampling the testing and training data sets) correlates somewhat linearly with RMSE calculated on out of sample data from the training set.&nbsp; I suspect that this may be an issue of proportion rather than an issue of a completely different\r\n metric from RMSE being calcuated.&nbsp; The true RMSE may be divided by 2 or some other constant incorrectly.&nbsp; Of course, I could be completely off base here.&nbsp; Please let us know about this issue if possible, as several competitors have brought it up so far.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "7333",
      "postDate": "12/19/2011 14:41:12",
      "content": "<p>I agree, my methods which beat the bid50/ask50 metric on the training data score horribly on the test data. Whats going on here?\r\n</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "7350",
      "postDate": "12/20/2011 01:39:27",
      "content": "<p>I think for all competitions, Kaggle should release the source code to calculate leaderboard scores and a dummy test dataset (can be just random numbers), along with the calculated public and private scores.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "7352",
      "postDate": "12/20/2011 02:19:05",
      "content": "<p>[quote=B Yang;7350]</p>\r\n<p>I think for all competitions, Kaggle should release the source code to calculate leaderboard scores and a dummy test dataset (can be just random numbers), along with the calculated public and private scores.</p>\r\n<p>[/quote]</p>\r\n<p>I am not sure if anyone is monitoring these threads. The least they could do is acknowledge the question.</p>\r\n<p>Just came across another thread on a screw-up that happened in the wikipedia challenge:</p>\r\n<p>http://www.kaggle.com/forums/t/980/wikipedia-participation-challenge-an-unfortunate-ending</p>\r\n<p>What is really astonishing is the unapologetic tone of Kaggle's response.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "7357",
      "postDate": "12/20/2011 02:38:22",
      "content": "<p>[quote=Capital Markets CRC;7353]</p>\r\n<p>Hi Neil, the thread is being monitored. Sometimes it takes time to investigate thoroughly to prepare an appropriate response.</p>\r\n<p>[/quote]</p>\r\n<p>That's good to know. Thanks for your response.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "7360",
      "postDate": "12/20/2011 05:59:49",
      "content": "<p>[quote=Neil Thomas;7352]I am not sure if anyone is monitoring these threads. The least they could do is acknowledge the question.</p>\r\n<p>Just came across another thread on a screw-up that happened in the wikipedia challenge:</p>\r\n<p><a href=\"http://www.kaggle.com/forums/t/980/wikipedia-participation-challenge-an-unfortunate-ending\">http://www.kaggle.com/forums/t/980/wikipedia-participation-challenge-an-unfortunate-ending</a></p>\r\n<p>[/quote]</p>\r\n<p>The 'Mapping Dark&nbsp;Matter'&nbsp;competition&nbsp;had outright errors in the 'ground-truth' data that was discovered by William &quot;The Prince&quot; Cukierski:</p>\r\n<p><a href=\"http://www.kaggle.com/c/mdm/forums/t/611/are-we-sure-the-ground-truth-is-correct\">http://www.kaggle.com/c/mdm/forums/t/611/are-we-sure-the-ground-truth-is-correct</a></p>\r\n<p>I bet you errors like this is the reason we haven't found dark matters or Higgs boson yet.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "7361",
      "postDate": "12/20/2011 06:40:09",
      "content": "<p>[quote=B Yang;7360]</p>\r\n<p>The 'Mapping Dark&nbsp;Matter'&nbsp;competition&nbsp;had outright errors in the 'ground-truth' data that was discovered by William &quot;The Prince&quot; Cukierski:</p>\r\n<p>[/quote]</p>\r\n<p>It's a small world - I see that name on the Leaderboard (currently just below me). I cannot be doing better than someone with an alias like that! Once Kaggle fixes their scoring system, the Leaderboard may look very different. I am gonna regret ever bringing\r\n this up :-)</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "7373",
      "postDate": "12/20/2011 15:14:08",
      "content": "<p>[quote=Neil Thomas;7314]</p>\r\n<p>Something doesn't smell right...</p>\r\n<p>I compared the testing dataset to the old testing dataset (the one you had appended to the training dataset as the last 50K lines). Using measures such as variance of the prices, mean and variance of the spread etc., they look very similar. And yet, they\r\n score very differently from each other. As I pointed out in another thread, the benchmark RMSE is ~0.85 for the testing dataset while it is 1.2695 for the old testing dataset. I have a few hypotheses.</p>\r\n<p>[/quote]</p>\r\n<p>Per your request, I went and double checked a few things on our end.&nbsp;</p>\r\n<p>[quote=Neil Thomas;7314]</p>\r\n<p>- the scoring is done in way less than 30% of the testing dataset.</p>\r\n<p>[/quote]</p>\r\n<p>The solution file contains exactly 5 million &quot;cells&quot; in the Excel sense where each cell is a bid or ask price. Each row has exactly 100 prices and there are 50,000 rows.</p>\r\n<p>The public scoring is done on exactly 1.5 million &quot;cells&quot;. The sampling was done such that all cells on a row were selected together. In other words, we randomly picked rows and then picked all the cells on that row.</p>\r\n<p>[quote=Neil Thomas;7314]</p>\r\n<p>- the 30-70 split was not done randomly.</p>\r\n<p>[/quote]</p>\r\n<p>While we didn't use a cryptographically secure random number generator for this competition, we did use a decent pseudo random number generator. The split looks random from a visual inspection, but more importantly there isn't a overall large variation between\r\n the public and private leaderboards which would lead me to believe there was a problem.</p>\r\n<p>[quote=Neil Thomas;7314]</p>\r\n<p>- the score is not RMSE, but some other beast.</p>\r\n<p>[/quote]</p>\r\n<p>I verified the score is correct to at least 12 decimal places by comparing it with manual calculations done with Excel. Here is what I did:</p>\r\n<ol>\r\n<li>I created a new Excel workbook </li><li>I put the solution answers in the &quot;Solution&quot; sheet.&nbsp;I disregarded headers such that cell A1 was &quot;754019&quot; and cell CW50000 was the ask100 price for row id 804018\r\n</li><li>I put your submission #72794 in a new sheet called &quot;Submission&quot; </li><li>I created a &quot;Differences&quot; sheet such that every cell was the difference between the solution and submission. For example, B1 is &quot;=Solution!B1 - Submission!B1&quot;\r\n</li><li>For each row in &quot;Differences&quot;, I calculated the sum of the squares of the differences and put this in CX. Specifically, CX1 is &quot;=SUMSQ(B1:CW1)&quot;\r\n</li><li>I put the public and private split labels in CY of the &quot;Differences&quot; sheet. For example, if the row is in the public set, there is a &quot;Public&quot; for that row, otherwise it's &quot;Private&quot;\r\n</li><li>I verified that there are 15,000 public rows and 35,000 private rows by doing &quot;=COUNTIF(CY1:CY50000, &quot;Public&quot;)&quot; and &quot;=COUNTIF(CY1:CY50000, &quot;Private&quot;)&quot; respectively\r\n</li><li>I verified the public RMSE calculation by doing &quot;=SQRT(SUMIF(CY1:CY50000, &quot;Public&quot;,CX1:CX50000 )/(COUNTIF(CY1:CY50000, &quot;Public&quot;)*100))&quot; This was exactly equal to what Kaggle calculated/reported to 12 decimal places. (Even though we only show ~6 decimal\r\n places, we store everything to double precision). </li><li>I verified the private RMSE calculation by doing &quot;=SQRT(SUMIF(CY1:CY50000, &quot;Private&quot;,CX1:CX50000 )/(COUNTIF(CY1:CY50000, &quot;Private&quot;)*100))&quot;. Again, this was exactly equal to what Kaggle calculated/reported to 12 decimal places.\r\n</li></ol>\r\n<p>Given all of this evidence, I don't think there is an error in the calculation code, especially given that it's only 1 line of code &quot;return Math.Sqrt(a.MeanSquaredDiff(b));&quot;</p>\r\n<p>[quote=Neil Thomas;7314]</p>\r\n<p>Another red flag is that minor tweaks to the code that should result in a small variation in accuracy actually leads to wild swings on the score reported by the scoring system.</p>\r\n<p>Please check and get back to us.</p>\r\n<p>[/quote]</p>\r\n<p>I have a few ideas for why you might be seeing some issues:</p>\r\n<ol>\r\n<li>This competition uses RMSE, however the security prices were not normalized. The net effect is that you are rewarded more for predicting higher-priced securities.\r\n</li><li>The test set/solution file was sampled from a large collection of trades. To get a feel for what the current solution distribution looks like, take a look at the previous test solution that is the last 50,000 training rows. If you look at the mean/stdev/median/percentiles@5%\r\n increments, you can see that they're roughly the same distribution. However, given what RMSE favors (see #1), you might see a wide fluctuation if a tweak causes your high price security predictions to be worse.\r\n</li></ol>\r\n<div>As a competitor, you might also be interested in comparing your models using\r\n<a href=\"http://en.wikipedia.org/wiki/Symmetric_mean_absolute_percentage_error\">Symmetric Mean Absolute Percentage Error</a> (SMAPE) using all of the training set except the last 50,000 rows and then use the last 50,000 rows as the test set. This effectively\r\n gives you a normalized score across all predictions.&nbsp;</div>\r\n<div>Although we currently have the SMAPE metric in our system, we didn't have it when this competition launched, so it wasn't an option then. You're strongly encouraged to develop solutions that do well both on SMAPE and RMSE, but this specific competition\r\n uses RMSE.</div>\r\n<div>The RMSE metric still rewards having good predictive power on at least the high priced securities which would still be a good outcome of this competition.</div>\r\n<div>Does that explanation help understand the issue better?</div>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "7374",
      "postDate": "12/20/2011 15:22:07",
      "content": "<p>Thanks Jeff. Without disclosing details, I am pretty sure that the issue is a sampling issue and not a scoring issue. This data is peculiar.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "7377",
      "postDate": "12/20/2011 15:33:47",
      "content": "<p>I, for one, will not be satisfied until Jeff personally scores all Kaggle submissions by hand to 14 decimal places using an abacus, quill pen, and parchment paper. &nbsp;</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "7388",
      "postDate": "12/21/2011 00:13:20",
      "content": "<p>Perhasps I shouldn't have used the term 'issue'. I think the apparent 'problem' with inconsistent scores is due to sampling, but I don't think this is an issue. The data is what it is, and I think you have well explained the reasons behind your method of\r\n sampling.&nbsp;</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "7396",
      "postDate": "12/21/2011 06:02:30",
      "content": "<p>[quote=Jeff Moser;7373]</p>\r\n<p>Per your request, I went and double checked a few things on our end. </p>\r\n<p>[/quote]</p>\r\n<p>Jeff,</p>\r\n<p>Thanks for checking. It seems like I was barking up the wrong tree.</p>\r\n<p>Your explanation implies that the new testing dataset happens to have characteristics that are drastically different from both the training set and the old testing set. It is unfortunate that this shifts the focus away from the main task of coming up with\r\n effective algorithms to predict the response to liquidity shocks. In order to get a good score, the contestants have to filter the training set until the data matches up with the testing set. I understand any such competition would involve some amount of overfitting\r\n and the model that wins may not generalize well. But in this specific case, the model that wins may not even perform well on the training data itself!</p>\r\n<p>The original testing set does not seem to suffer from this issue. If the answers were not inadvertently revealed, we wouldn't be wasting time talking about this. But I guess that's life.</p>\r\n<p>As a side note, it is irrelevant if the 12th decimal matched up or not. Same goes for the properties of your random number generator. Let's not make it needlessly complicated. If there is an error in the procedure, one would expect it to be more mundane.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "7418",
      "postDate": "12/21/2011 21:29:49",
      "content": "<p>[quote=Capital Markets CRC;7385]</p>\r\n<p>we have made the sampling process as transparent as possible. When the market can be swinging &#43;/- 3% on any given day there will be a lot of peculiar effects. &nbsp;Let me know if there are any specific concerns with sampling and we will address as best we can.</p>\r\n<p>[/quote]</p>\r\n<p>We are working on the assumption that the overall up/down macro-behavior on a given day or hour,&nbsp;for the market, or stock sector, or individual stock, can be ignored. i.e. assume the trend is flat. Is this correct? Did anyone investigate otherwise? i.e.\r\n a) which security_ids are correlated, or b) splicing together the training set to infer the macro-behavior of the market? c) There are samples from 53 days in the test set, does the particular day have any effect?</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "7425",
      "postDate": "12/21/2011 23:11:20",
      "content": "<p>[quote=Capital Markets CRC;7419]</p>\r\n<p>It is possible that detrending the data for a given time slice may yield superior results.</p>\r\n<p>[/quote]</p>\r\n<p>Right, that was my question, to other users.&nbsp;Specifically: suppose we find that for stocks A,B and C in the training set, day 1, between 11-12am, the market is trending down. Should we then apply that to detrend training data for stock D on the same date\r\n &amp; time? or not detrend?</p>\r\n<p>And what about the test set (which has 53 days)?</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "7471",
      "postDate": "12/23/2011 21:24:07",
      "content": "<p>[quote=Capital Markets CRC;7404]</p>\r\n<p>By using testing data from a separate time period perhaps the model will be more generalized than it would have been otherwise. Of course that is a highly speculative statement and we will never know however I'm just making the point that perhaps there is\r\n a small silver lining in all this.</p>\r\n<p>[/quote]</p>\r\n<p>Don't know about that. In real life, wouldn't one retrain the system continuously with real-time data? In that case, which model is more useful? A generalized model that can give reasonable predictions for any time period or one that excels in predicting\r\n the immediate future from the recent past?</p>\r\n<p>[quote=Capital Markets CRC;7404]</p>\r\n<p>I have posted some notes from our modeller in the welcome thread I hope they will be of some assistance.</p>\r\n<p>[/quote]</p>\r\n<p>Many thanks for posting the tips. Will try them out when I get back from my no-internet no-laptop vacation. Good luck to everyone. May the best model win!</p>",
      "rawMarkdown": "",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 7318,
      "author_name": "vikpar",
      "author_url": "",
      "post_date": "12/18/2011 23:32:14",
      "content": "<p>I definitely agree that something is wrong with the evaluation statistic as computed by Kaggle.&nbsp; I have found that the evaluation metric for the testing set generally (and I say generally because there are a few large exceptions that I assume relate to the\r\n differing methods of sampling the testing and training data sets) correlates somewhat linearly with RMSE calculated on out of sample data from the training set.&nbsp; I suspect that this may be an issue of proportion rather than an issue of a completely different\r\n metric from RMSE being calcuated.&nbsp; The true RMSE may be divided by 2 or some other constant incorrectly.&nbsp; Of course, I could be completely off base here.&nbsp; Please let us know about this issue if possible, as several competitors have brought it up so far.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 7333,
      "author_name": "maxpowers",
      "author_url": "",
      "post_date": "12/19/2011 14:41:12",
      "content": "<p>I agree, my methods which beat the bid50/ask50 metric on the training data score horribly on the test data. Whats going on here?\r\n</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 7350,
      "author_name": "byang1",
      "author_url": "",
      "post_date": "12/20/2011 01:39:27",
      "content": "<p>I think for all competitions, Kaggle should release the source code to calculate leaderboard scores and a dummy test dataset (can be just random numbers), along with the calculated public and private scores.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 7352,
      "author_name": "anlthms",
      "author_url": "",
      "post_date": "12/20/2011 02:19:05",
      "content": "<p>[quote=B Yang;7350]</p>\r\n<p>I think for all competitions, Kaggle should release the source code to calculate leaderboard scores and a dummy test dataset (can be just random numbers), along with the calculated public and private scores.</p>\r\n<p>[/quote]</p>\r\n<p>I am not sure if anyone is monitoring these threads. The least they could do is acknowledge the question.</p>\r\n<p>Just came across another thread on a screw-up that happened in the wikipedia challenge:</p>\r\n<p>http://www.kaggle.com/forums/t/980/wikipedia-participation-challenge-an-unfortunate-ending</p>\r\n<p>What is really astonishing is the unapologetic tone of Kaggle's response.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 7357,
      "author_name": "anlthms",
      "author_url": "",
      "post_date": "12/20/2011 02:38:22",
      "content": "<p>[quote=Capital Markets CRC;7353]</p>\r\n<p>Hi Neil, the thread is being monitored. Sometimes it takes time to investigate thoroughly to prepare an appropriate response.</p>\r\n<p>[/quote]</p>\r\n<p>That's good to know. Thanks for your response.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 7360,
      "author_name": "byang1",
      "author_url": "",
      "post_date": "12/20/2011 05:59:49",
      "content": "<p>[quote=Neil Thomas;7352]I am not sure if anyone is monitoring these threads. The least they could do is acknowledge the question.</p>\r\n<p>Just came across another thread on a screw-up that happened in the wikipedia challenge:</p>\r\n<p><a href=\"http://www.kaggle.com/forums/t/980/wikipedia-participation-challenge-an-unfortunate-ending\">http://www.kaggle.com/forums/t/980/wikipedia-participation-challenge-an-unfortunate-ending</a></p>\r\n<p>[/quote]</p>\r\n<p>The 'Mapping Dark&nbsp;Matter'&nbsp;competition&nbsp;had outright errors in the 'ground-truth' data that was discovered by William &quot;The Prince&quot; Cukierski:</p>\r\n<p><a href=\"http://www.kaggle.com/c/mdm/forums/t/611/are-we-sure-the-ground-truth-is-correct\">http://www.kaggle.com/c/mdm/forums/t/611/are-we-sure-the-ground-truth-is-correct</a></p>\r\n<p>I bet you errors like this is the reason we haven't found dark matters or Higgs boson yet.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 7361,
      "author_name": "anlthms",
      "author_url": "",
      "post_date": "12/20/2011 06:40:09",
      "content": "<p>[quote=B Yang;7360]</p>\r\n<p>The 'Mapping Dark&nbsp;Matter'&nbsp;competition&nbsp;had outright errors in the 'ground-truth' data that was discovered by William &quot;The Prince&quot; Cukierski:</p>\r\n<p>[/quote]</p>\r\n<p>It's a small world - I see that name on the Leaderboard (currently just below me). I cannot be doing better than someone with an alias like that! Once Kaggle fixes their scoring system, the Leaderboard may look very different. I am gonna regret ever bringing\r\n this up :-)</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 7373,
      "author_name": "jeffmoser",
      "author_url": "",
      "post_date": "12/20/2011 15:14:08",
      "content": "<p>[quote=Neil Thomas;7314]</p>\r\n<p>Something doesn't smell right...</p>\r\n<p>I compared the testing dataset to the old testing dataset (the one you had appended to the training dataset as the last 50K lines). Using measures such as variance of the prices, mean and variance of the spread etc., they look very similar. And yet, they\r\n score very differently from each other. As I pointed out in another thread, the benchmark RMSE is ~0.85 for the testing dataset while it is 1.2695 for the old testing dataset. I have a few hypotheses.</p>\r\n<p>[/quote]</p>\r\n<p>Per your request, I went and double checked a few things on our end.&nbsp;</p>\r\n<p>[quote=Neil Thomas;7314]</p>\r\n<p>- the scoring is done in way less than 30% of the testing dataset.</p>\r\n<p>[/quote]</p>\r\n<p>The solution file contains exactly 5 million &quot;cells&quot; in the Excel sense where each cell is a bid or ask price. Each row has exactly 100 prices and there are 50,000 rows.</p>\r\n<p>The public scoring is done on exactly 1.5 million &quot;cells&quot;. The sampling was done such that all cells on a row were selected together. In other words, we randomly picked rows and then picked all the cells on that row.</p>\r\n<p>[quote=Neil Thomas;7314]</p>\r\n<p>- the 30-70 split was not done randomly.</p>\r\n<p>[/quote]</p>\r\n<p>While we didn't use a cryptographically secure random number generator for this competition, we did use a decent pseudo random number generator. The split looks random from a visual inspection, but more importantly there isn't a overall large variation between\r\n the public and private leaderboards which would lead me to believe there was a problem.</p>\r\n<p>[quote=Neil Thomas;7314]</p>\r\n<p>- the score is not RMSE, but some other beast.</p>\r\n<p>[/quote]</p>\r\n<p>I verified the score is correct to at least 12 decimal places by comparing it with manual calculations done with Excel. Here is what I did:</p>\r\n<ol>\r\n<li>I created a new Excel workbook </li><li>I put the solution answers in the &quot;Solution&quot; sheet.&nbsp;I disregarded headers such that cell A1 was &quot;754019&quot; and cell CW50000 was the ask100 price for row id 804018\r\n</li><li>I put your submission #72794 in a new sheet called &quot;Submission&quot; </li><li>I created a &quot;Differences&quot; sheet such that every cell was the difference between the solution and submission. For example, B1 is &quot;=Solution!B1 - Submission!B1&quot;\r\n</li><li>For each row in &quot;Differences&quot;, I calculated the sum of the squares of the differences and put this in CX. Specifically, CX1 is &quot;=SUMSQ(B1:CW1)&quot;\r\n</li><li>I put the public and private split labels in CY of the &quot;Differences&quot; sheet. For example, if the row is in the public set, there is a &quot;Public&quot; for that row, otherwise it's &quot;Private&quot;\r\n</li><li>I verified that there are 15,000 public rows and 35,000 private rows by doing &quot;=COUNTIF(CY1:CY50000, &quot;Public&quot;)&quot; and &quot;=COUNTIF(CY1:CY50000, &quot;Private&quot;)&quot; respectively\r\n</li><li>I verified the public RMSE calculation by doing &quot;=SQRT(SUMIF(CY1:CY50000, &quot;Public&quot;,CX1:CX50000 )/(COUNTIF(CY1:CY50000, &quot;Public&quot;)*100))&quot; This was exactly equal to what Kaggle calculated/reported to 12 decimal places. (Even though we only show ~6 decimal\r\n places, we store everything to double precision). </li><li>I verified the private RMSE calculation by doing &quot;=SQRT(SUMIF(CY1:CY50000, &quot;Private&quot;,CX1:CX50000 )/(COUNTIF(CY1:CY50000, &quot;Private&quot;)*100))&quot;. Again, this was exactly equal to what Kaggle calculated/reported to 12 decimal places.\r\n</li></ol>\r\n<p>Given all of this evidence, I don't think there is an error in the calculation code, especially given that it's only 1 line of code &quot;return Math.Sqrt(a.MeanSquaredDiff(b));&quot;</p>\r\n<p>[quote=Neil Thomas;7314]</p>\r\n<p>Another red flag is that minor tweaks to the code that should result in a small variation in accuracy actually leads to wild swings on the score reported by the scoring system.</p>\r\n<p>Please check and get back to us.</p>\r\n<p>[/quote]</p>\r\n<p>I have a few ideas for why you might be seeing some issues:</p>\r\n<ol>\r\n<li>This competition uses RMSE, however the security prices were not normalized. The net effect is that you are rewarded more for predicting higher-priced securities.\r\n</li><li>The test set/solution file was sampled from a large collection of trades. To get a feel for what the current solution distribution looks like, take a look at the previous test solution that is the last 50,000 training rows. If you look at the mean/stdev/median/percentiles@5%\r\n increments, you can see that they're roughly the same distribution. However, given what RMSE favors (see #1), you might see a wide fluctuation if a tweak causes your high price security predictions to be worse.\r\n</li></ol>\r\n<div>As a competitor, you might also be interested in comparing your models using\r\n<a href=\"http://en.wikipedia.org/wiki/Symmetric_mean_absolute_percentage_error\">Symmetric Mean Absolute Percentage Error</a> (SMAPE) using all of the training set except the last 50,000 rows and then use the last 50,000 rows as the test set. This effectively\r\n gives you a normalized score across all predictions.&nbsp;</div>\r\n<div>Although we currently have the SMAPE metric in our system, we didn't have it when this competition launched, so it wasn't an option then. You're strongly encouraged to develop solutions that do well both on SMAPE and RMSE, but this specific competition\r\n uses RMSE.</div>\r\n<div>The RMSE metric still rewards having good predictive power on at least the high priced securities which would still be a good outcome of this competition.</div>\r\n<div>Does that explanation help understand the issue better?</div>",
      "votes": null,
      "replies": []
    },
    {
      "id": 7374,
      "author_name": "dejavu",
      "author_url": "",
      "post_date": "12/20/2011 15:22:07",
      "content": "<p>Thanks Jeff. Without disclosing details, I am pretty sure that the issue is a sampling issue and not a scoring issue. This data is peculiar.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 7377,
      "author_name": "wcukierski",
      "author_url": "",
      "post_date": "12/20/2011 15:33:47",
      "content": "<p>I, for one, will not be satisfied until Jeff personally scores all Kaggle submissions by hand to 14 decimal places using an abacus, quill pen, and parchment paper. &nbsp;</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 7388,
      "author_name": "dejavu",
      "author_url": "",
      "post_date": "12/21/2011 00:13:20",
      "content": "<p>Perhasps I shouldn't have used the term 'issue'. I think the apparent 'problem' with inconsistent scores is due to sampling, but I don't think this is an issue. The data is what it is, and I think you have well explained the reasons behind your method of\r\n sampling.&nbsp;</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 7396,
      "author_name": "anlthms",
      "author_url": "",
      "post_date": "12/21/2011 06:02:30",
      "content": "<p>[quote=Jeff Moser;7373]</p>\r\n<p>Per your request, I went and double checked a few things on our end. </p>\r\n<p>[/quote]</p>\r\n<p>Jeff,</p>\r\n<p>Thanks for checking. It seems like I was barking up the wrong tree.</p>\r\n<p>Your explanation implies that the new testing dataset happens to have characteristics that are drastically different from both the training set and the old testing set. It is unfortunate that this shifts the focus away from the main task of coming up with\r\n effective algorithms to predict the response to liquidity shocks. In order to get a good score, the contestants have to filter the training set until the data matches up with the testing set. I understand any such competition would involve some amount of overfitting\r\n and the model that wins may not generalize well. But in this specific case, the model that wins may not even perform well on the training data itself!</p>\r\n<p>The original testing set does not seem to suffer from this issue. If the answers were not inadvertently revealed, we wouldn't be wasting time talking about this. But I guess that's life.</p>\r\n<p>As a side note, it is irrelevant if the 12th decimal matched up or not. Same goes for the properties of your random number generator. Let's not make it needlessly complicated. If there is an error in the procedure, one would expect it to be more mundane.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 7418,
      "author_name": "smcinerney",
      "author_url": "",
      "post_date": "12/21/2011 21:29:49",
      "content": "<p>[quote=Capital Markets CRC;7385]</p>\r\n<p>we have made the sampling process as transparent as possible. When the market can be swinging &#43;/- 3% on any given day there will be a lot of peculiar effects. &nbsp;Let me know if there are any specific concerns with sampling and we will address as best we can.</p>\r\n<p>[/quote]</p>\r\n<p>We are working on the assumption that the overall up/down macro-behavior on a given day or hour,&nbsp;for the market, or stock sector, or individual stock, can be ignored. i.e. assume the trend is flat. Is this correct? Did anyone investigate otherwise? i.e.\r\n a) which security_ids are correlated, or b) splicing together the training set to infer the macro-behavior of the market? c) There are samples from 53 days in the test set, does the particular day have any effect?</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 7425,
      "author_name": "smcinerney",
      "author_url": "",
      "post_date": "12/21/2011 23:11:20",
      "content": "<p>[quote=Capital Markets CRC;7419]</p>\r\n<p>It is possible that detrending the data for a given time slice may yield superior results.</p>\r\n<p>[/quote]</p>\r\n<p>Right, that was my question, to other users.&nbsp;Specifically: suppose we find that for stocks A,B and C in the training set, day 1, between 11-12am, the market is trending down. Should we then apply that to detrend training data for stock D on the same date\r\n &amp; time? or not detrend?</p>\r\n<p>And what about the test set (which has 53 days)?</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 7471,
      "author_name": "anlthms",
      "author_url": "",
      "post_date": "12/23/2011 21:24:07",
      "content": "<p>[quote=Capital Markets CRC;7404]</p>\r\n<p>By using testing data from a separate time period perhaps the model will be more generalized than it would have been otherwise. Of course that is a highly speculative statement and we will never know however I'm just making the point that perhaps there is\r\n a small silver lining in all this.</p>\r\n<p>[/quote]</p>\r\n<p>Don't know about that. In real life, wouldn't one retrain the system continuously with real-time data? In that case, which model is more useful? A generalized model that can give reasonable predictions for any time period or one that excels in predicting\r\n the immediate future from the recent past?</p>\r\n<p>[quote=Capital Markets CRC;7404]</p>\r\n<p>I have posted some notes from our modeller in the welcome thread I hope they will be of some assistance.</p>\r\n<p>[/quote]</p>\r\n<p>Many thanks for posting the tips. Will try them out when I get back from my no-internet no-laptop vacation. Good luck to everyone. May the best model win!</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "7314": "",
    "7318": "",
    "7333": "",
    "7350": "",
    "7352": "",
    "7357": "",
    "7360": "",
    "7361": "",
    "7373": "",
    "7374": "",
    "7377": "",
    "7388": "",
    "7396": "",
    "7418": "",
    "7425": "",
    "7471": ""
  },
  "source": "meta"
}