Created
June 18, 2013 20:17
-
-
Save shabbychef/5808945 to your computer and use it in GitHub Desktop.
iPython notebook to replicate the paper 'Quantifying Trading Behavior in Financial Markets Using Google Trends.'
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "metadata": { | |
| "name": "Google_trends" | |
| }, | |
| "nbformat": 3, | |
| "nbformat_minor": 0, | |
| "worksheets": [ | |
| { | |
| "cells": [ | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": "# Quantifying Trading Behavior in Financial Markets Using Google Trends \n\nI reanalyze the data from the paper [Quantifying Trading Behavior in Financial Markets Using Google Trends,](http://www.nature.com/srep/2013/130425/srep01684/full/srep01684.html) by Preis, Moat and Stanley. The objectives of this reanalysis are:\n\n 1. To correct for the suspicious accounting around short sales.\n 2. To assess whether the results are simply due to data mining.\n 3. To test drive some metods for assessing strategy performance.\n \nThis analysis is possible because the original authors have provided the Google trends and DJIA data and code used in their paper. \n\nWhile this is an iPython notebook, all the work is done in R via the `rmagic` extension.\n\n" | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": "# throat clearing\n%load_ext rmagic", | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [], | |
| "prompt_number": 1 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": "%%R\n# my notebook is wider than the default 80 chars, so set it here:\noptions(width=300)\n# get some packages if you do not have them:\nrequire(xts)", | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "metadata": {}, | |
| "output_type": "display_data", | |
| "text": "Loading required package: xts\nLoading required package: zoo\n\nAttaching package: \u2018zoo\u2019\n\nThe following object is masked from \u2018package:base\u2019:\n\n as.Date, as.Date.numeric\n\n" | |
| } | |
| ], | |
| "prompt_number": 2 | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": "## Load the data\n\nHere I load the data from github, then separate the trends data and DJIA data into separate `xts` objects.\n" | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": "%%R \n\n# Read data file; if you have it locally, do this:\n# dat <- read.csv(\"PreisMoatStanley_ScientificReports_3_1684_2013.dat\",sep=\" \")\n# else, workaround for curl/ssl download from github (see http://stackoverflow.com/a/4127133/164611 )\ntemporaryFile <- tempfile()\ndownload.file(\"https://raw.github.com/leesanglo/Replicating_google_trends/master/PreisMoatStanley_ScientificReports_3_1684_2013.dat\",\n destfile=temporaryFile, method=\"curl\")\ndat <- read.csv(temporaryFile,sep=\" \")\n\n# peel off DJIA data, and make into an xts\nDJIA.data <- dat[,names(dat) %in% c(\"DJIA.Date\",\"DJIA.Closing.Price\")]\ndat <- dat[,!(names(dat) %in% names(DJIA.data))]\n# add +1 day to the date to round up to midnight.\nDJIA.xts <- xts(DJIA.data[,\"DJIA.Closing.Price\"],\n\t\t\t\t\t\t\t\torder.by=as.POSIXct(DJIA.data[,\"DJIA.Date\"])+86400)\n\n# peel off dates and make into an xts\ngoogle.dates <- dat[,names(dat) %in% c(\"Google.Start.Date\",\"Google.End.Date\")]\ndat <- dat[,!(names(dat) %in% names(google.dates))]\nsearch.terms.xts <- xts(dat,order.by=as.POSIXct(google.dates[,\"Google.End.Date\"]))\n\n# clean up\nrm(list=c(\"DJIA.data\",\"google.dates\",\"dat\"))", | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [], | |
| "prompt_number": 3 | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": "## Generate the signal\n\nNow, for every search term used, adjust the search frequency for the previous `delta.t` weeks' values. This follows the methodology of the original authors, but is applied by a vectorized function. I spot check my work.\n\nAfter this, I break ties arbitrarily. In this case, any centered term less than `1e-5` in absolute value is moved to that value. Later we will use the _sign_ of the signal to determine whether to take long or short positions, so this has the effect of taking a long position in the case of a tie. This is arguably a mild headwind given the long bias of the market, but actually has little effect. If you would like, you can change the `TIE.BREAKER` and `TIE.LIMIT` values to explore." | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": "%%R\n# this function takes a vector, and returns the difference\n# between a value and the mean value over the previous\n# boxwin values.\nrunning.center <- function(x,lag=10) {\n\tx.cum <- cumsum(x)\n\tx.dif <- c(x.cum[1:lag],diff(x.cum,lag))\n\tx.df <- pmin(1:length(x.cum),lag)\n\tx.mu <- x.dif / x.df\n\tx.ret <- c(NaN,x[2:length(x)] - x.mu[1:(length(x)-1)])\n\treturn(x.ret)\n}\n# follow the authors in using a 3 week window: \ndelta.t <- 3\n\n# make the detrended 'signal'\nsignal.xts <- xts(apply(search.terms.xts,2,running.center,lag=delta.t),\n\t\t\t\t\t\t order.by=time(search.terms.xts))\n# at this point, do a spot check to make sure our function worked OK\nmy.err <- signal.xts[delta.t+5,10] - \n\t\t\t\t\t(search.terms.xts[delta.t+5,10] - mean(search.terms.xts[5:(delta.t+4),10]))\nif (abs(my.err) > 1e-8)\n\tstop(\"fancy function miscomputes the running mean\")\n# chop off the first delta.t rows\nsignal.xts <- signal.xts[-c(1:delta.t)]\nmkt.xts <- DJIA.xts[-c(1:delta.t)] # and for the market\n\n# trading signal; the original authors 'short' the trend:\ntrade.xts <- - signal.xts\n# break ties arbitrarily. anything smaller than a certain absolute \n# value gets moved to the tie-breaker. \nTIE.BREAKER <- 1e-5\nTIE.LIMIT <- abs(TIE.BREAKER)\ntrade.xts[abs(trade.xts) <= TIE.LIMIT] <- TIE.BREAKER", | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [], | |
| "prompt_number": 4 | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": "## Backtest the signal\n\nNow I 'backtest' the signal. This is a _very_ simplistic backtesting function, and should not be used for real evaluation of strategies (insert standard legal disclosure here). For the purposes of evaluating a weekly-rebalancing, single instrument strategy where the cost to short is essentially zero, market impact is low, _etc._, this is a reasonable, if slightly optimistic, estimate of trading performance. It does assume you can trade on the index (instead of an ETF), and also assumes your positions are perfectly sized, and you pay no commissions. If a strategy looked profitable based on this backtest, you would want to go to the next finer level of backtest fidelity, although I doubt it will be warranted in this case.\n\nIf you would like to test the signal as a _magnitude_, you can uncomment one line below. \n" | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": "%%R\n# braindead 'backtest' function\ndumb.bt <- function(sig.xts,mkt.xts) {\n\tif (dim(sig.xts)[1] != dim(mkt.xts)[1])\n\t\tstop(\"wrong row sizes\")\n\tmkt.lret <- diff(log(mkt.xts),lag=1)\n\tmkt.rret <- exp(mkt.lret) - 1\n\tmkt.rret <- as.matrix(mkt.rret[-1]) # chop the first\n\tsig.xts <- sig.xts[-dim(sig.xts)[1]] # chop the last\n\tbt.rets <- xts(apply(sig.xts,2,function(v) { v * mkt.rret }),\n\t\t\t\t\t\t\t\t order.by=time(sig.xts))\n\treturn(bt.rets)\n}\n# backtest the sign:\nbt.rets <- dumb.bt(sign(trade.xts),mkt.xts)\n# instead, backtest the magnitude:\n#bt.rets <- dumb.bt(4 * trade.xts,mkt.xts)\nbt.lrets <- log(1 + bt.rets) # compute log returns\nbt.mtm <- exp(apply(bt.lrets,2,cumsum))", | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [], | |
| "prompt_number": 5 | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": "## Evaluate performance\n\nNow I take the log returns from the 98 tested search terms' backtests, and perform t-tests on each of them. I am testing against a two-sided alternative. This seems reasonable, since the trading scheme is so oddly defined: take the sign of the centered search data, then _short it_. I suspect that the more obvious version of going _long_ this signal was first tested, and found to be lacking. That is, we can assume that one would be happy to either trade on any of these strategies if they looked profitable, or short any of them if doing so also looked profitable. Thus a two-sided alternative.\n\nJust using the vanilla t-test ignores possible autocorrelation and heteroskedasticity, which tend to inflate the achieved type I rate. This is not of great concern, since I suspect we will not reject the null anyway.\n\nI then Q-Q plot the p-values from the 98 t-tests against a uniform law. Under the null hypothesis that the Google trends data is independent of future DJIA returns, (and ignoring the fact that the backtests are correlated with each other!), the Q-Q plot should fall along the $y=x$ line, which I plot in red here. To my eye, this just looks like data mining (the bad kind)." | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": "%%R -w 500 -h 500 \n\n# first: apply a t-test to every column, get the p-values\nttest.pvals <- apply(bt.lrets,2,function(x) { \n\t\t\t\t\t\tt.res <- t.test(x,alternative=\"two.sided\")\n\t\t\t\t\t\tp.v <- t.res$p.value\n\t\t\t\t\t\t\t\t })\n# function for Q-Q plot against uniformity\nqqunif <- function(x,xlab=\"Theoretical Quantiles under Uniformity\",\n\t\t\t\t\t\t\t\t\t ylab=NULL,...) {\n\tif (is.null(ylab))\n\t\tylab=paste(\"Sample Quantiles (\",deparse(substitute(x)),\")\",sep=\"\")\n\tqqplot(qunif(ppoints(length(x))),x,xlab=xlab,ylab=ylab,...)\n\tabline(0,1,col='red')\n}\nqqunif(ttest.pvals)", | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "metadata": {}, | |
| "output_type": "display_data", | |
| "png": "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\nJdAAAAAASUVORK5CYII=\n" | |
| } | |
| ], | |
| "prompt_number": 6 | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": "### Compared to random data\n\nHere I spawn an equal number of totally random strategies, backtest them in the same way, perform a t-test then Q-Q plot the p-values. I expect the results to look just like the above plot. Indeed they do. This suggests that the mild deviation from the $y=x$ line seen above is 'normal'." | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": "%%R -w 500 -h 500\n\nset.seed(12345) # remind me to change my luggage combo ;)\nrand.xts <- xts(matrix(rnorm(prod(dim(trade.xts))),nrow=dim(trade.xts)[1]),\n order.by=time(trade.xts))\n# backtest the sign:\nrand.rets <- dumb.bt(sign(rand.xts),mkt.xts)\nrand.lrets <- log(1 + rand.rets) # compute log returns\n\nttest.rand.pvals <- apply(rand.lrets,2,function(x) { \n\t\t\t\t\t\tt.res <- t.test(x,alternative=\"two.sided\")\n\t\t\t\t\t\tp.v <- t.res$p.value\n })\nqqunif(ttest.rand.pvals)", | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "metadata": {}, | |
| "output_type": "display_data", | |
| "png": "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\n" | |
| } | |
| ], | |
| "prompt_number": 7 | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": "## Evaluation via contingency tables\n\nHere I perform another kind of 'backtest': For a given signal, I construct the $2\\times 2$ contingency table based on the sign of the centered Google Trends signal, and the sign of the leading DJIA weekly return. I then perform an odds-ratio test, and compute the p-value. Again, ignoring correlation across search terms, under the null these p-values should fall near the $y=x$ line when Q-Q plotted versus uniformity. Which they do." | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": "%%R -w 500 -h 500\n\n# perform oddsratio tests:\nrequire(epitools)\n# braindead 'odds-ratio backtest' function\ndumb.odds.bt <- function(sig.xts,mkt.xts) {\n\tif (dim(sig.xts)[1] != dim(mkt.xts)[1])\n\t\tstop(\"wrong row sizes\")\n\tmkt.lret <- diff(log(mkt.xts),lag=1)\n\tmkt.rret <- exp(mkt.lret) - 1\n\tmkt.rret <- as.matrix(mkt.rret[-1]) # chop the first\n\tsig.xts <- sig.xts[-dim(sig.xts)[1]] # chop the last\n\tbt.rets <- apply(sig.xts,2,function(v) { \n or.tst <- oddsratio(x=factor(sign(v)),y=factor(sign(mkt.rret)))\n or.tst$p.value[2,\"fisher.exact\"]})\n\treturn(bt.rets)\n}\n# odd-ratio backtest the sign:\nbt.odds <- dumb.odds.bt(sign(trade.xts),mkt.xts)\nqqunif(bt.odds)", | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "metadata": {}, | |
| "output_type": "display_data", | |
| "text": "Loading required package: epitools\n" | |
| }, | |
| { | |
| "metadata": {}, | |
| "output_type": "display_data", | |
| "png": "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\nTkxMLC0tffz48YwZM2JiYlatWlW/ex00aFD9fiA0O3l5NHIkTZkieOYGAHzmk3KXk5OLi4tr3br1\n5MmT27RpM2nSJHl5+bi4uLqvkSQjI/PZGpNYbBJ+nGCYffVqDLMDfMnnA45ycnKbN29+/Pix4Mx9\n8+bNsrKydd/NnTt3evfuffLkST6fL7j9tWYD4PvExf1vmN3M7OO3a553WlZWFh8fn5yczEQ4gMbi\nvxcOqxf6+vpRUVGOjo63b9/euHGjcHYKIuj8eVq/nkJD+e3aHTp48OTJkywWy9LSMjo6+u3bt5WV\nlRoaGq9fvzYyMnr37l1BQUFQUFDr1q2ZDg3AACGVOxHJy8ufPn3a19dX8AwEgG+Ul5cXFhZWUlIy\nrqCAffr0Yk3NQicnFoulra196NAhPp/fp0+fkSNHnj59msvl6urqDh06VDAXcPHixRUrVuzcuZPp\nIwBggPDKnYjExMQ8PDz69+8fFRUlzP1Ck1NWVhYeHl5cXKyiouLt7T1r1iyLW7cSL1zY2qPH6ePH\nJSQkunbtqq2traysXFhYaGhomJCQQETPnj2zsLBITEwUfIilpSUWNIVmq/ZFBbKzs0ePHt2mTZtX\nr165uLiUlZXV4y7NzMzWr19fjx8IIiY7O9vU1DQrK0taWnrWrFnmZmZOt251a99+Y/fuRRUVEhIS\nLBZLV1c3MTGxoqKiurpaXFxcVla2oqJCXl6+sLCw5nMqKirw3Gpotmovd3d39379+uXl5SkpKaWk\npCxsgGmz6Ojor0/LnDp1qs+/BAcH5+fn13sYaFRWr169fft2Nzc3Ozs7g06dRh44UKKtTb6+LDGx\nfv36paamSktLl5WVycnJFRYWKisr5+TkFBYWSklJaWpqPnv2TFpamojKy8sXLlxoZ2fH9NEAMINV\n68iKtrZ2fHx869at+Xx+Tk5O9+7dc3NzhR/u31xdXd+8efPXX38xHQQakKmp6f/+7s/LS+zS5aGp\nqdr8+UOGDBk1atT79+/PnTsnLy9/+fJlW1vb5cuX8/n80NBQSUnJVq1aVVRUqKiotG7dOiUlRUxM\nbPLkyc7OzkwfDcAXOTs7e3h4dOzYsSE+vPZr7iUlJVL/3MwtJyeHf9uCMAmuB2pVVtKkSVUrV7r5\n+u6YMuXp06dt2rRJSEjw8/Nr0aJFeHj48ePHuVwui8WaN2+evLx8eXm5uLg4m81mOj5Ao1B7uZua\n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\n4KH/B2U+u6rzZKUGAAAAAElFTkSuQmCC\n" | |
| } | |
| ], | |
| "prompt_number": 8 | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": "## Evaluation via Hotelling's test\n\nTo deal with possible correlation among the returns of the various search terms' implied strategies, I use Hotelling's test, which is the multivariate generalization of the t-test. Essentially I am testing whether the $98$-vector of daily log returns is mean zero (as in the zero vector). If this were the case, then all linear combinations (_i.e._ portfolios) of the implied strategies would also be zero mean. There is a fascinating connection between Markowitz optimization, Sharpe ratio, and Hotelling's test, but I digress.\n\nIn this case the sample optimal Markowitz portfolio has in-sample Sharpe of around $4.5\\mbox{yr}^{-1/2}$, with corresponding $T^2$ value of around 140. The corresponding p-value under the null of zero mean is around 0.35, meaning there is little evidence to suggest the returns are not zero mean. 95% confidence intervals on the population-maximal Sharpe (essentially inverting the non-central F distribution for non-centrality parameter) contain zero. Using the Kubokawa-Robert-Saleh ('KRS') method to estimate the population optimal Sharpe yields a value of around $0.9\\mbox{yr}^{-1/2}$. Note however that one cannot be certain to achieve this Sharpe because of mis-estimation of the Markowitz portfolio." | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": "%%R \nrequire(SharpeR)\n\n# under the latest github version of the package, this is legit,\n# but bonks under current CRAN version:\n#srs <- as.sr(bt.lrets)\n#sharpe.test <- sr_test(srs,alternative=\"two.sided\")\n# this gives the same plot as the t-test plot above, so skip it.\n#qqunif(sharpe.test$p.value)\n\n# Hotelling's test\nbig.sr <- as.sropt(bt.lrets)\nprint(big.sr)\nprint(confint(big.sr))\nprint(inference(big.sr,type=\"KRS\"))", | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "metadata": {}, | |
| "output_type": "display_data", | |
| "text": "Loading required package: SharpeR\n SR/sqrt(yr) T^2 value Pr(>T^2)\nSharpe 4.474 141.6 0.35\n 2.5 % 97.5 %\n[1,] 0 2.566544\n [,1]\n[1,] 0.8804619\n" | |
| } | |
| ], | |
| "prompt_number": 9 | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": "## Evaluation via simple cross-validation\n\nOne way to evaluate the (backtested) returns of a bunch of strategies is to split the historical data into an 'in-sample' and 'out-of-sample' period, and see how consistent the performance is across the divide. The rationale is that one would, at the cut time, observe the in-sample data, select a portfolio of the strategies to trade upon and experience the returns of the out-of-sample period. \n\nRather than get fancy, here I split the data into two equal-sized epochs, and scatter the Sharpe ratio in the in- and out-of-sample periods. I suspect this test is really no different than the Hotelling $T^2$ test, but is expressable in terms more easily understood by quant practitioners (or their bosses).\n\nIn this case, the cross-validation scatter is a blob; regression from in-sample to out-of-sample does not have a significant slope. If we selected the strategy with the highest in-sample Sharpe (around $2.0\\mbox{yr}^{-1/2}$), we would have been disappointed with its performance out of sample (Sharpe of $-0.5\\mbox{yr}^{-1/2}$).\n\nI should also note that the best in-sample performance is associated with the search term `home`, while the worst is associated with the term `fond`. Perhaps someone with a better imagination than I have can spin a story around these; they certainly are not as suggestive as the term `debt`, which gives the best performance in the entire sample." | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": "%%R -w 500 -h 500\n\n# split em.\nn.row <- dim(bt.lrets)[1]\nn.split <- floor(n.row/2)\n\n# you need the latest version of this:\n# require(devtools)\n# install_github('SharpeR',username='shabbychef)\nrequire(SharpeR)\nsrs.is <- as.sr(bt.lrets[1:n.split,])\nsrs.oos <- as.sr(bt.lrets[(n.split+1):n.row,])\ni.v.o <- lm(srs.oos$sr ~ srs.is$sr)\nprint(summary(i.v.o))\nplot(srs.is$sr,srs.oos$sr)\nabline(i.v.o)\n\ncat(sprintf(\"best in-sample strategy: '%s'\\n\",rownames(srs.is$sr)[which.max(srs.is$sr)]))\ncat(sprintf(\"worst in-sample strategy: '%s'\\n\",rownames(srs.is$sr)[which.min(srs.is$sr)]))", | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "metadata": {}, | |
| "output_type": "display_data", | |
| "text": "\nCall:\nlm(formula = srs.oos$sr ~ srs.is$sr)\n\nResiduals:\n Min 1Q Median 3Q Max \n-1.36416 -0.31939 0.00189 0.33204 1.08633 \n\nCoefficients:\n Estimate Std. Error t value Pr(>|t|) \n(Intercept) 0.15266 0.05808 2.628 0.00999 **\nsrs.is$sr 0.11175 0.11156 1.002 0.31899 \n---\nSignif. codes: 0 \u2018***\u2019 0.001 \u2018**\u2019 0.01 \u2018*\u2019 0.05 \u2018.\u2019 0.1 \u2018 \u2019 1\n\nResidual standard error: 0.4984 on 96 degrees of freedom\nMultiple R-squared: 0.01034,\tAdjusted R-squared: 3.572e-05 \nF-statistic: 1.003 on 1 and 96 DF, p-value: 0.319\n\nbest in-sample strategy: 'home'\nworst in-sample strategy: 'fond'\n" | |
| }, | |
| { | |
| "metadata": {}, | |
| "output_type": "display_data", | |
| "png": "iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0CAMAAAD8CC+4AAAC61BMVEUAAAAFBQUHBwcICAgJCQkK\nCgoLCwsMDAwNDQ0PDw8QEBARERESEhITExMUFBQVFRUWFhYXFxcYGBgZGRkaGhobGxscHBwdHR0e\nHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJycoKCgpKSkqKiorKyssLCwuLi4vLy8wMDAxMTEy\nMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6Ojo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERF\nRUVGRkZHR0dISEhJSUlKSkpLS0tMTExNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dY\nWFhZWVlaWlpbW1tcXFxdXV1eXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampr\na2tsbGxtbW1ubm5vb29wcHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+\nfn5/f3+AgICBgYGCgoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCR\nkZGSkpKTk5OUlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6Ok\npKSlpaWmpqanp6eoqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3\nt7e4uLi5ubm6urq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnK\nysrLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd\n3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w\n8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7///8Sym1sAAAgAElE\nQVR4nO2dd0BUV7rAebtrkpfETdmXvN23b13dkn3ZKB0GGAYboBBFsDcUsWBBASvW2FAxxliCvRM7\nYglR7FGjYAMFRaIBpCiCUpQy58937x3KMDN35vYy5/v9cRju3HPPGX7Mufeee853HBCAHQ5yVwCQ\n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\nAElFTkSuQmCC\n" | |
| } | |
| ], | |
| "prompt_number": 10 | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": "## Evaluation via Sharpe equality tests\n\nHere I use the [Leung and Wong test](http://papers.ssrn.com/sol3/papers.cfm?abstract_id=907270) for equality of Sharpe ratios, as well as the [Wright, Yam, Yung variant](http://www.sta.cuhk.edu.hk/scpy/Preprints/John%20Wright/A%20test%20for%20the%20equality%20of%20multiple%20Sharpe%20ratios.pdf). Both of these tests reject the null that all 98 search terms' backtests have the same Sharpe. I do not have a lot of experience with these tests (and may not have implemented them correctly!), but suspect they can reject for reasons which are not interesting. On the other hand, these tests might actually be very powerful, but suggest a difference so small that we are unlikely to capture it in the real world (again, due to error in selecting the optimal portfolio).\n" | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": "%%R\nrequire(SharpeR)\n\n# these do *not* have equal SR; but the test\n# can reject for weird reasons...\nall.eq <- sr_equality_test(as.matrix(bt.lrets),type=\"F\")\nprint(all.eq)\nall.eq <- sr_equality_test(as.matrix(bt.lrets),type=\"chisq\")\nprint(all.eq)", | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "metadata": {}, | |
| "output_type": "display_data", | |
| "text": "\n\ttest for equality of Sharpe ratio, via F test\n\ndata: as.matrix(bt.lrets)\nT2 = 243.6777, contrasts = 97, p-value = 5.141e-05\nalternative hypothesis: true sum squared contrasts of SNR is not equal to 0\n\n\n\ttest for equality of Sharpe ratio, via chisq test\n\ndata: as.matrix(bt.lrets)\nT2 = 243.6777, contrasts = 97, p-value = 1.317e-14\nalternative hypothesis: true sum squared contrasts of SNR is not equal to 0\n\n" | |
| } | |
| ], | |
| "prompt_number": 11 | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": "# Conclusions\n\nThe tests conducted here suggest there is no detectable predictive ability of Google Trends search data on the future returns of the DJIA when processed in the form suggested by Preis _et al._ The results seen by those authors are entirely consistent with data-mining bias.\n" | |
| } | |
| ], | |
| "metadata": {} | |
| } | |
| ] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment