I came across a very interesting post on Intelligent Trading blog titled "Can one beat a Random Walk-- IMPOSSIBLE (you say?)" The author suggests that there is a trading strategy that will generate profits on a random walk, and provides R code for such strategy, as well as link to a mathematical explanation.
Lively discussion has emerged in the comments, with people debating whether the strategy is correctly implemented, and if it can be applied to the real world trading instruments to generate profit. Unfortunately I think the author made a small mistake confusing returns with prices, and the mathematical rule that he is using cannot be applied for profitable trading even in theoretical world.
The author at Intelligent Trading uses the "75% rule" to predict the next in the series of returns or actually what the author thinks are returns, but in reality return increments. The first time I have heard of 75% rule was from a paper by D. Sornette (author of Why Stock Markets Crash) and J.V. Andersen. (I don't have the access to the book referenced in the Intelligent Trading blog to compare the math) The title of the paper succinctly summarizes the finding: "Increments of Uncorrelated Time Series Can Be Predicted With a Universal 75% Probability of Success," but if you want all the details you can download the paper from arxiv.
The paper explains that signs of increments of uncorrelated times series with symmetric sign distributions are predictable with probability of 75%. In layman terms this can be explained as follows - if a stock was down today, there is a 75% chance that tomorrows return will be higher than todays; if a stock was up today, there is a 75% chance that tomorrows return will be lower than todays. Unfortunately the rule does not apply to signs of the next day returns, so it cannot tell you whether the market will be up or down tomorrow.
In the code provided at Intelligent Trading the author simulates trading in these return increments which are predictable, not in returns which are unpredictable. As you can see in the code variable x is the time series of returns: x<-rnorm(100), but profit and loss (variable change) is calculated from return differences: change[i]<-x[i+1]-x[i] .
One of the commentators on the blog already provided the same explanation, I just hope this blog post provides more detailed explanation of this fascinating counterintuitive phenomenon.