On 14/02/17 01:55, Allan Tanaka via Tutor wrote: > Hi. Not sure why this code produces the error like this. This error appears > when i run the code of print "Hurst(GBM): %s" % hurst(gbm): > Traceback (most recent call last): File "<pyshell#31>", line 1, in <module> > print "Hurst(GBM): %s" % hurst(gbm)NameError: name 'hurst' is not defined > > Here is the full code:>>> import statsmodels.tsa.stattools as ts >>>> import urllib>>> from datetime import datetime>>> from pandas_datareader >>>> import data, wb>>> from pandas_datareader.data import DataReader>>> goog = >>>> DataReader("GOOG", "yahoo", datetime(2000,1,1), datetime(2017,1,1))>>> >>>> ts.adfuller(goog['Adj Close'], 1>>> import numpy as np >>>> from numpy import cumsum, log, polyfit, sqrt, std, subtract>>> from >>>> numpy.random import randn>>> def hurst(ts): lags = range(2, 100) tau = >>>> [np.sqrt(std(subtract(ts[lag:], ts[:-lag]))) for lag in lags] poly = >>>> np.polyfit(log(lags), log(tau), 1) return poly[0]*2.0>>> gbm = >>>> log(cumsum(randn(100000))+1000)>>> mr = log(randn(100000)+1000)>>> tr = >>>> log(cumsum(randn(100000)+1)+1000)>>> print "Hurst(GBM): %s" % hurst(gbm)
The mail system has mangled your code, you need to post in plain text to preserve layout. I'll try to reconstruct it based on >>> as the interpreter prompt: >>> import urllib >>> from datetime import datetime >>> from pandas_datareader import data, wb >>> from pandas_datareader.data import DataReader >>> goog = DataReader("GOOG", "yahoo", datetime(2000,1,1), datetime(2017,1,1)) >>> ts.adfuller(goog['Adj Close'], 1 there seems to be a missing closing paren here? Also where does 'ts' come from, its not defined above? >>> import numpy as np >>> from numpy import cumsum, log, polyfit, sqrt, std, subtract >>> from numpy.random import randn >>> def hurst(ts): lags = range(2, 100) tau = [np.sqrt(std(subtract(ts[lag:], ts[:-lag]))) for lag in lags] poly = np.polyfit(log(lags), log(tau), 1) return poly[0]*2.0 >>> gbm = log(cumsum(randn(100000))+1000) >>> mr = log(randn(100000)+1000) >>> tr = log(cumsum(randn(100000)+1)+1000) >>> print "Hurst(GBM): %s" % hurst(gbm) Is that right? Apart from the missing ')' and undefined ts, it looks OK. Have you tried putting it into a file and running it as a script? That will avoid risk of pollution from any previous context in the interpreter. -- Alan G Author of the Learn to Program web site http://www.alan-g.me.uk/ http://www.amazon.com/author/alan_gauld Follow my photo-blog on Flickr at: http://www.flickr.com/photos/alangauldphotos _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor