Package QSTK :: Package qstkutil :: Module bollinger
[hide private]
[frames] | no frames]

Source Code for Module QSTK.qstkutil.bollinger

 1  # python imports 
 2  import cPickle 
 3  from pylab import * 
 4  from pandas import * 
 5  import datetime as dt 
 6   
 7  #qstk imports 
 8  import qstkutil.DataAccess as da 
 9  import qstkutil.dateutil as du 
10   
11 -def calcavg(period):
12 sum = zeros(len(period.columns)) 13 count=0 14 for day in period.index: 15 sum+=period.xs(day) 16 count+=1 17 return(sum/count)
18
19 -def calcdev(period):
20 avg=calcavg(period) 21 devs=zeros(len(period.columns)) 22 count=0 23 for day in period.index: 24 devs+=(period.xs(day)-avg*ones(len(period.columns)))*(period.xs(day)-avg*ones(len(period.columns))) 25 count+=1 26 return(sqrt(devs/count))
27
28 -def calcbvals(adjclose, timestamps, stocks, lookback):
29 for i in adjclose.values: 30 if i == 'NaN': 31 adjclose.values[adjclose.values.index(i)]=1; 32 bvals=DataMatrix(index=[timestamps[0]],columns=stocks,data=[zeros(len(stocks))]) 33 for i in range(1,len(timestamps)): 34 s=i-lookback 35 if s<0: 36 s=0 37 lookbackperiod=adjclose[s:i] 38 avg = calcavg(lookbackperiod) 39 stddevs = calcdev(lookbackperiod) 40 if not(0 in stddevs): 41 b=(adjclose[i:i+1]-avg*ones(len(lookbackperiod.columns)))/stddevs 42 bvals=bvals.append(DataMatrix(index=[timestamps[i]],columns=stocks,data=b)) 43 return(bvals)
44