In [2]:
#!/Tsan/bin/python
# -*- coding: utf-8 -*-

In [3]:
# Libraries To Use
from __future__ import division 
import numpy as np
import pandas as pd
import statsmodels.api as sm
import os
from sklearn import linear_model
from datetime import datetime,time,date
import matplotlib.pyplot as plt
import seaborn as sns
import time

In [6]:
# Import My own library for factor testing
from SingleFactorTest import factorFilterFunctions as ff
#from config import *


c:\python27\lib\site-packages\statsmodels\compat\pandas.py:56: FutureWarning: The pandas.core.datetools module is deprecated and will be removed in a future version. Please use the pandas.tseries module instead.
  from pandas.core import datetools

In [4]:
import os

In [10]:
%load_ext line_profiler

In [9]:
path = ff.data_path # path

In [6]:
filenameFCAP = 'LZ_GPA_VAL_A_FCAP.csv'
os.path.split(path)


Out[6]:
('D:/cStrategy/Factor', '')

In [33]:
# --------------------------------------- Global Functions to def---------------------------------- #

In [34]:
# top functions to def
def simpleNormalize(narrowedData):
    dataWinsorized = narrowedData.copy()
    dataWinsorizedTrans = dataWinsorized.T
    MAD = 1.483*np.abs(dataWinsorizedTrans-dataWinsorizedTrans.median(skipna=True))
    return ((dataWinsorizedTrans - dataWinsorizedTrans.mean(axis=0, skipna=True))/dataWinsorizedTrans.std(axis=0, skipna=True)).T

In [44]:
# top function
def neutralizeFactor(normalizedFactorDF, normalizedLFCAPDF, datelist):
    factorNeutralized = pd.DataFrame(index=normalizedFactorDF.index, columns=normalizedFactorDF.columns, data=None, dtype = float)
    for date in datelist:
        LFCAPIndice = normalizedLFCAPDF.loc[date].dropna()
        factorIndice = normalizedFactorDF.loc[date].dropna()
        intersectionStocks = list(set(LFCAPIndice.index) & set(factorIndice.index))
        #dummy_Matrix = pd.get_dummies(IndustryDF.loc[date]).T.iloc[:-1]
        #dummy_Matrix = dummy_Matrix[intersectionStocks].append(LFCAPIndice.loc[intersectionStocks])
        try:
            result = sm. OLS(factorIndice.loc[intersectionStocks].T, LFCAPIndice.loc[intersectionStocks].T).fit()
            factorNeutralized.loc[date][intersectionStocks] = result.resid
        except:
            factorNeutralized.loc[date] = np.NaN
    return factorNeutralized

In [11]:
# --------------------------------------- Function Section End ---------------------------------- #

In [12]:
# Data prepared for Neuralization
FCAP1 = np.log10(pd.read_csv(path+filenameFCAP,infer_datetime_format=True,parse_dates=[0],index_col=0))
NormalizedFCAP = simpleNormalize(FCAP1 )

In [ ]:


In [13]:
# --------------------------------------- Calculate Forward Adjusted Price ---------------------------------- #

In [2]:
# the necessary files
filenameAdjustFactor='LZ_CN_STKA_CMFTR_CUM_FACTOR.h5'
filenamePirce='LZ_CN_STKA_QUOTE_TCLOSE.h5'

In [7]:
# first is to calculate forward adjusted pice
def calAdjustedPrice():
    # Adjusted factor
    AdjFacBackward=ff.readh5data(path,filenameAdjustFactor)
    #AdjFacBackward=AdjFacBackward[:]

    #PriceData to Adjust
    PriceToAdj=ff.readh5data(path,filenamePirce)
    #PriceToAdj=PriceToAdj[:]

    #Calculate
    print AdjFacBackward.shape
    print AdjFacBackward.max().shape
    AdjFacforward = AdjFacBackward / AdjFacBackward.max()
    adjustedPrice = (AdjFacforward * PriceToAdj).round(5)
    #adjustedPrice.index.name = 'LZ_GPA_DERI_AdjustedPriceForward_20-d' 
    adjustedPrice.index.name = 'Own_Factor_AdjustedPriceForward-1d'
    print adjustedPrice.index.name 
    adjustedPrice.to_csv(path+'Own_Factor_AdjustedPriceForward-1d.csv',na_rep='NaN',date_format='%Y%m%d')

In [16]:
AdjFacBackward = pd.read_csv(path+filenameAdjustFactor,infer_datetime_format=True,parse_dates=[0],index_col=0)

In [17]:
#closePrice = pd.read_csv(path+filenameClose,infer_datetime_format=True,parse_dates=[0],index_col=0)


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-17-75bfac330512> in <module>()
----> 1 closePrice = pd.read_csv(path+filenameClose,infer_datetime_format=True,parse_dates=[0],index_col=0)

NameError: name 'filenameClose' is not defined

In [11]:
calAdjustedPrice()


(3102, 3479)
(3479L,)
c:\python27\lib\site-packages\pandas\core\series.py:1295: RuntimeWarning: invalid value encountered in rint
  result = _values_from_object(self).round(decimals)
Own_Factor_AdjustedPriceForward-1d

In [11]:
filenameAdjPrice = 'Own_Factor_AdjustedPriceForward-1d.csv'
AdjPrice = pd.read_csv(path+filenameAdjPrice,infer_datetime_format=True,parse_dates=[0],index_col=0)

In [19]:
# --------------------------------------- Calculate ILLQ Factor(5-days average) ---------------------------------- #

In [20]:
# 
filenameClose = 'LZ_GPA_QUOTE_TCLOSE.csv'
filenameOpen = 'LZ_GPA_QUOTE_TOPEN.csv'
filenameVolume = 'LZ_GPA_QUOTE_TVOLUME.csv'

In [21]:
def calcILLQ(): # rolling_window is set as 5 days
    openPrice = pd.read_csv(path+filenameOpen,infer_datetime_format=True,parse_dates=[0],index_col=0)
    closePrice = pd.read_csv(path+filenameClose,infer_datetime_format=True,parse_dates=[0],index_col=0)
    volume = pd.read_csv(path+filenameVolume,infer_datetime_format=True,parse_dates=[0],index_col=0)
    if openPrice.shape != closePrice.shape:
        print openPrice.shape, closePrice.shape
        print 'data shape is not equal!'
    else:
        newdf = np.abs((closePrice - openPrice)/openPrice)/volume
        newdf = newdf.rolling(min_periods=5,window=5,center=False).mean()
        newdf.index.name = 'Own_Factor_ILLQ-1d'
        newdf.to_csv(path+'Own_Factor_ILLQ-1d.csv',na_rep='NaN',date_format='%Y%m%d')
        return newdf

In [22]:
#filenameILLQ = 'Own_Factor_ILLQ-1d.csv'
#openPrice = pd.read_csv(path+filenameILLQ,infer_datetime_format=True,parse_dates=[0],index_col=0)

In [ ]:


In [23]:
ILLQdf = calcILLQ()

In [24]:
# TO nuetralize DDA20
NormalizedILLQ = simpleNormalize(ILLQdf)
neutralizedILLQ = neutralizeFactor(NormalizedILLQ, NormalizedFCAP, NormalizedILLQ.index)
neutralizedILLQ.index.name = 'Own_Factor_ADJ_ILLQ_1D'
neutralizedILLQ.to_csv(path+neutralizedILLQ.index.name+'.csv',na_rep='NaN',date_format='%Y%m%d')

In [25]:
# --------------------------------------- Calculate FCAP Adjusted Turnover Volume---------------------------------- #

In [26]:
# --------------------------------------- ILLIQ End--------------------------------- #

In [27]:
# REMINDER: Code in this section can be used to neutralize any new factor! Use this to check some size-affected factor!!!

In [28]:
filenameTURNOVER = 'LZ_GPA_QUOTE_TVOLUME.csv'
filenameFCAP = 'LZ_GPA_VAL_A_FCAP.csv'

In [29]:
TURNOVER = pd.read_csv(path+filenameTURNOVER,infer_datetime_format=True,parse_dates=[0],index_col=0)
FCAP1 = np.log10(pd.read_csv(path+filenameFCAP,infer_datetime_format=True,parse_dates=[0],index_col=0))

TURNOVER= simpleNormalize(TURNOVER)

FCAP1 = simpleNormalize(FCAP1 )

datelist = FCAP1.index.tolist()

In [30]:
adjustedTurnOver = neutralizeFactor(TURNOVER , FCAP1, datelist)

In [31]:
adjustedTurnOver.index.name = 'Own_Factor_AdjustedTurnOver-1d'
adjustedTurnOver.to_csv(path+'Own_Factor_AdjustedTurnOver-1d.csv',na_rep='NaN',date_format='%Y%m%d')

In [32]:
# --------------------------------------- Calculate FCAP Adjusted PB ---------------------------------- #

In [33]:
filenamePB = 'LZ_GPA_VAL_PB.csv'
filenameFCAP = 'LZ_GPA_VAL_A_FCAP.csv'
PB = pd.read_csv(path+filenamePB ,infer_datetime_format=True,parse_dates=[0],index_col=0)
PB = simpleNormalize(PB)

In [ ]:


In [34]:
adjustedPB = neutralizeFactor(PB , FCAP1, datelist)
adjustedPB.index.name = 'Own_Factor_AdjustedPB-1d'
adjustedPB.to_csv(path+'Own_Factor_AdjustedPB-1d.csv',na_rep='NaN',date_format='%Y%m%d')

In [35]:
pb1 = pd.read_csv(path+'Own_Factor_AdjustedPB-1d.csv',infer_datetime_format=True,parse_dates=[0],index_col=0)

In [36]:
pb1.columns


Out[36]:
Index([u'000005.SZ', u'600601.SH', u'600602.SH', u'600651.SH', u'600652.SH',
       u'600653.SH', u'600654.SH', u'600656.SH', u'000004.SZ', u'000002.SZ',
       ...
       u'300652.SZ', u'300653.SZ', u'603488.SH', u'603269.SH', u'603758.SH',
       u'002872.SZ', u'002873.SZ', u'300656.SZ', u'603197.SH', u'603383.SH'],
      dtype='object', length=3330)

In [ ]:


In [37]:
# --------------------------------------- Calculate  x-days return volatility  ---------------------------------- #

In [38]:
filenameAdjPrice =  'Own_Factor_AdjustedPriceForward-1d.csv'

In [39]:
def calReturnVol(period): # 90days maybe good
    AdjPrice = pd.read_csv(path+filenameAdjPrice,infer_datetime_format=True,parse_dates=[0],index_col=0)
    returnDF = AdjPrice.pct_change()
    newdf = returnDF.rolling(min_periods=20,window=period,center=False).std()
    newdf.index.name = 'Own_Factor_Volatility_%dd' % period
    newdf.to_csv(path+'Own_Factor_Volatility_%dd.csv' % period,na_rep='NaN',date_format='%Y%m%d')
    return newdf

In [40]:
calReturnVol(90).tail()


Out[40]:
000005.SZ 600601.SH 600602.SH 600651.SH 600652.SH 600653.SH 600654.SH 600656.SH 000004.SZ 000002.SZ ... 300652.SZ 300653.SZ 603488.SH 603269.SH 603758.SH 002872.SZ 002873.SZ 300656.SZ 603197.SH 603383.SH
Own_Factor_Volatility_90d
2017-05-16 0.014060 0.013176 0.016601 0.019882 0.023213 0.011861 0.0 NaN 0.014479 0.013808 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-17 0.014031 0.013156 0.016669 0.020625 0.023218 0.011850 0.0 NaN 0.014405 0.013708 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-18 0.014110 0.013165 0.016527 0.020642 0.023214 0.011850 0.0 NaN 0.014389 0.013646 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-19 0.014082 0.013138 0.016610 0.020712 0.023263 0.011845 0.0 NaN 0.014367 0.013610 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-22 0.013808 0.013111 0.016685 0.020806 0.023382 0.011807 0.0 NaN 0.014424 0.013669 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 rows × 3330 columns


In [41]:
# --------------------------------------- Calculate  x-days return Skew ---------------------------------- #

In [42]:
def calReturnSkew(period):
    AdjPrice = pd.read_csv(path+filenameAdjPrice,infer_datetime_format=True,parse_dates=[0],index_col=0)
    returnDF = AdjPrice.pct_change()
    newdf = returnDF.rolling(min_periods=120,window=period,center=False).skew()
    newdf.index.name = 'Own_Factor_Return_Skew_%dD' % period
    newdf.to_csv(path+newdf.index.name+'.csv',na_rep='NaN',date_format='%Y%m%d')
    return newdf

In [43]:
calReturnSkew(250).tail()


Out[43]:
000005.SZ 600601.SH 600602.SH 600651.SH 600652.SH 600653.SH 600654.SH 600656.SH 000004.SZ 000002.SZ ... 300652.SZ 300653.SZ 603488.SH 603269.SH 603758.SH 002872.SZ 002873.SZ 300656.SZ 603197.SH 603383.SH
Own_Factor_Return_Skew_250D
2017-05-16 1.046336 0.779902 -0.484295 -0.804155 -0.062519 1.826635 0.324742 NaN 0.901697 0.978513 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-17 1.078530 0.821875 -0.422259 -0.758886 0.041365 1.826635 0.753594 NaN 0.901697 0.980540 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-18 1.216015 0.848010 -0.408484 -0.646619 0.116221 1.826635 1.011247 NaN 0.901697 0.982773 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-19 1.225200 0.846523 -0.408361 -0.648340 0.120582 1.823593 1.031172 NaN 0.901697 0.982002 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-22 1.219134 0.843510 -0.417755 -0.657809 0.117679 1.820546 1.025758 NaN 0.899874 0.980298 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 rows × 3330 columns


In [44]:
# --------------------------------------- Calculate  x-days return above 20 days MA  ---------------------------------- #

In [45]:
def calAbove20MA(period):
    AdjPrice = pd.read_csv(path+filenameAdjPrice,infer_datetime_format=True,parse_dates=[0],index_col=0)
    newdf = AdjPrice - AdjPrice.rolling(min_periods=20,window=period,center=False).mean()
    newdf = newdf.rolling(min_periods=20,window=period,center=False).mean()
    newdf.index.name = 'Own_Factor_Above20MA_%dd' % period
    newdf.to_csv(path+'Own_Factor_Above20MA_%dd.csv' % period,na_rep='NaN',date_format='%Y%m%d')
    return newdf

In [46]:
calAbove20MA(20).tail()


Out[46]:
000005.SZ 600601.SH 600602.SH 600651.SH 600652.SH 600653.SH 600654.SH 600656.SH 000004.SZ 000002.SZ ... 300652.SZ 300653.SZ 603488.SH 603269.SH 603758.SH 002872.SZ 002873.SZ 300656.SZ 603197.SH 603383.SH
Own_Factor_Above20MA_20d
2017-05-16 -0.450500 -0.25030 -0.410175 -0.83575 -0.390075 -0.211025 1.953993e-15 NaN -0.250200 -0.750650 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-17 -0.460800 -0.24715 -0.471825 -0.79685 -0.301400 -0.207550 1.953993e-15 NaN -0.190950 -0.748425 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-18 -0.468000 -0.24300 -0.529900 -0.75195 -0.230800 -0.200225 1.953993e-15 NaN -0.139700 -0.751975 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-19 -0.475844 NaN NaN NaN NaN NaN NaN NaN -0.097825 -0.756508 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-22 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 rows × 3330 columns


In [47]:
# --------------------------------------- Calculate  ARoon  ---------------------------------- #

In [10]:
AdjPrice = pd.read_csv(path+filenameAdjPrice,infer_datetime_format=True,parse_dates=[0],index_col=0).iloc[-1000:]
adcopy = AdjPrice.copy()


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-10-8304e56c21ae> in <module>()
----> 1 AdjPrice = pd.read_csv(path+filenameAdjPrice,infer_datetime_format=True,parse_dates=[0],index_col=0).iloc[-1000:]
      2 adcopy = AdjPrice.copy()

NameError: name 'filenameAdjPrice' is not defined

In [49]:
adcopy.iloc[:,2].head()


Out[49]:
Own_Factor_AdjustedPriceForward-1d
2013-04-12    3.93462
2013-04-15    3.84497
2013-04-16    3.91469
2013-04-17    3.94458
2013-04-18    3.97446
Name: 600602.SH, dtype: float64

In [50]:
def calAroon(data, l=20):
    datacopy = data.copy()
    for i in range(l,len(datacopy)):
        s = datacopy.iloc[i-l:i]
        #print s
        try:
            data.iloc[i] = pd.Timedelta(s.idxmax().date() - s.idxmin().date()).days/l
        except:
            data.iloc[i] = np.NaN
    return data

In [51]:
#aroonData = adcopy.iloc[:,:10].apply(calAroon,l=20)

In [52]:
# --------------------------------------- Aroon End  ---------------------------------- #

In [53]:
# --------------------------------------- Calculate  daily deal Amount(yuan)   ---------------------------------- #

In [54]:
filenameTVolume = 'LZ_GPA_QUOTE_TVOLUME.csv' # 成交量
filenameAdjPrice =  'Own_Factor_AdjustedPriceForward-1d.csv'

In [55]:
def calcDDA():
    turnOver = pd.read_csv(path+filenameTVolume,infer_datetime_format=True,parse_dates=[0],index_col=0)
    closePrice = pd.read_csv(path+filenameAdjPrice,infer_datetime_format=True,parse_dates=[0],index_col=0)
    #volume = pd.read_csv(path+filenameVolume,infer_datetime_format=True,parse_dates=[0],index_col=0)
    if turnOver.shape != closePrice.shape:
        print turnOver.shape, closePrice.shape
        print 'data shape is not equal!'
    else:
        newdf = turnOver * closePrice
        #newdf = newdf.rolling(min_periods=5,window=5,center=False).mean()
        newdf.index.name = 'Own_Factor_DDA-1d'
        newdf.to_csv(path+'Own_Factor_DDA-1d.csv',na_rep='NaN',date_format='%Y%m%d')
        return newdf

In [56]:
calcDDA()


Out[56]:
000005.SZ 600601.SH 600602.SH 600651.SH 600652.SH 600653.SH 600654.SH 600656.SH 000004.SZ 000002.SZ ... 300652.SZ 300653.SZ 603488.SH 603269.SH 603758.SH 002872.SZ 002873.SZ 300656.SZ 603197.SH 603383.SH
Own_Factor_DDA-1d
2005-01-04 1.120256e+04 9.511504e+04 3.648641e+04 4.231575e+04 4.286417e+04 46478.301754 34848.379104 7.744337e+04 13739.751792 1.176296e+05 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-05 1.104777e+04 1.539230e+05 7.705574e+04 1.189617e+05 3.607527e+04 36450.030077 66542.020171 2.682239e+04 24501.571164 2.070431e+05 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-06 1.028649e+04 7.519487e+04 9.378221e+04 1.406231e+05 5.684882e+04 30255.485960 33524.838585 8.755773e+03 23666.695054 2.156412e+05 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-07 4.150195e+04 1.162695e+05 8.110980e+04 5.668555e+04 5.576362e+04 34962.611051 62727.421697 3.152954e+04 17692.454404 2.093654e+05 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-10 1.024396e+05 1.451684e+05 8.156218e+04 6.196563e+04 2.280886e+04 35335.227232 113085.368636 2.329403e+05 15792.835194 8.330268e+04 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-11 2.546677e+04 7.329183e+04 6.653886e+04 7.007041e+04 2.777977e+04 30690.642067 53326.139704 4.126954e+05 51265.468366 7.055445e+04 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-12 1.819887e+04 9.166338e+04 5.598795e+04 3.804263e+04 2.549850e+04 29026.524715 54666.832954 2.388097e+05 22423.051945 8.959669e+04 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-13 2.032021e+04 1.246899e+05 4.048227e+04 1.689614e+05 2.643201e+04 36763.938919 77921.212387 3.383591e+05 49882.869110 1.099860e+05 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-14 1.890111e+04 1.520970e+05 5.239335e+04 1.093032e+05 6.019900e+04 39863.661422 56831.726570 3.200100e+05 42039.785261 9.886799e+04 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-17 2.449155e+04 1.062675e+05 7.289316e+04 5.262947e+04 8.441836e+04 57976.111495 47497.162300 3.989485e+05 37938.614077 1.166628e+05 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-18 1.781326e+04 8.545292e+04 4.290577e+04 6.102898e+04 1.086517e+05 54266.081670 36343.256701 3.475900e+05 22888.296542 6.624323e+04 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-19 8.594248e+03 7.922939e+04 2.610239e+04 5.181487e+04 0.000000e+00 186368.146189 123567.283047 5.378648e+05 15506.037161 5.216497e+04 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-20 1.634271e+04 9.901498e+04 4.906170e+04 5.299528e+04 9.495322e+04 90244.059975 68484.287433 3.423236e+05 30083.651581 6.605888e+04 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-21 2.095637e+04 2.533359e+05 1.878206e+05 7.419714e+04 1.352068e+05 97382.045520 85555.148214 2.620112e+05 32272.989782 2.202460e+05 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-24 2.760869e+04 2.427069e+05 9.047739e+04 8.329982e+04 1.026314e+05 100481.966679 152990.923142 1.106430e+06 30976.651197 2.370725e+05 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-25 3.036745e+04 1.519644e+05 8.445061e+04 9.057926e+04 4.924084e+04 72100.553904 525948.166218 6.416274e+05 14542.916723 1.491725e+05 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-26 2.272074e+04 2.270555e+05 8.884880e+04 4.888670e+04 6.951195e+04 58186.379486 227528.702587 4.901794e+05 22770.581597 1.513812e+05 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-27 1.515414e+04 1.656527e+05 8.242648e+04 4.392176e+04 1.012793e+05 50571.476020 149896.674793 5.803165e+05 18367.700000 9.722174e+04 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-28 2.846191e+04 9.735193e+04 4.855979e+04 5.136667e+04 1.115841e+05 49254.812382 110849.602438 1.091666e+05 25074.217269 7.218196e+04 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-31 2.261226e+04 1.148974e+05 6.656304e+04 1.027868e+05 1.015207e+05 72407.919856 80398.810318 2.348213e+05 23105.521553 6.519637e+04 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-01 1.308312e+04 7.502852e+04 6.669189e+04 8.355424e+04 9.726840e+04 56734.675175 57270.020119 4.036920e+05 18777.545556 7.526627e+04 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-02 2.654508e+04 2.675918e+05 1.259238e+05 1.606026e+05 5.540180e+04 99544.204300 150554.923439 4.330155e+05 20399.701747 2.609310e+05 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-03 2.540250e+04 2.241487e+05 8.928150e+04 5.749277e+04 5.469893e+04 129057.700356 119749.886212 1.966694e+05 20381.207702 3.057331e+05 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-04 1.721693e+04 1.166879e+05 6.354965e+04 8.179056e+04 4.410370e+04 66945.744766 77369.238876 1.195218e+05 25644.263137 2.608045e+05 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-16 2.384688e+04 1.225501e+05 1.063959e+05 6.941006e+04 3.746457e+04 51574.263495 76120.596315 1.087187e+05 16586.545410 2.520548e+05 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-17 1.196743e+04 1.377186e+05 2.648203e+05 7.152300e+04 2.777534e+04 77796.964838 122421.659495 3.384543e+05 13706.295696 1.761569e+05 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-18 1.212460e+04 7.736526e+04 1.115299e+05 1.235841e+05 4.819897e+04 143345.189335 142259.630047 1.725355e+05 11999.951880 2.091161e+05 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-21 1.616672e+04 8.447533e+04 7.476160e+04 7.851941e+04 1.010238e+05 79765.673353 62039.734524 9.151982e+04 9979.382861 1.596507e+05 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-22 3.733881e+04 2.991371e+05 1.504528e+05 8.390825e+04 1.110693e+05 227943.775769 185466.060430 1.977340e+05 29465.767327 1.931802e+05 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-23 4.622540e+04 2.923720e+05 1.614172e+05 7.767409e+04 1.089598e+05 169087.056319 190318.319374 2.219155e+05 39051.752220 1.966241e+05 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2017-04-10 4.924874e+05 1.050331e+06 0.000000e+00 1.181574e+06 1.586952e+06 299333.073600 0.000000 NaN 0.000000 5.656748e+06 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-11 1.603514e+06 7.577455e+05 0.000000e+00 1.615611e+06 2.082527e+06 442611.375000 0.000000 NaN 0.000000 9.498406e+06 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-12 3.679510e+06 6.991159e+05 0.000000e+00 8.986810e+05 1.022734e+06 307717.401200 0.000000 NaN 0.000000 1.357588e+07 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-13 1.665342e+06 5.446866e+05 0.000000e+00 5.727437e+05 6.479522e+05 333229.135200 0.000000 NaN 0.000000 5.634983e+06 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-14 1.014576e+06 7.816053e+05 0.000000e+00 9.297255e+05 7.011642e+05 350581.132800 0.000000 NaN 0.000000 4.509963e+06 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-17 6.921857e+05 5.144285e+05 0.000000e+00 9.822530e+05 1.479050e+06 315247.981500 0.000000 NaN 0.000000 3.364102e+06 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-18 4.013761e+05 4.498098e+05 0.000000e+00 6.620676e+05 1.396131e+06 229106.845000 0.000000 NaN 0.000000 2.783691e+06 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-19 6.363480e+05 6.714494e+05 0.000000e+00 1.001009e+06 1.159071e+06 343271.955400 0.000000 NaN 0.000000 4.030605e+06 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-20 4.055987e+05 5.967227e+05 0.000000e+00 5.379158e+05 8.172823e+05 297277.645000 0.000000 NaN 0.000000 5.120650e+06 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-21 2.535503e+05 3.257941e+05 0.000000e+00 4.844003e+05 5.761759e+05 177110.774100 0.000000 NaN 0.000000 4.310634e+06 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-24 4.909218e+05 8.445794e+05 0.000000e+00 7.811646e+05 7.737634e+05 303740.673600 0.000000 NaN 0.000000 3.679299e+06 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-25 2.778065e+05 3.721637e+05 0.000000e+00 4.935079e+05 5.066547e+05 183124.822700 0.000000 NaN 0.000000 2.798158e+06 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-26 2.569544e+05 3.431379e+05 0.000000e+00 5.585382e+05 2.179240e+06 242170.760000 0.000000 NaN 0.000000 3.790887e+06 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-27 7.195762e+05 6.798496e+05 0.000000e+00 6.684285e+05 1.625202e+06 412431.426000 0.000000 NaN 0.000000 1.025778e+07 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-28 2.901095e+05 3.565424e+05 0.000000e+00 4.700166e+05 8.621194e+05 201748.057400 0.000000 NaN 0.000000 6.969907e+06 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-02 2.818193e+05 3.399902e+05 0.000000e+00 2.550007e+06 8.159078e+05 215669.688000 0.000000 NaN 0.000000 3.540934e+06 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-03 3.769124e+05 3.149217e+05 0.000000e+00 9.726461e+05 1.035581e+06 271705.765100 0.000000 NaN 0.000000 5.078359e+06 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-04 3.059355e+05 3.803780e+05 0.000000e+00 9.221377e+05 7.898646e+05 186437.282000 0.000000 NaN 0.000000 3.394443e+06 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-05 3.158098e+05 4.713108e+05 0.000000e+00 4.584540e+05 6.728289e+05 188946.079200 0.000000 NaN 0.000000 2.201645e+06 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-08 3.132766e+05 5.281005e+05 0.000000e+00 4.950072e+05 7.148057e+05 0.000000 0.000000 NaN 0.000000 3.398409e+06 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-09 2.628452e+05 4.199133e+05 2.736786e+05 4.326382e+05 5.006618e+06 0.000000 0.000000 NaN 0.000000 2.300766e+06 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-10 2.865533e+05 4.531821e+05 1.396717e+06 1.985490e+06 3.511007e+06 0.000000 0.000000 NaN 0.000000 2.913924e+06 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-11 5.027018e+05 6.695611e+05 1.261848e+06 8.882804e+05 2.423075e+06 0.000000 0.000000 NaN 0.000000 6.681185e+06 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-12 4.321714e+05 4.613474e+05 5.090900e+05 6.785698e+05 2.437613e+06 0.000000 0.000000 NaN 0.000000 4.310559e+06 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-15 1.950257e+05 8.574097e+05 3.885100e+05 3.258812e+05 1.506677e+06 0.000000 0.000000 NaN 0.000000 2.361283e+06 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-16 4.406482e+05 5.725537e+05 6.319132e+05 8.416667e+05 2.234716e+06 0.000000 0.000000 NaN 0.000000 3.638947e+06 ... 2069.9637 590.8000 2424.106280 NaN NaN NaN NaN NaN NaN NaN
2017-05-17 3.087729e+05 4.857116e+05 5.372691e+05 1.752282e+06 2.730119e+06 0.000000 0.000000 NaN 0.000000 2.665198e+06 ... 805.1200 278.5500 569.646972 1364.27074 2332.807206 NaN NaN NaN NaN NaN
2017-05-18 2.079733e+05 3.712842e+05 3.990259e+05 7.275898e+05 1.530900e+06 0.000000 0.000000 NaN 0.000000 1.985120e+06 ... 1176.6768 309.7188 1045.495939 567.45000 2192.704090 NaN NaN NaN NaN NaN
2017-05-19 1.807417e+05 NaN NaN NaN NaN NaN NaN NaN 0.000000 1.952242e+06 ... NaN NaN 2339.088700 957.71760 3781.502600 NaN NaN NaN NaN NaN
2017-05-22 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

3007 rows × 3330 columns


In [57]:
filenameDDA = 'Own_Factor_DDA-1d.csv'
DDAdf = pd.read_csv(path+filenameDDA,infer_datetime_format=True,parse_dates=[0],index_col=0)

In [58]:
def DDAaverage(period):
    DDAmean = DDAdf.rolling(min_periods=20,window=period,center=False).mean()
    DDAmean.index.name = 'Own_Factor_DDA-%dd' % period
    DDAmean.to_csv(path+'Own_Factor_DDA-%dd.csv' % period, na_rep='NaN',date_format='%Y%m%d')
    return DDAmean

In [59]:
DDA20df= DDAaverage(20)

In [60]:
# TO nuetralize DDA20
NormalizedDDA20 = simpleNormalize(DDA20df)
neutralizedDDA20 = neutralizeFactor(NormalizedDDA20, NormalizedFCAP, NormalizedDDA20.index)
neutralizedDDA20.index.name = 'Own_Factor_ADJ_DDA_20D'
neutralizedDDA20.to_csv(path+neutralizedDDA20.index.name+'.csv',na_rep='NaN',date_format='%Y%m%d')

In [ ]:


In [61]:
# --------------------------------------- Calculate  annual idiosyncratic volatility(daily updated)   ---------------------------------- #

In [37]:
# 市值因子收益率计算我使用了样本空间内因子值最小的1/3股票构建的流通市值加权组合与最大1/3股票构建的流通市值加权组合收益率之差
# 估值因子收益率计算我使用了样本空间内因子值最大的1/3股票构建的流通市值加权组合与最小1/3股票构建的流通市值加权组合收益率之差
def cal_factor_return(factor, stkreturn, LFLO,factorname):
    '''
    To cal the return of the factor by group method( best(1/3) - worst(1/3))
    Output: Dataframe, the factor Return with only one value column
    Input:
    factor: Dataframe, the factor Value df, Note that shift(1) has been used before this function is used
    stkreturn:  Dataframe, the return of all stock in the market. No shift needed.
    LFLO : Dataframe, Natural logarithm of float market values, in order to weighting the return.
    factorname:  String, the name of the factor!
    '''
    factorReturn = pd.DataFrame(index=factor.index[1:-1], columns=[factorname], data =None , dtype =float)
    for date in factorReturn.index:
        factorSlice = factor.loc[date].dropna()
        stkreturnSlice = stkreturn.loc[date].dropna()
        LFLOSice = LFLO.loc[date].dropna()
        intersection = list(set(factorSlice.index) & set(stkreturnSlice.index) & set(LFLOSice.index))
        
        factorSlice = factorSlice.loc[intersection]
        stkreturnSlice = stkreturnSlice.loc[intersection]
        LFLOSlice = LFLOSlice.loc[intersection]
        
        q_min = factorSlice.quantile(0.33)
        q_max = factorSlice.quantile(0.66)
        q_min_univ = factorSlice[factorSlice<=q_min]
        q_max_univ = factorSlice[factorSlice>=q_max]
        LFLOSlice_min_univ = LFLOSlice.loc[q_min_univ.index]
        LFLOSlice_max_univ = LFLOSlice.loc[q_max_univ.index]
        q_min_return = (LFLOSlice_min_univ * stkreturnSlice.loc[q_min_univ.index]).sum() / LFLOSlice_min_univ.sum()
        q_max_return = (LFLOSlice_max_univ * stkreturnSlice.loc[q_max_univ.index]).sum() / LFLOSlice_max_univ.sum()
        #print q_min_return
        factorReturn.loc[date] = q_min_return - q_max_return
    return factorReturn

In [9]:
startTime =  datetime.strptime('20100101', '%Y%m%d')
endTime = datetime.strptime('20170328', '%Y%m%d')
filenameAdjPrice =  'Own_Factor_AdjustedPriceForward-1d.csv'
filenameFCAP = 'LZ_GPA_VAL_A_FCAP.csv'
filenamePB='LZ_GPA_VAL_PB.csv'  # 市净率
filenameBENCH = 'LZ_GPA_INDXQUOTE_CLOSE.csv'
ZZ500Index = '000905.SH' #   ZZ500 index code

In [10]:
pricedf = pd.read_csv(path+filenameAdjPrice,infer_datetime_format=True,parse_dates=[0],index_col=0).loc[startTime:endTime]
FCAPdf  = pd.read_csv(path+filenameFCAP,infer_datetime_format=True,parse_dates=[0],index_col=0).loc[startTime:endTime]
PBdf = pd.read_csv(path+filenamePB,infer_datetime_format=True,parse_dates=[0],index_col=0).loc[startTime:endTime]
benchmarkdf = pd.read_csv(path+filenameBENCH,infer_datetime_format=True,parse_dates=[0],index_col=0)[ZZ500Index].loc[startTime:endTime].pct_change()
returndf = pricedf.pct_change()
FCAPdf = FCAPdf .shift(1)
PBdf = PBdf.shift(1)
FCAPdf.tail()


Out[10]:
000005.SZ 600601.SH 600602.SH 600651.SH 600652.SH 600653.SH 600654.SH 600656.SH 000004.SZ 000002.SZ ... 603200.SH 300658.SZ 300660.SZ 603042.SH 002877.SZ 002878.SZ 300661.SZ 603496.SH 300662.SZ 300663.SZ
LZ_GPA_VAL_A_FCAP-d
2017-03-22 631611.7134 985506.1506 825918.6874 815507.8476 756457.5094 670610.0417 1.316040e+06 NaN 329771.5014 2.056177e+07 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-23 623050.7113 972336.8034 825918.6874 797829.5436 732637.1453 668863.6614 1.316040e+06 NaN 330518.1539 2.045498e+07 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-24 619245.8215 965752.1298 825918.6874 793986.4341 721048.8600 661878.1401 1.316040e+06 NaN 324296.0501 2.082389e+07 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-27 621148.2664 974531.6946 825918.6874 800135.4094 708816.7811 665370.9008 1.316040e+06 NaN 319982.0581 2.086272e+07 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-28 616392.1541 976726.5858 825918.6874 803209.8970 703666.4321 661878.1401 1.316040e+06 NaN 315502.1434 2.058322e+07 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 rows × 3348 columns


In [11]:
SizeReturn = cal_factor_return(FCAPdf, returndf , 'Size_Return')

In [12]:
SizeReturn


Out[12]:
Size_Return
LZ_GPA_VAL_A_FCAP-d
2010-01-05 0.001230
2010-01-06 0.005102
2010-01-07 0.002827
2010-01-08 0.006214
2010-01-11 0.006772
2010-01-12 0.002897
2010-01-13 0.021208
2010-01-14 0.010630
2010-01-15 0.005261
2010-01-18 0.008495
2010-01-19 -0.000830
2010-01-20 -0.004412
2010-01-21 0.003858
2010-01-22 -0.016548
2010-01-25 -0.001926
2010-01-26 -0.010710
2010-01-27 0.004978
2010-01-28 0.003391
2010-01-29 0.008864
2010-02-01 0.000428
2010-02-02 -0.001980
2010-02-03 -0.008115
2010-02-04 0.013252
2010-02-05 0.002262
2010-02-08 0.005689
2010-02-09 -0.004658
2010-02-10 0.001673
2010-02-11 -0.003399
2010-02-12 0.007824
2010-02-22 0.006900
... ...
2017-02-14 -0.000358
2017-02-15 -0.002036
2017-02-16 0.001187
2017-02-17 -0.002540
2017-02-20 -0.011086
2017-02-21 0.009006
2017-02-22 0.001384
2017-02-23 0.008960
2017-02-24 0.009414
2017-02-27 0.003303
2017-02-28 0.003423
2017-03-01 0.001903
2017-03-02 0.001349
2017-03-03 0.005487
2017-03-06 0.010643
2017-03-07 0.005137
2017-03-08 -0.001735
2017-03-09 0.000972
2017-03-10 0.000613
2017-03-13 -0.000013
2017-03-14 0.000911
2017-03-15 -0.001286
2017-03-16 0.008693
2017-03-17 0.002096
2017-03-20 0.004497
2017-03-21 0.000752
2017-03-22 0.001652
2017-03-23 -0.001541
2017-03-24 -0.004835
2017-03-27 0.000377

1754 rows × 1 columns


In [67]:
PBReturn = cal_factor_return(PBdf, returndf , 'PB_Return')

In [68]:
PBReturn.isnull().sum()


Out[68]:
PB_Return    0
dtype: int64

In [69]:
benchmarkdf = benchmarkdf.loc[PBReturn.index[0]:PBReturn.index[-1]]

In [70]:
benchmarkdf .isnull().sum()


Out[70]:
0

In [71]:
returndf = returndf.loc[PBReturn.index[0]:PBReturn.index[-1]]

In [72]:
startOfMonthList, endOfMonthList = ff.getLastDayOfMonth(PBReturn.index)

In [73]:
len(startOfMonthList)


Out[73]:
87

In [74]:
len(endOfMonthList)


Out[74]:
87

In [75]:
datetuple = list(zip(startOfMonthList,endOfMonthList))

In [76]:
def calIdoVol(returnDF , factorReturnList , datetuple ,torelance = 0.05):
    '''
    function to calculate to idiosyncratic volatility.
    Output: Dataframe, The idiosyncratic volatility factor (same shape as ohter daily factor).
    Input : 
    returnDF: Dataframe, the data of the return of all stocks.
    factorReturn: List, the element is the factor-return dataframe. (Obtained by group-method so there is only one value \
    column(and one index column)
    for each dataframe).Note that this df has been shift(1) to ensure that future data is not used!
    datatuple: List, element is the tuple which is consisted of startTime and endTime. Usually zip by the startOfMonthList and endOfMonthList.
    torelance: float, to filter the Nan Value.
    '''
    startdf = pd.DataFrame()
    for i in datetuple:        
        returnDFSlice = returnDF.loc[i[0]:i[1]]
        tempdf= pd.DataFrame(index = returnDFSlice.index, columns = returnDFSlice.columns ,data = None ,dtype =float)
        newReturnSlice = returnDFSlice.loc[:,returnDFSlice.isnull().sum() < returnDFSlice.shape[1] * torelance]
        newReturnSlice = newReturnSlice.fillna(method = 'ffill').fillna(method = 'bfill')
        filterList = newReturnSlice.columns.tolist()
        mapfunction = map(lambda x: x.loc[i[0]:i[1]], factorReturnList)
        totaldf = pd.concat(mapfunction, axis=1) 
        for stk in filterList:
            result = sm.OLS(newReturnSlice[stk],totaldf).fit()
            tempdf[stk].loc[i[0]:i[1]] = np.std(result.resid) * np.sqrt(242)
        startdf = startdf.append(tempdf)
    return startdf

In [77]:
dfList = [PBReturn,SizeReturn,benchmarkdf]

In [78]:
dd = calIdoVol(returndf , dfList,datetuple)

In [79]:
dd.index.name = 'Own_FACTOR_Idiosyncratic_Volatility'
dd.head()


Out[79]:
000005.SZ 600601.SH 600602.SH 600651.SH 600652.SH 600653.SH 600654.SH 600656.SH 000004.SZ 000002.SZ ... 300652.SZ 300653.SZ 603488.SH 603269.SH 603758.SH 002872.SZ 002873.SZ 300656.SZ 603197.SH 603383.SH
Own_FACTOR_Idiosyncratic_Volatility
2010-01-05 0.267502 0.275782 0.183632 0.256143 0.131893 0.245651 0.192114 0.318826 0.0 0.161892 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2010-01-06 0.267502 0.275782 0.183632 0.256143 0.131893 0.245651 0.192114 0.318826 0.0 0.161892 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2010-01-07 0.267502 0.275782 0.183632 0.256143 0.131893 0.245651 0.192114 0.318826 0.0 0.161892 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2010-01-08 0.267502 0.275782 0.183632 0.256143 0.131893 0.245651 0.192114 0.318826 0.0 0.161892 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2010-01-11 0.267502 0.275782 0.183632 0.256143 0.131893 0.245651 0.192114 0.318826 0.0 0.161892 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 rows × 3330 columns


In [ ]:


In [80]:
dd.to_csv(path+'Own_Factor_Idiosyncratic_Volatility.csv', na_rep='NaN',date_format='%Y%m%d')

In [81]:
# --------------------------------------- Calculate  annual idiosyncratic volatility(daily updated)   ---------------------------------- #

In [82]:
ddc =dd.tail(100)

In [83]:
filenameIDIVOL = 'Own_Factor_Idiosyncratic_Volatility.csv'
idio = pd.read_csv(path+filenameIDIVOL,infer_datetime_format=True,parse_dates=[0],index_col=0)

In [84]:
idio.head()


Out[84]:
000005.SZ 600601.SH 600602.SH 600651.SH 600652.SH 600653.SH 600654.SH 600656.SH 000004.SZ 000002.SZ ... 300652.SZ 300653.SZ 603488.SH 603269.SH 603758.SH 002872.SZ 002873.SZ 300656.SZ 603197.SH 603383.SH
Own_FACTOR_Idiosyncratic_Volatility
2010-01-05 0.267502 0.275782 0.183632 0.256143 0.131893 0.245651 0.192114 0.318826 0.0 0.161892 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2010-01-06 0.267502 0.275782 0.183632 0.256143 0.131893 0.245651 0.192114 0.318826 0.0 0.161892 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2010-01-07 0.267502 0.275782 0.183632 0.256143 0.131893 0.245651 0.192114 0.318826 0.0 0.161892 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2010-01-08 0.267502 0.275782 0.183632 0.256143 0.131893 0.245651 0.192114 0.318826 0.0 0.161892 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2010-01-11 0.267502 0.275782 0.183632 0.256143 0.131893 0.245651 0.192114 0.318826 0.0 0.161892 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 rows × 3330 columns


In [85]:
dd.head()


Out[85]:
000005.SZ 600601.SH 600602.SH 600651.SH 600652.SH 600653.SH 600654.SH 600656.SH 000004.SZ 000002.SZ ... 300652.SZ 300653.SZ 603488.SH 603269.SH 603758.SH 002872.SZ 002873.SZ 300656.SZ 603197.SH 603383.SH
Own_FACTOR_Idiosyncratic_Volatility
2010-01-05 0.267502 0.275782 0.183632 0.256143 0.131893 0.245651 0.192114 0.318826 0.0 0.161892 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2010-01-06 0.267502 0.275782 0.183632 0.256143 0.131893 0.245651 0.192114 0.318826 0.0 0.161892 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2010-01-07 0.267502 0.275782 0.183632 0.256143 0.131893 0.245651 0.192114 0.318826 0.0 0.161892 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2010-01-08 0.267502 0.275782 0.183632 0.256143 0.131893 0.245651 0.192114 0.318826 0.0 0.161892 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2010-01-11 0.267502 0.275782 0.183632 0.256143 0.131893 0.245651 0.192114 0.318826 0.0 0.161892 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 rows × 3330 columns


In [86]:
def adj_boxplot(factorData):
    '''To calculate  adjusted -boxplot winsorized data and then Normalize the outcome
    Output: Dataframe, the winsorized and normalized data
    Input: 
    factorData:Dataframe, raw data, can contain nan value
    '''
    copyData = factorData.copy()
    for i in copyData.index:
        temp = copyData.loc[i]
        x = temp.dropna().values
        if len(x) > 0:
            mc = sm.stats.stattools.medcouple(x)
            x.sort()
            q1 = x[int(0.25*len(x))]
            q3 = x[int(0.75*len(x))]
            iqr = q3-q1
            if mc >= 0:
                l = q1-1.5*np.exp(-3.5*mc)*iqr
                u = q3+1.5*np.exp(4*mc)*iqr
            else:
                l = q1-1.5*np.exp(-4*mc)*iqr
                u = q3+1.5*np.exp(3.5*mc)*iqr
            temp.loc[temp < l] = l
            temp.loc[temp > u] = u
            #factor_data.loc[i] = (temp-temp.mean())/temp.std()
    Trans = copyData.T
    return ((Trans  - Trans .mean(axis=0, skipna=True))/Trans .std(axis=0, skipna=True)).T

In [87]:
%mprun  addd = adj_boxplot(dd)


ERROR:root:Line magic function `%mprun` not found.

In [88]:
%lprun -f adj_boxplot adj_boxplot(idio)

In [89]:
# --------------------------------------- Calculate  some random factor  ---------------------------------- #

In [90]:
filenameAdjPrice =  'Own_Factor_AdjustedPriceForward-1d.csv'
filenameVolume = 'LZ_GPA_QUOTE_TVOLUME.csv'
closePrice = pd.read_csv(path+filenameAdjPrice,infer_datetime_format=True,parse_dates=[0],index_col=0)
tradVol = pd.read_csv(path+filenameVolume,infer_datetime_format=True,parse_dates=[0],index_col=0)

In [91]:
def calrandfac(pricedf, factordf):
    sgndf= np.sign(pricedf.pct_change())
    tempo = factordf * sgndf
    tempo = tempo.ewm(ignore_na=True, min_periods=5, halflife = 5).mean()
    return tempo

In [92]:
overheatVol = calrandfac(closePrice, tradVol)

In [93]:
overheatVol


Out[93]:
000005.SZ 600601.SH 600602.SH 600651.SH 600652.SH 600653.SH 600654.SH 600656.SH 000004.SZ 000002.SZ ... 300652.SZ 300653.SZ 603488.SH 603269.SH 603758.SH 002872.SZ 002873.SZ 300656.SZ 603197.SH 603383.SH
LZ_GPA_QUOTE_TVOLUME-d
2005-01-04 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-05 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-06 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-07 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-10 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-11 17362.211023 15599.700509 8196.017254 7338.990601 1224.180126 6698.553599 10590.838322 -14326.736494 3880.029943 28860.425910 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-12 10402.596662 4943.392692 3961.613465 3901.998182 -714.132059 2198.381750 3396.387402 1668.029096 2044.179410 39472.459598 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-13 11233.659633 12637.857932 1585.294374 9984.066901 970.715897 1740.174325 8768.956296 -15194.558737 3484.987477 50336.580403 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-14 6374.148763 201.505827 -598.890251 3853.326015 -2465.104131 -2078.950153 2830.837631 -27492.719639 1318.541297 24416.840946 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-17 1834.721746 -6514.614880 -3010.419273 1223.984240 -6407.404637 -6573.772657 -1101.438848 -41250.269022 -228.435338 1917.324023 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-18 3782.781853 -372.724996 -1104.982374 3136.987284 -23.270023 -1250.193456 1513.724363 -50265.105525 544.656605 11300.030798 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-19 2104.734002 -4787.713318 -1738.346799 887.080048 -19.419772 12396.816800 8999.237683 -66899.945742 -26.747959 1988.422364 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-20 3674.168505 -9464.835119 -2947.002439 -970.981987 4243.827402 3971.022324 11689.459874 -72028.036183 -950.560024 10700.208668 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-21 711.664537 5464.652287 3018.957403 1504.239424 9353.561697 9959.097823 14869.020081 -60862.405165 156.048825 37072.508305 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-24 3610.939051 16954.523217 5106.368524 3790.941070 12146.056043 15025.780348 21014.273359 -4126.552617 1003.260626 60327.210697 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-25 6271.918086 6724.616050 2007.152465 5882.482830 8370.265103 12802.833146 44839.293746 -32124.880928 446.519957 51402.269620 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-26 2972.494548 -6009.459170 -788.205699 3613.237581 4386.235822 7204.960312 26857.977100 -49236.306489 -261.065716 25977.933115 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-27 965.358348 -13872.961511 -3024.619821 1814.315631 -263.640784 2916.160205 15178.193249 -67718.919636 -749.035039 10849.256766 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-28 -2196.249396 -6919.718065 -1237.761131 3036.231410 -4657.364228 -674.333622 7071.756691 -62946.574512 -1377.999240 17664.776515 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-31 -4367.739854 -12030.752115 -2952.088212 -370.778774 -8200.001735 -5345.499830 1678.907100 -64965.718848 -1899.455819 22626.741333 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-01 -2351.973958 -14306.280990 -4433.864057 2073.465299 -11325.510162 -8348.312546 4512.554979 -76015.963397 -2216.326524 27945.300015 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-02 695.489128 480.751152 -520.135215 6165.204034 -7511.275194 -1087.919892 11355.966324 -44547.774433 -1332.038639 51921.494951 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-03 -2072.976513 -10596.452115 -2854.917941 3736.033758 -8812.118994 -8993.721819 3672.194195 -48622.603778 -1748.110346 12202.788107 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-04 -25.553821 -3549.396935 -798.488085 5466.065663 -5785.716127 -3644.351764 7046.576789 -48244.722288 -793.056788 37376.587682 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-16 2346.990192 -8962.166524 2055.895229 6586.895150 -3473.359351 -22.919800 9857.728769 -36322.272108 -225.557377 57843.173365 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-17 3211.315537 -1281.971662 8299.833825 7600.472527 -1880.951640 4595.031651 14315.450404 -15870.558328 178.947208 32065.936984 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-18 1562.822543 -4818.364053 4373.244840 3134.595392 -3588.473334 -4547.423168 5522.550842 -22077.409616 -176.474547 5920.831818 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-21 2941.629046 -194.631265 5659.803175 4861.299299 845.473308 750.516834 7738.102470 -14829.454141 117.381656 21419.762797 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-22 6140.103196 13410.861492 8592.668117 6482.988229 5028.976183 13688.084409 15347.854509 -3798.525034 878.401349 38037.233437 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-23 9740.301899 24854.275809 3512.017197 3504.717708 8502.896741 2204.556596 22051.064577 6728.007877 1761.405585 13052.267996 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2017-04-10 -3744.076814 -30388.928535 35.038914 27682.986930 -75940.379334 -5027.896366 -1.298899 14955.619696 -2748.437695 69092.527468 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-11 28286.785243 -4111.196632 30.503146 4105.187314 -39834.899167 -19655.916193 -1.130758 14955.619696 -2392.653984 119547.730534 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-12 95504.611042 -24383.639048 26.554531 -7666.202367 -47760.542008 -27762.229408 -0.984382 14955.619696 -2082.926273 187677.956701 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-13 50675.090398 -5055.315946 23.117062 -13865.024259 -41577.966748 -12695.997895 -0.856954 14955.619696 -1813.292641 128548.127573 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-14 23753.006854 -27985.609107 20.124571 -24021.788323 -45317.863660 -23252.113001 -0.746022 14955.619696 -1578.562930 83622.170136 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-17 6589.663729 -40031.707785 17.519457 -33913.418703 -59416.260885 -31422.598599 -0.649450 14955.619696 -1374.218848 51616.340581 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-18 -2497.581062 -48647.641220 15.251573 -38313.528201 -71369.245058 -35570.404686 -0.565379 14955.619696 -1196.326992 27330.958221 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-19 -15482.006673 -63345.098391 13.277266 -46993.865267 -46117.619160 -43554.040160 -0.492191 14955.619696 -1041.463137 49207.477010 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-20 -22001.331868 -73985.455242 11.558531 -40910.535879 -28868.749788 -48910.972392 -0.428477 14955.619696 -906.646320 74968.730832 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-21 -13850.858523 -54171.706307 10.062286 -29055.553116 -33151.668571 -36047.597091 -0.373011 14955.619696 -789.281465 92247.103026 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-24 -22631.841189 -74698.334384 8.759728 -14760.857889 -40026.673971 -43083.356876 -0.324725 14955.619696 -687.109424 56992.836570 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-25 -25746.178301 -52924.059601 7.625787 -19596.041871 -27557.891416 -30471.995747 -0.282689 14955.619696 -598.163496 67241.423999 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-26 -22413.350023 -57261.738109 6.638633 -24792.228749 5517.981588 -35969.843324 -0.246095 14955.619696 -520.731568 34434.493516 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-27 -35572.082024 -72129.276709 5.779265 -21582.888703 26718.417895 -47492.056996 -0.214239 14955.619696 -453.323160 -37222.623208 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-28 -24514.631267 -51195.647561 5.031143 -12343.722704 34872.728152 -33525.023681 -0.186505 14955.619696 -394.640732 -78673.436629 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-02 -27719.083300 -33537.938241 4.379864 -49580.766735 19333.545518 -20925.370372 -0.162362 14955.619696 -343.554712 -92362.744770 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-03 -15689.498176 -39465.094196 3.812893 -58080.632058 2508.672713 -7902.177058 -0.141345 14955.619696 -299.081748 -115262.785750 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-04 -13658.501475 -46853.749054 3.319316 -36535.075313 -8966.293990 -14083.483834 -0.123048 14955.619696 -260.365784 -77239.623969 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-05 -19151.765800 -56676.819034 2.889633 -38904.508053 -7805.612284 -19763.134331 -0.107119 14955.619696 -226.661580 -82328.436152 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-08 -24086.378871 -67717.003688 2.515571 -41692.322313 -16952.281355 -17204.807724 -0.093253 14955.619696 -197.320366 -95489.263146 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-09 -14759.439660 -44494.283003 -4190.418424 -29547.712430 49923.207201 -14977.655056 -0.081181 14955.619696 -171.777356 -67132.913145 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-10 -19887.579139 -54719.311095 -25751.182826 4267.948702 -3443.129188 -13038.806046 -0.070672 14955.619696 -149.540874 -38238.746041 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-11 -29948.961637 -71645.429332 -44081.574800 -9876.425385 29272.717460 -11350.939948 -0.061524 14955.619696 -130.182892 11663.193175 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-12 -15354.777563 -45964.056641 -47162.095369 -19271.132120 -8228.970432 -9881.567166 -0.053560 14955.619696 -113.330790 38916.256460 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-15 -18269.238742 -10495.099121 -47798.597554 -11700.064065 13345.049444 -8602.403862 -0.046626 14955.619696 -98.660183 18073.666544 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-16 -5121.374181 10367.893665 -30675.158422 2513.019888 41016.186996 -7488.827528 -0.040591 14955.619696 -85.888678 -8762.038775 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-17 3054.831423 25528.423517 -17528.922376 27363.280694 71549.699159 -6519.403023 -0.035336 14955.619696 -74.770437 -25653.317290 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-18 -2488.228592 9407.107365 -22092.309857 13250.290071 42106.971166 -5675.469974 -0.030762 14955.619696 -65.091446 -35828.976696 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-19 -6699.376879 9407.107365 -22092.309857 13250.290071 42106.971166 -5675.469974 -0.030762 14955.619696 -56.665395 -17938.771121 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-22 -6699.376879 9407.107365 -22092.309857 13250.290071 42106.971166 -5675.469974 -0.030762 14955.619696 -56.665395 -17938.771121 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

3007 rows × 3330 columns


In [94]:
overheatVol.index.name = 'OVER_HEAT_VOL'
overheatVol.to_csv(path+'Over_Heat_Volume.csv', na_rep='NaN',date_format='%Y%m%d')

In [95]:
# --------------------------------------- Calculate  skewness  ---------------------------------- #
filenameAdjPrice =  'Own_Factor_AdjustedPriceForward-1d.csv'
closePrice = pd.read_csv(path+filenameAdjPrice,infer_datetime_format=True,parse_dates=[0],index_col=0)

In [96]:
# calculate N-days skewness of the price
def calSkewness(pricedf,period):
    df = pricedf.rolling(min_periods=250,window=period,center=False).skew()
    df.index.name =  'Own_Factor_Skewness_%dd' % period
    df.to_csv(path+'Own_Factor_Skewness_%dd.csv' % period,na_rep='NaN',date_format='%Y%m%d')
    return df

In [97]:
priceSkewness = calSkewness(closePrice,250)

In [98]:
# --------------------------------------- Calculate  TurnOver Rate Volatility ---------------------------------- #
filenameTOR= 'LZ_GPA_VAL_TURN.csv'
turnoverdf =  pd.read_csv(path+filenameTOR,infer_datetime_format=True,parse_dates=[0],index_col=0)
FCAP1 = np.log10(pd.read_csv(path+filenameFCAP,infer_datetime_format=True,parse_dates=[0],index_col=0))

In [99]:
def calToRvol(period):
    newdf = turnoverdf.rolling(min_periods=20,window=period,center=False).std()
    newdf.index.name = 'Own_Factor_Turnover_Volatility_%dD' % period
    newdf.to_csv(path+'Own_Factor_Turnover_Volatility_%dD.csv' % period,na_rep='NaN',date_format='%Y%m%d')
    return newdf

In [100]:
newsdf = calToRvol(20)

In [101]:
newsdf.tail()


Out[101]:
000005.SZ 600601.SH 600602.SH 600651.SH 600652.SH 600653.SH 600654.SH 600656.SH 000004.SZ 000002.SZ ... 300652.SZ 300653.SZ 603488.SH 603269.SH 603758.SH 002872.SZ 002873.SZ 300656.SZ 603197.SH 603383.SH
Own_Factor_Turnover_Volatility_20D
2017-05-16 0.243625 0.201857 NaN NaN 1.757617 0.227957 NaN NaN NaN 0.101149 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-17 0.244183 0.200327 NaN 0.887374 1.793755 0.234819 NaN NaN NaN 0.101016 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-18 0.231912 0.199931 NaN 0.888408 1.788389 0.230193 NaN NaN NaN 0.104054 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-19 0.239917 0.202112 0.610585 0.888166 1.807533 0.227105 1.742460e-07 NaN 0.0 0.106352 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-22 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 rows × 3330 columns


In [ ]:


In [102]:
NormalizedTOV = simpleNormalize(newsdf )
NormalizedFCAP = simpleNormalize(FCAP1 )

In [103]:
neutralizedTOV = neutralizeFactor(NormalizedTOV, NormalizedFCAP, NormalizedTOV.index)

In [104]:
neutralizedTOV.index.name = 'Own_Factor_ADJ_Turnover_Volatility_20D'
neutralizedTOV.to_csv(path+neutralizedTOV.index.name+'.csv',na_rep='NaN',date_format='%Y%m%d')

In [105]:
def calToRVolD(period):
    newdf = turnoverdf.rolling(min_periods=20,window=period,center=False).mean()
    newdf1 = turnoverdf.rolling(min_periods=500,window=500,center=False).mean()
    newdf = newdf / newdf1 -1
    newdf.index.name = 'Own_Factor_Turnover_Volatility_deviation_%dD' % period
    newdf.to_csv(path+'Own_Factor_Turnover_Volatility_deviation_%dD.csv' % period,na_rep='NaN',date_format='%Y%m%d')
    return newdf

In [106]:
df2 = calToRVolD(20)

In [107]:
df2 .tail()


Out[107]:
000005.SZ 600601.SH 600602.SH 600651.SH 600652.SH 600653.SH 600654.SH 600656.SH 000004.SZ 000002.SZ ... 300652.SZ 300653.SZ 603488.SH 603269.SH 603758.SH 002872.SZ 002873.SZ 300656.SZ 603197.SH 603383.SH
Own_Factor_Turnover_Volatility_deviation_20D
2017-05-16 -0.791950 -0.814949 NaN NaN -0.191896 -0.878575 NaN NaN NaN -0.804719 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-17 -0.792915 -0.812885 NaN NaN -0.161886 -0.886100 NaN NaN NaN -0.803625 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-18 -0.803024 -0.816743 NaN NaN -0.152835 -0.898041 NaN NaN NaN -0.805967 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-19 -0.807983 -0.820124 NaN NaN -0.101979 -0.908283 NaN NaN NaN -0.811706 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-22 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 rows × 3330 columns


In [108]:
NormalizedTOVD = simpleNormalize(df2)
neutralizedTOVD = neutralizeFactor(NormalizedTOVD, NormalizedFCAP, NormalizedTOVD.index)
neutralizedTOVD.index.name = 'Own_Factor_ADJ_Turnover_Volatility_Deviation_20D'
neutralizedTOVD.to_csv(path+neutralizedTOVD.index.name+'.csv',na_rep='NaN',date_format='%Y%m%d')

In [109]:
neutralizedTOVD .tail()


Out[109]:
000005.SZ 600601.SH 600602.SH 600651.SH 600652.SH 600653.SH 600654.SH 600656.SH 000004.SZ 000002.SZ ... 300652.SZ 300653.SZ 603488.SH 603269.SH 603758.SH 002872.SZ 002873.SZ 300656.SZ 603197.SH 603383.SH
Own_Factor_ADJ_Turnover_Volatility_Deviation_20D
2017-05-16 -0.574129 -0.658868 NaN NaN 0.338687 -0.721670 NaN NaN NaN -0.942587 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-17 -0.573583 -0.653131 NaN NaN 0.386787 -0.730623 NaN NaN NaN -0.936982 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-18 -0.574223 -0.639371 NaN NaN 0.412050 -0.733736 NaN NaN NaN -0.893379 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-19 -0.571486 -0.632480 NaN NaN 0.501338 -0.738356 NaN NaN NaN -0.880697 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-22 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 rows × 3330 columns


In [110]:
# --------------------------------------- Calculate  adjusted Own factor  ILLQ  ---------------------------------- #

In [ ]:
#  --------------------------------------- Calculate 5day price/ 20 day price  ---------------------------------- #

In [111]:
def cal_5_20_position(period):
    AdjPrice = pd.read_csv(path+filenameAdjPrice,infer_datetime_format=True,parse_dates=[0],index_col=0)
    newdf1 = AdjPrice.rolling(min_periods=5,window=5,center=False).mean()
    newdf2 = AdjPrice.rolling(min_periods=20,window=20,center=False).mean()
    newdf = newdf1 / newdf2
    newdf.index.name = 'Own_Factor_5_20_price_deviation_%dD' % period
    newdf.to_csv(path+'Own_Factor_5_20_price_deviation_%dD.csv' % period,na_rep='NaN',date_format='%Y%m%d')
    return newdf

In [112]:
cal_5_20_position(1)


Out[112]:
000005.SZ 600601.SH 600602.SH 600651.SH 600652.SH 600653.SH 600654.SH 600656.SH 000004.SZ 000002.SZ ... 300652.SZ 300653.SZ 603488.SH 603269.SH 603758.SH 002872.SZ 002873.SZ 300656.SZ 603197.SH 603383.SH
Own_Factor_Turnover_5_20_price_deviation_1D
2005-01-04 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-05 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-06 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-07 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-10 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-11 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-12 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-13 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-14 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-17 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-18 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-19 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-20 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-21 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-24 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-25 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-26 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-27 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-28 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-31 0.993097 0.952528 0.959076 0.997220 1.002464 0.992166 1.031967 0.840089 0.945412 1.027186 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-01 0.974828 0.937572 0.945298 0.988924 0.976873 0.975135 1.006752 0.830703 0.921097 1.021321 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-02 0.967267 0.942707 0.949157 0.988377 0.962595 0.972508 0.994326 0.825871 0.912062 1.026779 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-03 0.956540 0.948968 0.953562 0.987833 0.944039 0.969855 0.986560 0.813000 0.903737 1.031394 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-04 0.957104 0.955375 0.960139 0.988400 0.930779 0.970946 0.990791 0.794652 0.907672 1.041071 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-16 0.971326 0.970101 0.974167 0.996230 0.929297 0.980112 1.003550 0.794655 0.924144 1.051481 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-17 0.985182 0.987417 0.996440 1.004933 0.940948 0.994371 1.019402 0.817669 0.946139 1.058432 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-18 0.986264 0.985204 1.000000 0.996390 0.940052 0.995309 1.016089 0.833721 0.952221 1.052909 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-21 0.997518 0.991294 1.011529 0.996882 0.953368 1.001877 1.024276 0.863506 0.968803 1.053219 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-22 1.005865 0.999307 1.021676 0.996376 0.965801 1.010858 1.029878 0.897207 0.980940 1.047562 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-23 1.007874 1.007519 1.027592 0.989449 0.977456 1.015861 1.034590 0.926349 0.995056 1.037497 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2017-04-10 0.978993 0.978148 1.000000 1.014284 0.920533 0.987388 1.000000 NaN 0.945577 0.982741 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-11 0.989337 0.987805 1.000000 1.015365 0.928485 0.992628 1.000000 NaN 0.949542 0.983649 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-12 0.999768 0.990489 1.000000 1.010480 0.929357 0.993009 1.000000 NaN 0.953756 0.987104 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-13 1.007641 0.993758 1.000000 1.002822 0.931792 0.993526 1.000000 NaN 0.957829 0.990010 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-14 1.009886 0.989982 1.000000 0.992724 0.931494 0.991399 1.000000 NaN 0.960999 0.990019 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-17 1.013540 0.989257 1.000000 0.979251 0.934323 0.988454 1.000000 NaN 0.964630 0.991314 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-18 1.007054 0.985088 1.000000 0.968447 0.926555 0.984288 1.000000 NaN 0.968132 0.991651 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-19 0.993084 0.979836 1.000000 0.957558 0.923637 0.977397 1.000000 NaN 0.972316 0.988381 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-20 0.981827 0.972222 1.000000 0.946953 0.919903 0.967889 1.000000 NaN 0.977265 0.986710 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-21 0.976457 0.967824 1.000000 0.940774 0.916544 0.960734 1.000000 NaN 0.982385 0.988018 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-24 0.969297 0.959608 1.000000 0.940611 0.914387 0.950597 1.000000 NaN 0.986545 0.989192 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-25 0.962373 0.953521 1.000000 0.939448 0.919572 0.943200 1.000000 NaN 0.990031 0.992208 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-26 0.958809 0.950897 1.000000 0.941596 0.929732 0.937749 1.000000 NaN 0.992802 0.992579 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-27 0.952078 0.948292 1.000000 0.943251 0.941069 0.932780 1.000000 NaN 0.995933 0.987772 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-28 0.944582 0.945351 1.000000 0.945761 0.953100 0.928383 1.000000 NaN 0.998627 0.979910 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-02 0.939136 0.948788 1.000000 0.932033 0.969343 0.933129 1.000000 NaN 1.000000 0.971074 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-03 0.937288 0.951263 1.000000 0.920000 0.981283 0.939033 1.000000 NaN 1.000000 0.958587 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-04 0.936184 0.954513 1.000000 0.912541 0.980218 0.946285 1.000000 NaN 1.000000 0.949069 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-05 0.936288 0.954964 1.000000 0.902923 0.977894 0.951001 1.000000 NaN 1.000000 0.944920 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-08 0.931943 0.950660 1.000000 0.888184 0.974324 0.953635 1.000000 NaN 1.000000 0.940146 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-09 0.930325 0.946242 0.984908 0.895123 0.983617 0.953589 1.000000 NaN 1.000000 0.938999 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-10 0.923463 0.939804 0.965257 0.907085 0.993522 0.951662 1.000000 NaN 1.000000 0.941880 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-11 0.914402 0.931980 0.934712 0.915360 1.007231 0.953077 1.000000 NaN 1.000000 0.948336 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-12 0.911475 0.930350 0.902864 0.923009 1.015315 0.960094 1.000000 NaN 1.000000 0.957209 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-15 0.910651 0.938661 0.869652 0.934755 1.026186 0.966642 1.000000 NaN 1.000000 0.969225 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-16 0.912526 0.946115 0.857191 0.947351 1.021006 0.972264 1.000000 NaN 1.000000 0.978742 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-17 0.922262 0.958312 0.852377 0.961237 1.021038 0.977365 1.000000 NaN 1.000000 0.986889 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-18 0.932989 0.970387 0.861778 0.974638 1.020725 0.981337 1.000000 NaN 1.000000 0.988613 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-19 0.939244 NaN NaN NaN NaN NaN NaN NaN 1.000000 0.989185 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-22 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

3007 rows × 3330 columns


In [135]:
def cal_5_20_return(period):
    AdjPrice = pd.read_csv(path+filenameAdjPrice,infer_datetime_format=True,parse_dates=[0],index_col=0)
    returndf = AdjPrice.pct_change()
    newdf1 = returndf.rolling(min_periods=5,window=5,center=False).mean()
    newdf2 = returndf.rolling(min_periods=20,window=20,center=False).mean()
    newdf = newdf1 / newdf2
    newdf.index.name = 'Own_Factor_5_20_return_deviation_%dD' % period
    newdf.to_csv(path+'Own_Factor_5_20_return_deviation_%dD.csv' % period,na_rep='NaN',date_format='%Y%m%d')
    return newdf

In [136]:
cal_5_20_return(1).tail()


Out[136]:
000005.SZ 600601.SH 600602.SH 600651.SH 600652.SH 600653.SH 600654.SH 600656.SH 000004.SZ 000002.SZ ... 300652.SZ 300653.SZ 603488.SH 603269.SH 603758.SH 002872.SZ 002873.SZ 300656.SZ 603197.SH 603383.SH
Own_Factor_5_20_return_deviation_1D
2017-05-16 0.746786 -0.427015 2.165339 -1.129561 -1.771213 -0.0 NaN NaN NaN -2.014022 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-17 -0.245769 -1.539359 1.421817 -2.999003 0.950730 -0.0 NaN NaN NaN -1.553851 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-18 -0.390784 -1.615813 -0.053450 -3.914562 0.823843 -0.0 NaN NaN NaN 0.564281 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-19 0.245337 NaN NaN NaN NaN NaN NaN NaN NaN 0.891471 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-22 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 rows × 3330 columns


In [ ]:
#  --------------------------------------- Calculate sharpe ,downside risk and so on  ---------------------------------- #

In [10]:
def calsharpe(period):
    returndf = AdjPrice.pct_change()
    annualReturn = (returndf.rolling(min_periods=period,window=period,center=False).mean()+1)**(252/period) - 1 
    annualVol = (returndf.rolling(min_periods=period,window=period,center=False).std()) * np.sqrt(252/period)
    sharpe = annualReturn / annualVol
    sharpe.index.name = 'Own_Factor_sharpe_ratio_%dD' % period
    sharpe.to_csv(path + sharpe.index.name + '.csv',na_rep='NaN', date_format = '%Y%m%d')
    return sharpe

In [11]:
calsharpe(20).tail()


Out[11]:
000005.SZ 600601.SH 600602.SH 600651.SH 600652.SH 600653.SH 600654.SH 600656.SH 000004.SZ 000002.SZ ... 300652.SZ 300653.SZ 603488.SH 603269.SH 603758.SH 002872.SZ 002873.SZ 300656.SZ 603197.SH 603383.SH
Own_Factor_sharpe_ratio_20D
2017-05-16 -1.803191 -1.123105 -1.301375 -0.763498 0.191985 -1.390438 0.0 NaN NaN -0.842813 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-17 -1.643653 -1.020492 -1.207710 -0.400169 0.441375 -1.257772 0.0 NaN NaN -0.846567 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-18 -1.629873 -0.995893 -1.224239 -0.322203 0.315023 -1.028427 0.0 NaN NaN -0.955271 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-19 -1.706517 NaN NaN NaN NaN NaN NaN NaN NaN -1.004093 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-22 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 rows × 3330 columns


In [39]:
# better calc 250 days downside risk
def caldownsideRisk(period):
    returndf = AdjPrice.pct_change()
    averageReturn = returndf.rolling(min_periods=20,window=period,center=False).mean()
    downsideRisk = (returndf[returndf < averageReturn] .rolling(min_periods=120,window=period,center=False).std()) * np.sqrt(252/period)
    downsideRisk.index.name = 'Own_Factor_downside_risk_%dD' % period
    downsideRisk.to_csv(path + downsideRisk.index.name + '.csv',na_rep='NaN', date_format = '%Y%m%d')
    return downsideRisk

In [40]:
caldownsideRisk(252).tail()


Out[40]:
000005.SZ 600601.SH 600602.SH 600651.SH 600652.SH 600653.SH 600654.SH 600656.SH 000004.SZ 000002.SZ ... 300652.SZ 300653.SZ 603488.SH 603269.SH 603758.SH 002872.SZ 002873.SZ 300656.SZ 603197.SH 603383.SH
Own_Factor_downside_risk_252D
2017-05-16 0.011531 0.011586 0.016497 0.017984 0.016822 NaN NaN NaN 0.011854 0.017120 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-17 0.011535 0.011617 0.016497 0.018056 NaN NaN NaN NaN 0.011854 0.017103 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-18 0.011501 0.011571 0.016479 0.017986 0.016834 NaN NaN NaN 0.011854 0.017085 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-19 0.011300 0.011328 0.015930 0.017895 NaN NaN NaN NaN 0.011854 0.017114 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-22 0.010775 0.011208 0.015697 NaN NaN NaN NaN NaN 0.011879 0.017142 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 rows × 3330 columns


In [41]:
def calsortinoRatio(period):
    returndf = AdjPrice.pct_change()
    annualReturn = (returndf.rolling(min_periods=period,window=period,center=False).mean()+1)**(252/period) - 1 
    filenameDownsideRisk = 'Own_Factor_downside_risk_252D.csv'
    downsideRisk = pd.read_csv(path+filenameDownsideRisk,infer_datetime_format=True,parse_dates=[0],index_col=0)
    sortinoRatio = annualReturn / downsideRisk
    sortinoRatio.index.name = 'Own_Factor_sortino_ratio_%dD' % period
    sortinoRatio.to_csv(path + sortinoRatio.index.name + '.csv',na_rep='NaN', date_format = '%Y%m%d')
    return sortinoRatio

In [42]:
calsortinoRatio(20).tail()


Out[42]:
000005.SZ 600601.SH 600602.SH 600651.SH 600652.SH 600653.SH 600654.SH 600656.SH 000004.SZ 000002.SZ ... 300652.SZ 300653.SZ 603488.SH 603269.SH 603758.SH 002872.SZ 002873.SZ 300656.SZ 603197.SH 603383.SH
Own_Factor_sortino_ratio_20D
2017-05-16 -9.368536 -5.740719 -7.827035 -4.156651 1.380385 NaN NaN NaN 0.0 -2.349013 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-17 -8.697108 -5.230751 -7.375752 -2.385484 NaN NaN NaN NaN 0.0 -2.362018 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-18 -8.618387 -5.086207 -7.473314 -1.903595 2.154638 NaN NaN NaN 0.0 -2.653348 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-19 -9.192038 NaN NaN NaN NaN NaN NaN NaN 0.0 -2.765404 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-22 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 rows × 3330 columns


In [ ]:
#  --------------------------------------- Calculate return above the industry average return ---------------------------------- #

In [8]:
filenameIndu = 'LZ_GPA_INDU_ZX.csv'   # 每只股票中信行业
finenameInduClose = 'LZ_GPA_INDXQUOTE_CLOSE.csv' # 行业指数收盘价
filenameInduName = 'LZ_GPA_TMP_INDU_ZX.csv' # 行业名字
filenameInduIndex = 'LZ_GPA_TMP_INDEX.csv'  # 行业代码
Indudf = pd.read_csv(path+filenameIndu ,infer_datetime_format=True,parse_dates=[0],index_col=0)

In [30]:
indusReturn = pd.read_csv(path+finenameInduClose ,infer_datetime_format=True,parse_dates=[0],index_col=0).pct_change()
indusIndex = pd.read_csv(path+filenameInduIndex ,infer_datetime_format=True,parse_dates=[0],index_col=0)
indusForstk = pd.read_csv(path+filenameIndu  ,infer_datetime_format=True,parse_dates=[0],index_col=0)
returndf = AdjPrice.pct_change()

In [24]:
indusIndex


Out[24]:
LZ_GPA_TMP_INDEX-t
000001.SH
801010.SI
801020.SI
801030.SI
801040.SI
801050.SI
801080.SI
801110.SI
801120.SI
801130.SI
801140.SI
801150.SI
801160.SI
801170.SI
801180.SI
801200.SI
801210.SI
801230.SI
000016.SH
000300.SH
399005.SZ
000905.SH
399006.SZ
000985.SH
801710.SI
801720.SI
801730.SI
801740.SI
801750.SI
801760.SI
...
881001.WI
CI005001.WI
CI005002.WI
CI005003.WI
CI005004.WI
CI005005.WI
CI005006.WI
CI005007.WI
CI005008.WI
CI005009.WI
CI005010.WI
CI005011.WI
CI005012.WI
CI005013.WI
CI005014.WI
CI005015.WI
CI005016.WI
CI005017.WI
CI005018.WI
CI005019.WI
CI005020.WI
CI005021.WI
CI005022.WI
CI005023.WI
CI005024.WI
CI005025.WI
CI005026.WI
CI005027.WI
CI005028.WI
CI005029.WI

65 rows × 0 columns


In [ ]:


In [41]:
# get zx index List
indexList = filter(lambda x: x.startswith('CI') and x.endswith('WI'),indusReturn.columns.tolist())

In [ ]:


In [48]:
def fullName(x):
    if np.isnan(x):
        return np.NaN
    else:
        if x<10:
            return 'CI00500'+str(int(x))+'.WI'
        else:
            return 'CI0050'+str(int(x))+'.WI'

In [49]:
sparedf = indusForstk.applymap(fullName)

In [50]:
sparedf.tail()


Out[50]:
000005.SZ 600601.SH 600602.SH 600651.SH 600652.SH 600653.SH 600654.SH 600656.SH 000004.SZ 000002.SZ ... 300652.SZ 300653.SZ 603488.SH 603269.SH 603758.SH 002872.SZ 002873.SZ 300656.SZ 603197.SH 603383.SH
LZ_GPA_INDU_ZX-t
2005-01-04 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-05 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-06 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-07 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-10 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-11 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-12 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-13 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-14 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-17 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-18 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-19 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-20 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-21 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-24 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-25 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-26 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-27 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-28 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-31 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-01 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-02 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-03 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-04 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-16 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-17 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-18 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-21 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-22 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-02-23 CI005023.WI CI005025.WI CI005025.WI CI005016.WI CI005002.WI CI005013.WI CI005025.WI CI005018.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2017-04-10 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-11 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-12 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-13 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-14 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-17 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-18 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-19 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-20 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-21 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-24 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-25 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-26 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-27 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-28 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-02 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-03 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-04 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-05 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-08 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-09 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-10 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-11 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-12 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-15 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-16 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-17 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-18 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-19 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-22 CI005023.WI CI005027.WI CI005025.WI CI005016.WI CI005028.WI CI005013.WI CI005025.WI CI005013.WI CI005018.WI CI005023.WI ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

3007 rows × 3330 columns


In [ ]:


In [110]:
indusReturn


Out[110]:
000001.SH 801010.SI 801020.SI 801030.SI 801040.SI 801050.SI 801080.SI 801110.SI 801120.SI 801130.SI ... CI005020.WI CI005021.WI CI005022.WI CI005023.WI CI005024.WI CI005025.WI CI005026.WI CI005027.WI CI005028.WI CI005029.WI
LZ_GPA_INDXQUOTE_CLOSE-d
2005-01-04 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2005-01-05 0.007373 0.016469 0.004456 0.006181 0.007887 0.014740 0.019862 0.011064 0.011697 0.019041 ... 0.015162 -0.009338 0.020147 0.025150 0.009525 0.017228 0.015825 0.028438 0.038767 0.022877
2005-01-06 -0.009990 -0.008932 -0.021052 -0.015246 -0.013117 -0.024255 -0.009333 0.003823 -0.008801 -0.009018 ... -0.011054 -0.010794 0.001401 -0.000951 -0.003147 -0.008446 -0.015891 -0.001268 -0.000834 -0.006307
2005-01-07 0.004289 0.006396 -0.034633 0.001858 -0.003913 -0.001984 0.005057 0.003139 0.005713 0.003293 ... 0.007031 0.000246 0.007886 0.017659 -0.001689 0.017199 0.001250 -0.003203 -0.004097 0.005634
2005-01-10 0.006150 0.010011 0.009066 0.002942 0.008876 0.011004 0.009631 0.005569 0.013586 0.011194 ... 0.007863 0.027694 0.011763 0.008656 0.005657 0.008789 0.008307 0.014209 0.014157 0.012255
2005-01-11 0.004041 0.001367 -0.010780 0.001378 0.003865 0.006889 0.002385 0.019664 0.004320 0.002572 ... 0.001155 0.006162 0.002429 0.003088 0.006832 -0.002702 -0.001545 0.003778 -0.005191 0.003442
2005-01-12 -0.000429 0.001666 0.007047 0.002129 0.001480 0.010250 -0.006121 -0.007995 0.000291 -0.001719 ... 0.000955 -0.004078 -0.007221 -0.002147 -0.001200 -0.001599 0.001271 -0.007357 -0.007121 0.000432
2005-01-13 -0.000485 -0.001884 0.014725 -0.003275 0.002839 -0.003558 0.009279 0.003138 -0.001011 -0.003754 ... -0.001470 -0.002689 -0.006234 0.007541 -0.001782 -0.000699 0.010366 0.002509 0.000851 0.001446
2005-01-14 -0.008512 -0.009840 -0.009507 -0.013344 -0.005467 -0.015186 -0.013204 -0.012613 -0.006748 -0.011508 ... -0.006894 -0.006634 -0.018770 -0.016441 -0.005891 -0.009712 -0.003846 -0.020061 -0.016536 -0.018811
2005-01-17 -0.023256 -0.029793 -0.021047 -0.025401 -0.017009 -0.028457 -0.023197 -0.020559 -0.016680 -0.025251 ... -0.026514 -0.022699 -0.073964 -0.012014 -0.015110 -0.032752 0.002618 -0.017750 -0.013304 -0.023307
2005-01-18 0.007235 0.016598 0.002781 0.003209 0.014184 0.016660 0.008128 0.006511 0.013365 0.008761 ... 0.009693 0.001583 0.008943 0.015796 -0.000325 0.019505 0.024109 0.027513 0.025768 0.017450
2005-01-19 -0.005995 -0.001686 -0.026476 -0.003577 -0.004335 -0.004205 -0.008556 -0.005775 -0.005748 -0.003460 ... -0.004728 -0.009819 -0.015886 -0.007757 -0.009192 -0.016579 -0.004210 -0.012598 -0.012183 -0.005425
2005-01-20 -0.011258 -0.007951 -0.022334 -0.014176 -0.008781 -0.010754 -0.008395 -0.010161 -0.012497 -0.013959 ... -0.012280 -0.010455 -0.006610 -0.008960 -0.014605 -0.007819 -0.005871 -0.010524 -0.014372 -0.016895
2005-01-21 0.024977 0.016568 0.040662 0.023428 0.032668 0.023302 0.011967 0.017350 0.012823 0.022755 ... 0.017170 0.069456 0.039625 0.021121 0.019415 0.032185 0.010724 0.000896 -0.003466 0.005157
2005-01-24 0.017255 0.017381 0.020892 0.020366 0.016051 0.020793 0.018744 0.016089 0.014954 0.014878 ... 0.018718 0.012341 0.029677 0.022732 0.012579 0.016442 0.016464 0.023424 0.015066 0.024131
2005-01-25 -0.001229 -0.006143 0.013765 0.000262 0.002899 0.001531 -0.004072 -0.009662 0.003611 -0.009565 ... -0.007041 -0.017644 -0.008200 -0.000797 0.003556 -0.013395 -0.005041 -0.012462 -0.000556 -0.006692
2005-01-26 -0.009788 -0.014038 -0.008412 -0.006996 -0.002863 -0.012191 -0.015975 -0.005691 -0.003795 -0.009781 ... -0.015514 0.000857 -0.001972 -0.008401 -0.004466 -0.024757 -0.008805 -0.028599 -0.019777 -0.017182
2005-01-27 -0.012937 -0.018131 -0.020227 -0.015266 -0.011222 -0.019192 -0.024406 -0.011216 -0.016961 -0.016282 ... -0.014488 -0.018952 -0.032465 -0.006707 -0.013399 -0.026417 -0.028359 -0.025161 -0.037021 -0.020496
2005-01-28 -0.009967 -0.023077 -0.003423 -0.013981 -0.003125 -0.012659 -0.012735 -0.013528 -0.002050 -0.017907 ... -0.017431 0.004737 -0.024083 -0.019941 -0.005170 -0.010020 -0.006095 -0.017009 -0.002157 -0.018965
2005-01-31 -0.018003 -0.042844 -0.000164 -0.019856 -0.006177 -0.021351 -0.037795 -0.034175 -0.005937 -0.041471 ... -0.032658 -0.006137 -0.054746 -0.023649 -0.017017 -0.033132 -0.018651 -0.039876 -0.034449 -0.041397
2005-02-01 -0.002427 -0.016200 0.012237 -0.009065 0.009492 -0.010836 -0.006331 -0.013086 -0.003010 -0.017162 ... -0.012730 0.012805 -0.002836 -0.008201 -0.005883 -0.016963 0.002002 -0.006060 -0.010987 -0.023718
2005-02-02 0.053467 0.050897 0.064504 0.056859 0.047800 0.058675 0.066062 0.061560 0.041875 0.054354 ... 0.050419 0.047162 0.081148 0.052578 0.047340 0.073477 0.048182 0.066069 0.068788 0.062338
2005-02-03 -0.008138 -0.023202 -0.015811 -0.011842 -0.011574 -0.015691 -0.021162 -0.021369 -0.011822 -0.016793 ... -0.018515 -0.020467 -0.024133 -0.008441 -0.012105 -0.023018 -0.024834 -0.029293 -0.032583 -0.020384
2005-02-04 0.021490 0.011666 0.020795 0.022143 0.025787 0.017947 0.018158 0.019644 0.016223 0.020982 ... 0.012551 0.054969 0.035228 0.025976 0.023425 0.029751 0.015065 0.016029 0.021229 0.009078
2005-02-16 0.007782 0.019176 0.008674 0.012558 0.007202 0.014995 0.010356 0.005875 0.004397 0.016484 ... 0.014183 -0.003794 0.007092 0.007471 0.003893 0.021886 0.014092 0.005758 -0.002899 0.014281
2005-02-17 -0.002147 0.006579 -0.006525 -0.002516 -0.008948 0.002287 0.019383 0.006730 -0.000239 0.000894 ... 0.000953 -0.006853 -0.007703 0.000986 -0.005742 0.060199 -0.001372 0.014108 0.015815 0.008335
2005-02-18 -0.013451 -0.008899 -0.002143 -0.012704 -0.017443 -0.012360 -0.025412 -0.013622 -0.012602 -0.008930 ... -0.012547 -0.014920 -0.008748 -0.017824 -0.011463 -0.014483 -0.015948 -0.019437 -0.022852 -0.016218
2005-02-21 0.020263 0.018194 0.016386 0.021331 0.021589 0.028913 0.015743 0.023614 0.015269 0.015833 ... 0.017982 0.029872 0.016518 0.018605 0.021066 0.033593 0.018356 0.014435 0.017681 0.015663
2005-02-22 0.019305 0.026034 0.019570 0.024064 0.018600 0.032433 0.025518 0.031855 0.019965 0.026104 ... 0.026560 0.008765 0.024117 0.019495 0.019440 0.021241 0.018070 0.020942 0.025931 0.026965
2005-02-23 0.000151 0.008615 0.000990 0.008833 -0.005038 0.006654 0.007732 0.005004 0.002766 0.008164 ... 0.010563 -0.017481 -0.000180 0.004362 -0.002756 0.012628 -0.000119 0.013801 0.006656 0.007765
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2017-04-10 -0.005240 -0.009318 -0.004129 -0.010022 0.015855 -0.014539 -0.011222 -0.014610 -0.013802 -0.009449 ... -0.010647 -0.006268 -0.007055 0.011442 0.007117 -0.010475 -0.015340 -0.018684 -0.019648 0.002665
2017-04-11 0.005987 0.002997 0.000856 0.003493 0.017414 0.005392 0.002352 -0.008122 -0.003012 0.004762 ... 0.003694 -0.002111 0.000832 0.018390 0.018222 0.001720 0.002219 0.010402 0.001729 0.019186
2017-04-12 -0.004602 -0.006421 -0.005356 -0.010796 -0.014725 -0.001222 -0.009612 0.000484 0.005526 -0.006388 ... -0.007188 -0.003778 0.002098 0.001263 -0.001658 -0.008411 -0.009519 -0.017411 -0.007792 0.011855
2017-04-13 0.000651 0.002097 0.006367 0.004707 0.003918 0.005365 0.001529 0.008802 0.009238 0.007105 ... 0.000764 -0.005315 -0.002995 0.006114 0.006243 0.002875 0.002486 0.001768 0.000655 0.003259
2017-04-14 -0.009125 -0.009798 -0.001771 -0.014029 -0.007377 -0.006460 -0.018362 -0.012405 -0.010998 -0.011449 ... -0.010693 -0.007456 -0.007989 -0.014936 -0.020292 -0.016069 -0.014410 -0.007729 -0.010350 -0.012053
2017-04-17 -0.007363 -0.012321 -0.013709 -0.012733 -0.021265 -0.011001 -0.010531 0.008648 -0.000076 -0.021231 ... -0.013999 -0.000481 -0.001808 -0.018696 -0.011707 -0.010395 -0.011002 -0.011498 -0.013902 0.005319
2017-04-18 -0.007900 -0.011783 -0.011311 -0.006536 -0.018567 -0.012260 -0.003501 0.014006 0.012543 -0.010222 ... -0.012983 -0.014013 -0.013993 -0.007349 -0.005060 -0.000999 -0.010531 -0.017306 -0.011879 -0.010659
2017-04-19 -0.008142 -0.015750 -0.023116 -0.010232 -0.027301 -0.020712 -0.006191 0.004956 -0.002572 -0.015708 ... -0.015812 -0.008693 -0.003659 -0.007193 -0.012945 -0.007276 0.001398 -0.007432 -0.003611 -0.025189
2017-04-20 0.000446 -0.001334 -0.010356 -0.000554 -0.012280 -0.011015 0.004981 0.002038 0.021437 -0.006963 ... -0.000698 -0.005525 0.000367 -0.005792 -0.001025 0.007011 0.000067 -0.001475 -0.001400 -0.024475
2017-04-21 0.000331 -0.003175 0.003724 -0.006489 0.003518 -0.004251 -0.003655 -0.004469 -0.014113 -0.004383 ... -0.001895 0.011177 0.007844 -0.003621 -0.007472 -0.002343 -0.005891 -0.007512 -0.001842 -0.012850
2017-04-24 -0.013747 -0.020293 -0.024040 -0.024845 -0.026900 -0.036088 -0.020041 -0.020524 -0.018507 -0.022434 ... -0.020533 0.000203 0.000800 -0.020287 -0.024228 -0.021694 -0.015714 -0.020138 -0.016966 -0.017907
2017-04-25 0.001609 0.001734 -0.002337 0.002468 0.005446 0.003266 0.007812 0.022053 0.021615 0.004851 ... 0.001223 0.002525 -0.002660 0.001922 -0.002685 0.010835 0.000920 0.002585 0.000831 0.011009
2017-04-26 0.002003 0.006471 -0.001055 0.001119 0.003220 0.009285 0.011567 -0.004172 -0.001980 -0.000801 ... 0.006768 -0.002791 0.011360 0.003250 -0.001691 0.011985 -0.003111 -0.000270 -0.000611 0.014488
2017-04-27 0.003610 0.002135 0.005235 0.006440 -0.006205 0.008468 0.008197 0.002537 0.003343 0.002260 ... 0.002847 0.004412 0.003414 -0.012443 0.007893 0.006574 0.011559 0.011429 0.008386 -0.006224
2017-04-28 0.000784 0.000781 0.006115 0.006456 0.025117 0.002689 0.003914 -0.008006 -0.018956 0.005755 ... 0.001240 0.000278 0.001738 0.005901 0.002037 0.002586 0.003351 0.002178 0.005152 0.008809
2017-05-02 -0.003470 0.000171 -0.000607 0.001321 0.002400 -0.000246 0.000754 0.012588 -0.004308 0.001960 ... -0.000909 -0.007756 -0.007343 -0.006594 0.004739 -0.000010 -0.003682 -0.004105 -0.001179 0.002853
2017-05-03 -0.002661 -0.005261 -0.005744 -0.000682 -0.013356 -0.001446 -0.000991 -0.002042 0.002446 0.000068 ... -0.004933 -0.005632 -0.003092 -0.007816 0.001212 -0.000421 0.004225 -0.002223 -0.003202 -0.015106
2017-05-04 -0.002544 -0.007287 -0.007561 -0.006031 0.005071 -0.016297 -0.001447 -0.000040 -0.002589 -0.003665 ... -0.008183 -0.004261 -0.005446 -0.001015 -0.005225 0.001140 -0.005702 0.000650 -0.005537 0.003443
2017-05-05 -0.007780 -0.013184 -0.021796 -0.014618 -0.010789 -0.014251 -0.008721 0.002965 -0.005162 -0.006017 ... -0.013661 -0.000550 -0.013879 -0.009454 -0.010015 -0.010235 -0.009555 -0.014178 -0.007236 -0.017304
2017-05-08 -0.007871 -0.027683 -0.012972 -0.014564 -0.019170 -0.012952 -0.023187 -0.021163 -0.016967 -0.011208 ... -0.027854 0.001422 0.002232 -0.018778 -0.016059 -0.024325 -0.012371 -0.006208 -0.000635 -0.037100
2017-05-09 0.000622 -0.001913 0.006922 0.005496 -0.000610 0.008554 0.015372 -0.006276 -0.001613 0.002487 ... -0.002143 0.000780 -0.001190 0.001623 0.003024 0.015190 0.008056 0.005159 0.006787 0.007387
2017-05-10 -0.009006 -0.018036 -0.013175 -0.017436 -0.020025 -0.023963 -0.006292 -0.005213 -0.005161 -0.016711 ... -0.019370 0.003247 0.010245 -0.015419 -0.018678 -0.001263 -0.010497 -0.018858 -0.015094 -0.026220
2017-05-11 0.002855 -0.003756 -0.005792 -0.002270 -0.005662 -0.003952 -0.000994 0.018265 0.002343 -0.007094 ... -0.005465 0.007443 -0.001011 0.003840 0.002916 -0.002086 -0.005695 -0.011340 -0.003949 -0.010596
2017-05-12 0.007190 0.003905 0.001335 -0.000133 -0.003776 -0.000077 -0.002040 -0.000387 -0.000171 -0.003495 ... 0.003496 0.027187 0.014148 0.003458 0.009086 -0.003167 -0.002849 -0.003786 -0.005403 0.001114
2017-05-15 0.002178 0.002855 0.009455 0.001053 -0.000486 0.001245 0.011481 0.000418 0.014211 0.003834 ... 0.002235 -0.000464 0.000808 0.004917 0.000566 0.013336 0.003865 0.017315 0.002096 0.013961
2017-05-16 0.007357 0.013618 0.011923 0.020586 0.017661 0.024578 0.030720 0.012814 0.022776 0.013156 ... 0.014177 -0.005665 0.003926 0.010164 0.020383 0.032189 0.023878 0.019774 0.013340 0.025399
2017-05-17 -0.002738 0.002680 0.006112 0.001161 0.008137 0.000041 -0.004852 -0.014284 -0.008848 0.005990 ... 0.001881 -0.007631 -0.007044 0.000448 -0.000287 -0.008049 0.003145 0.002029 0.011574 0.003675
2017-05-18 -0.004607 -0.005554 0.002711 -0.006056 -0.008480 -0.009240 -0.007505 -0.006521 0.001178 -0.007770 ... -0.005865 -0.005608 -0.006785 -0.000761 -0.005637 -0.006283 -0.002449 -0.003212 -0.004340 -0.005472
2017-05-19 0.000159 -0.003324 0.016362 -0.002551 0.006550 -0.004698 -0.005602 0.012962 0.011956 -0.000265 ... -0.002388 0.000555 0.000846 0.001418 -0.001015 -0.004204 -0.003263 0.000669 -0.004231 0.004552
2017-05-22 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

3007 rows × 65 columns


In [125]:
def gg():
    ss = sparedf.copy()
    for date in sparedf.index:
        print date
        indusReturnSlice = indusReturn.loc[date]
        sparedfSlice = sparedf.loc[date]   
        stkList = sparedf.loc[date].dropna().index.tolist() 
        #s = map(lambda x : indusReturnSlice.loc[sparedf.loc[date][x]], stkList)
        #ss.loc[date,stkList] = indusReturnSlice .loc[sparedfSlice.dropna()].values
        ss.set_value(date, stkList, indusReturnSlice .loc[sparedfSlice.dropna()].values)
    return ss

In [ ]:


In [127]:
#finaldf = gg()


2005-01-04 00:00:00
2005-01-05 00:00:00
2005-01-06 00:00:00
2005-01-07 00:00:00
2005-01-10 00:00:00
2005-01-11 00:00:00
2005-01-12 00:00:00
2005-01-13 00:00:00
2005-01-14 00:00:00
2005-01-17 00:00:00
2005-01-18 00:00:00
2005-01-19 00:00:00
2005-01-20 00:00:00
2005-01-21 00:00:00
2005-01-24 00:00:00
2005-01-25 00:00:00
2005-01-26 00:00:00
2005-01-27 00:00:00
2005-01-28 00:00:00
2005-01-31 00:00:00
2005-02-01 00:00:00
2005-02-02 00:00:00
2005-02-03 00:00:00
2005-02-04 00:00:00
2005-02-16 00:00:00
2005-02-17 00:00:00
2005-02-18 00:00:00
2005-02-21 00:00:00
2005-02-22 00:00:00
2005-02-23 00:00:00
2005-02-24 00:00:00
2005-02-25 00:00:00
2005-02-28 00:00:00
2005-03-01 00:00:00
2005-03-02 00:00:00
2005-03-03 00:00:00
2005-03-04 00:00:00
2005-03-07 00:00:00
2005-03-08 00:00:00
2005-03-09 00:00:00
2005-03-10 00:00:00
2005-03-11 00:00:00
2005-03-14 00:00:00
2005-03-15 00:00:00
2005-03-16 00:00:00
2005-03-17 00:00:00
2005-03-18 00:00:00
2005-03-21 00:00:00
2005-03-22 00:00:00
2005-03-23 00:00:00
2005-03-24 00:00:00
2005-03-25 00:00:00
2005-03-28 00:00:00
2005-03-29 00:00:00
2005-03-30 00:00:00
2005-03-31 00:00:00
2005-04-01 00:00:00
2005-04-04 00:00:00
2005-04-05 00:00:00
2005-04-06 00:00:00
2005-04-07 00:00:00
2005-04-08 00:00:00
2005-04-11 00:00:00
2005-04-12 00:00:00
2005-04-13 00:00:00
2005-04-14 00:00:00
2005-04-15 00:00:00
2005-04-18 00:00:00
2005-04-19 00:00:00
2005-04-20 00:00:00
2005-04-21 00:00:00
2005-04-22 00:00:00
2005-04-25 00:00:00
2005-04-26 00:00:00
2005-04-27 00:00:00
2005-04-28 00:00:00
2005-04-29 00:00:00
2005-05-09 00:00:00
2005-05-10 00:00:00
2005-05-11 00:00:00
2005-05-12 00:00:00
2005-05-13 00:00:00
2005-05-16 00:00:00
2005-05-17 00:00:00
2005-05-18 00:00:00
2005-05-19 00:00:00
2005-05-20 00:00:00
2005-05-23 00:00:00
2005-05-24 00:00:00
2005-05-25 00:00:00
2005-05-26 00:00:00
2005-05-27 00:00:00
2005-05-30 00:00:00
2005-05-31 00:00:00
2005-06-01 00:00:00
2005-06-02 00:00:00
2005-06-03 00:00:00
2005-06-06 00:00:00
2005-06-07 00:00:00
2005-06-08 00:00:00
2005-06-09 00:00:00
2005-06-10 00:00:00
2005-06-13 00:00:00
2005-06-14 00:00:00
2005-06-15 00:00:00
2005-06-16 00:00:00
2005-06-17 00:00:00
2005-06-20 00:00:00
2005-06-21 00:00:00
2005-06-22 00:00:00
2005-06-23 00:00:00
2005-06-24 00:00:00
2005-06-27 00:00:00
2005-06-28 00:00:00
2005-06-29 00:00:00
2005-06-30 00:00:00
2005-07-01 00:00:00
2005-07-04 00:00:00
2005-07-05 00:00:00
2005-07-06 00:00:00
2005-07-07 00:00:00
2005-07-08 00:00:00
2005-07-11 00:00:00
2005-07-12 00:00:00
2005-07-13 00:00:00
2005-07-14 00:00:00
2005-07-15 00:00:00
2005-07-18 00:00:00
2005-07-19 00:00:00
2005-07-20 00:00:00
2005-07-21 00:00:00
2005-07-22 00:00:00
2005-07-25 00:00:00
2005-07-26 00:00:00
2005-07-27 00:00:00
2005-07-28 00:00:00
2005-07-29 00:00:00
2005-08-01 00:00:00
2005-08-02 00:00:00
2005-08-03 00:00:00
2005-08-04 00:00:00
2005-08-05 00:00:00
2005-08-08 00:00:00
2005-08-09 00:00:00
2005-08-10 00:00:00
2005-08-11 00:00:00
2005-08-12 00:00:00
2005-08-15 00:00:00
2005-08-16 00:00:00
2005-08-17 00:00:00
2005-08-18 00:00:00
2005-08-19 00:00:00
2005-08-22 00:00:00
2005-08-23 00:00:00
2005-08-24 00:00:00
2005-08-25 00:00:00
2005-08-26 00:00:00
2005-08-29 00:00:00
2005-08-30 00:00:00
2005-08-31 00:00:00
2005-09-01 00:00:00
2005-09-02 00:00:00
2005-09-05 00:00:00
2005-09-06 00:00:00
2005-09-07 00:00:00
2005-09-08 00:00:00
2005-09-09 00:00:00
2005-09-12 00:00:00
2005-09-13 00:00:00
2005-09-14 00:00:00
2005-09-15 00:00:00
2005-09-16 00:00:00
2005-09-19 00:00:00
2005-09-20 00:00:00
2005-09-21 00:00:00
2005-09-22 00:00:00
2005-09-23 00:00:00
2005-09-26 00:00:00
2005-09-27 00:00:00
2005-09-28 00:00:00
2005-09-29 00:00:00
2005-09-30 00:00:00
2005-10-10 00:00:00
2005-10-11 00:00:00
2005-10-12 00:00:00
2005-10-13 00:00:00
2005-10-14 00:00:00
2005-10-17 00:00:00
2005-10-18 00:00:00
2005-10-19 00:00:00
2005-10-20 00:00:00
2005-10-21 00:00:00
2005-10-24 00:00:00
2005-10-25 00:00:00
2005-10-26 00:00:00
2005-10-27 00:00:00
2005-10-28 00:00:00
2005-10-31 00:00:00
2005-11-01 00:00:00
2005-11-02 00:00:00
2005-11-03 00:00:00
2005-11-04 00:00:00
2005-11-07 00:00:00
2005-11-08 00:00:00
2005-11-09 00:00:00
2005-11-10 00:00:00
2005-11-11 00:00:00
2005-11-14 00:00:00
2005-11-15 00:00:00
2005-11-16 00:00:00
2005-11-17 00:00:00
2005-11-18 00:00:00
2005-11-21 00:00:00
2005-11-22 00:00:00
2005-11-23 00:00:00
2005-11-24 00:00:00
2005-11-25 00:00:00
2005-11-28 00:00:00
2005-11-29 00:00:00
2005-11-30 00:00:00
2005-12-01 00:00:00
2005-12-02 00:00:00
2005-12-05 00:00:00
2005-12-06 00:00:00
2005-12-07 00:00:00
2005-12-08 00:00:00
2005-12-09 00:00:00
2005-12-12 00:00:00
2005-12-13 00:00:00
2005-12-14 00:00:00
2005-12-15 00:00:00
2005-12-16 00:00:00
2005-12-19 00:00:00
2005-12-20 00:00:00
2005-12-21 00:00:00
2005-12-22 00:00:00
2005-12-23 00:00:00
2005-12-26 00:00:00
2005-12-27 00:00:00
2005-12-28 00:00:00
2005-12-29 00:00:00
2005-12-30 00:00:00
2006-01-04 00:00:00
2006-01-05 00:00:00
2006-01-06 00:00:00
2006-01-09 00:00:00
2006-01-10 00:00:00
2006-01-11 00:00:00
2006-01-12 00:00:00
2006-01-13 00:00:00
2006-01-16 00:00:00
2006-01-17 00:00:00
2006-01-18 00:00:00
2006-01-19 00:00:00
2006-01-20 00:00:00
2006-01-23 00:00:00
2006-01-24 00:00:00
2006-01-25 00:00:00
2006-02-06 00:00:00
2006-02-07 00:00:00
2006-02-08 00:00:00
2006-02-09 00:00:00
2006-02-10 00:00:00
2006-02-13 00:00:00
2006-02-14 00:00:00
2006-02-15 00:00:00
2006-02-16 00:00:00
2006-02-17 00:00:00
2006-02-20 00:00:00
2006-02-21 00:00:00
2006-02-22 00:00:00
2006-02-23 00:00:00
2006-02-24 00:00:00
2006-02-27 00:00:00
2006-02-28 00:00:00
2006-03-01 00:00:00
2006-03-02 00:00:00
2006-03-03 00:00:00
2006-03-06 00:00:00
2006-03-07 00:00:00
2006-03-08 00:00:00
2006-03-09 00:00:00
2006-03-10 00:00:00
2006-03-13 00:00:00
2006-03-14 00:00:00
2006-03-15 00:00:00
2006-03-16 00:00:00
2006-03-17 00:00:00
2006-03-20 00:00:00
2006-03-21 00:00:00
2006-03-22 00:00:00
2006-03-23 00:00:00
2006-03-24 00:00:00
2006-03-27 00:00:00
2006-03-28 00:00:00
2006-03-29 00:00:00
2006-03-30 00:00:00
2006-03-31 00:00:00
2006-04-03 00:00:00
2006-04-04 00:00:00
2006-04-05 00:00:00
2006-04-06 00:00:00
2006-04-07 00:00:00
2006-04-10 00:00:00
2006-04-11 00:00:00
2006-04-12 00:00:00
2006-04-13 00:00:00
2006-04-14 00:00:00
2006-04-17 00:00:00
2006-04-18 00:00:00
2006-04-19 00:00:00
2006-04-20 00:00:00
2006-04-21 00:00:00
2006-04-24 00:00:00
2006-04-25 00:00:00
2006-04-26 00:00:00
2006-04-27 00:00:00
2006-04-28 00:00:00
2006-05-08 00:00:00
2006-05-09 00:00:00
2006-05-10 00:00:00
2006-05-11 00:00:00
2006-05-12 00:00:00
2006-05-15 00:00:00
2006-05-16 00:00:00
2006-05-17 00:00:00
2006-05-18 00:00:00
2006-05-19 00:00:00
2006-05-22 00:00:00
2006-05-23 00:00:00
2006-05-24 00:00:00
2006-05-25 00:00:00
2006-05-26 00:00:00
2006-05-29 00:00:00
2006-05-30 00:00:00
2006-05-31 00:00:00
2006-06-01 00:00:00
2006-06-02 00:00:00
2006-06-05 00:00:00
2006-06-06 00:00:00
2006-06-07 00:00:00
2006-06-08 00:00:00
2006-06-09 00:00:00
2006-06-12 00:00:00
2006-06-13 00:00:00
2006-06-14 00:00:00
2006-06-15 00:00:00
2006-06-16 00:00:00
2006-06-19 00:00:00
2006-06-20 00:00:00
2006-06-21 00:00:00
2006-06-22 00:00:00
2006-06-23 00:00:00
2006-06-26 00:00:00
2006-06-27 00:00:00
2006-06-28 00:00:00
2006-06-29 00:00:00
2006-06-30 00:00:00
2006-07-03 00:00:00
2006-07-04 00:00:00
2006-07-05 00:00:00
2006-07-06 00:00:00
2006-07-07 00:00:00
2006-07-10 00:00:00
2006-07-11 00:00:00
2006-07-12 00:00:00
2006-07-13 00:00:00
2006-07-14 00:00:00
2006-07-17 00:00:00
2006-07-18 00:00:00
2006-07-19 00:00:00
2006-07-20 00:00:00
2006-07-21 00:00:00
2006-07-24 00:00:00
2006-07-25 00:00:00
2006-07-26 00:00:00
2006-07-27 00:00:00
2006-07-28 00:00:00
2006-07-31 00:00:00
2006-08-01 00:00:00
2006-08-02 00:00:00
2006-08-03 00:00:00
2006-08-04 00:00:00
2006-08-07 00:00:00
2006-08-08 00:00:00
2006-08-09 00:00:00
2006-08-10 00:00:00
2006-08-11 00:00:00
2006-08-14 00:00:00
2006-08-15 00:00:00
2006-08-16 00:00:00
2006-08-17 00:00:00
2006-08-18 00:00:00
2006-08-21 00:00:00
2006-08-22 00:00:00
2006-08-23 00:00:00
2006-08-24 00:00:00
2006-08-25 00:00:00
2006-08-28 00:00:00
2006-08-29 00:00:00
2006-08-30 00:00:00
2006-08-31 00:00:00
2006-09-01 00:00:00
2006-09-04 00:00:00
2006-09-05 00:00:00
2006-09-06 00:00:00
2006-09-07 00:00:00
2006-09-08 00:00:00
2006-09-11 00:00:00
2006-09-12 00:00:00
2006-09-13 00:00:00
2006-09-14 00:00:00
2006-09-15 00:00:00
2006-09-18 00:00:00
2006-09-19 00:00:00
2006-09-20 00:00:00
2006-09-21 00:00:00
2006-09-22 00:00:00
2006-09-25 00:00:00
2006-09-26 00:00:00
2006-09-27 00:00:00
2006-09-28 00:00:00
2006-09-29 00:00:00
2006-10-09 00:00:00
2006-10-10 00:00:00
2006-10-11 00:00:00
2006-10-12 00:00:00
2006-10-13 00:00:00
2006-10-16 00:00:00
2006-10-17 00:00:00
2006-10-18 00:00:00
2006-10-19 00:00:00
2006-10-20 00:00:00
2006-10-23 00:00:00
2006-10-24 00:00:00
2006-10-25 00:00:00
2006-10-26 00:00:00
2006-10-27 00:00:00
2006-10-30 00:00:00
2006-10-31 00:00:00
2006-11-01 00:00:00
2006-11-02 00:00:00
2006-11-03 00:00:00
2006-11-06 00:00:00
2006-11-07 00:00:00
2006-11-08 00:00:00
2006-11-09 00:00:00
2006-11-10 00:00:00
2006-11-13 00:00:00
2006-11-14 00:00:00
2006-11-15 00:00:00
2006-11-16 00:00:00
2006-11-17 00:00:00
2006-11-20 00:00:00
2006-11-21 00:00:00
2006-11-22 00:00:00
2006-11-23 00:00:00
2006-11-24 00:00:00
2006-11-27 00:00:00
2006-11-28 00:00:00
2006-11-29 00:00:00
2006-11-30 00:00:00
2006-12-01 00:00:00
2006-12-04 00:00:00
2006-12-05 00:00:00
2006-12-06 00:00:00
2006-12-07 00:00:00
2006-12-08 00:00:00
2006-12-11 00:00:00
2006-12-12 00:00:00
2006-12-13 00:00:00
2006-12-14 00:00:00
2006-12-15 00:00:00
2006-12-18 00:00:00
2006-12-19 00:00:00
2006-12-20 00:00:00
2006-12-21 00:00:00
2006-12-22 00:00:00
2006-12-25 00:00:00
2006-12-26 00:00:00
2006-12-27 00:00:00
2006-12-28 00:00:00
2006-12-29 00:00:00
2007-01-04 00:00:00
2007-01-05 00:00:00
2007-01-08 00:00:00
2007-01-09 00:00:00
2007-01-10 00:00:00
2007-01-11 00:00:00
2007-01-12 00:00:00
2007-01-15 00:00:00
2007-01-16 00:00:00
2007-01-17 00:00:00
2007-01-18 00:00:00
2007-01-19 00:00:00
2007-01-22 00:00:00
2007-01-23 00:00:00
2007-01-24 00:00:00
2007-01-25 00:00:00
2007-01-26 00:00:00
2007-01-29 00:00:00
2007-01-30 00:00:00
2007-01-31 00:00:00
2007-02-01 00:00:00
2007-02-02 00:00:00
2007-02-05 00:00:00
2007-02-06 00:00:00
2007-02-07 00:00:00
2007-02-08 00:00:00
2007-02-09 00:00:00
2007-02-12 00:00:00
2007-02-13 00:00:00
2007-02-14 00:00:00
2007-02-15 00:00:00
2007-02-16 00:00:00
2007-02-26 00:00:00
2007-02-27 00:00:00
2007-02-28 00:00:00
2007-03-01 00:00:00
2007-03-02 00:00:00
2007-03-05 00:00:00
2007-03-06 00:00:00
2007-03-07 00:00:00
2007-03-08 00:00:00
2007-03-09 00:00:00
2007-03-12 00:00:00
2007-03-13 00:00:00
2007-03-14 00:00:00
2007-03-15 00:00:00
2007-03-16 00:00:00
2007-03-19 00:00:00
2007-03-20 00:00:00
2007-03-21 00:00:00
2007-03-22 00:00:00
2007-03-23 00:00:00
2007-03-26 00:00:00
2007-03-27 00:00:00
2007-03-28 00:00:00
2007-03-29 00:00:00
2007-03-30 00:00:00
2007-04-02 00:00:00
2007-04-03 00:00:00
2007-04-04 00:00:00
2007-04-05 00:00:00
2007-04-06 00:00:00
2007-04-09 00:00:00
2007-04-10 00:00:00
2007-04-11 00:00:00
2007-04-12 00:00:00
2007-04-13 00:00:00
2007-04-16 00:00:00
2007-04-17 00:00:00
2007-04-18 00:00:00
2007-04-19 00:00:00
2007-04-20 00:00:00
2007-04-23 00:00:00
2007-04-24 00:00:00
2007-04-25 00:00:00
2007-04-26 00:00:00
2007-04-27 00:00:00
2007-04-30 00:00:00
2007-05-08 00:00:00
2007-05-09 00:00:00
2007-05-10 00:00:00
2007-05-11 00:00:00
2007-05-14 00:00:00
2007-05-15 00:00:00
2007-05-16 00:00:00
2007-05-17 00:00:00
2007-05-18 00:00:00
2007-05-21 00:00:00
2007-05-22 00:00:00
2007-05-23 00:00:00
2007-05-24 00:00:00
2007-05-25 00:00:00
2007-05-28 00:00:00
2007-05-29 00:00:00
2007-05-30 00:00:00
2007-05-31 00:00:00
2007-06-01 00:00:00
2007-06-04 00:00:00
2007-06-05 00:00:00
2007-06-06 00:00:00
2007-06-07 00:00:00
2007-06-08 00:00:00
2007-06-11 00:00:00
2007-06-12 00:00:00
2007-06-13 00:00:00
2007-06-14 00:00:00
2007-06-15 00:00:00
2007-06-18 00:00:00
2007-06-19 00:00:00
2007-06-20 00:00:00
2007-06-21 00:00:00
2007-06-22 00:00:00
2007-06-25 00:00:00
2007-06-26 00:00:00
2007-06-27 00:00:00
2007-06-28 00:00:00
2007-06-29 00:00:00
2007-07-02 00:00:00
2007-07-03 00:00:00
2007-07-04 00:00:00
2007-07-05 00:00:00
2007-07-06 00:00:00
2007-07-09 00:00:00
2007-07-10 00:00:00
2007-07-11 00:00:00
2007-07-12 00:00:00
2007-07-13 00:00:00
2007-07-16 00:00:00
2007-07-17 00:00:00
2007-07-18 00:00:00
2007-07-19 00:00:00
2007-07-20 00:00:00
2007-07-23 00:00:00
2007-07-24 00:00:00
2007-07-25 00:00:00
2007-07-26 00:00:00
2007-07-27 00:00:00
2007-07-30 00:00:00
2007-07-31 00:00:00
2007-08-01 00:00:00
2007-08-02 00:00:00
2007-08-03 00:00:00
2007-08-06 00:00:00
2007-08-07 00:00:00
2007-08-08 00:00:00
2007-08-09 00:00:00
2007-08-10 00:00:00
2007-08-13 00:00:00
2007-08-14 00:00:00
2007-08-15 00:00:00
2007-08-16 00:00:00
2007-08-17 00:00:00
2007-08-20 00:00:00
2007-08-21 00:00:00
2007-08-22 00:00:00
2007-08-23 00:00:00
2007-08-24 00:00:00
2007-08-27 00:00:00
2007-08-28 00:00:00
2007-08-29 00:00:00
2007-08-30 00:00:00
2007-08-31 00:00:00
2007-09-03 00:00:00
2007-09-04 00:00:00
2007-09-05 00:00:00
2007-09-06 00:00:00
2007-09-07 00:00:00
2007-09-10 00:00:00
2007-09-11 00:00:00
2007-09-12 00:00:00
2007-09-13 00:00:00
2007-09-14 00:00:00
2007-09-17 00:00:00
2007-09-18 00:00:00
2007-09-19 00:00:00
2007-09-20 00:00:00
2007-09-21 00:00:00
2007-09-24 00:00:00
2007-09-25 00:00:00
2007-09-26 00:00:00
2007-09-27 00:00:00
2007-09-28 00:00:00
2007-10-08 00:00:00
2007-10-09 00:00:00
2007-10-10 00:00:00
2007-10-11 00:00:00
2007-10-12 00:00:00
2007-10-15 00:00:00
2007-10-16 00:00:00
2007-10-17 00:00:00
2007-10-18 00:00:00
2007-10-19 00:00:00
2007-10-22 00:00:00
2007-10-23 00:00:00
2007-10-24 00:00:00
2007-10-25 00:00:00
2007-10-26 00:00:00
2007-10-29 00:00:00
2007-10-30 00:00:00
2007-10-31 00:00:00
2007-11-01 00:00:00
2007-11-02 00:00:00
2007-11-05 00:00:00
2007-11-06 00:00:00
2007-11-07 00:00:00
2007-11-08 00:00:00
2007-11-09 00:00:00
2007-11-12 00:00:00
2007-11-13 00:00:00
2007-11-14 00:00:00
2007-11-15 00:00:00
2007-11-16 00:00:00
2007-11-19 00:00:00
2007-11-20 00:00:00
2007-11-21 00:00:00
2007-11-22 00:00:00
2007-11-23 00:00:00
2007-11-26 00:00:00
2007-11-27 00:00:00
2007-11-28 00:00:00
2007-11-29 00:00:00
2007-11-30 00:00:00
2007-12-03 00:00:00
2007-12-04 00:00:00
2007-12-05 00:00:00
2007-12-06 00:00:00
2007-12-07 00:00:00
2007-12-10 00:00:00
2007-12-11 00:00:00
2007-12-12 00:00:00
2007-12-13 00:00:00
2007-12-14 00:00:00
2007-12-17 00:00:00
2007-12-18 00:00:00
2007-12-19 00:00:00
2007-12-20 00:00:00
2007-12-21 00:00:00
2007-12-24 00:00:00
2007-12-25 00:00:00
2007-12-26 00:00:00
2007-12-27 00:00:00
2007-12-28 00:00:00
2008-01-02 00:00:00
2008-01-03 00:00:00
2008-01-04 00:00:00
2008-01-07 00:00:00
2008-01-08 00:00:00
2008-01-09 00:00:00
2008-01-10 00:00:00
2008-01-11 00:00:00
2008-01-14 00:00:00
2008-01-15 00:00:00
2008-01-16 00:00:00
2008-01-17 00:00:00
2008-01-18 00:00:00
2008-01-21 00:00:00
2008-01-22 00:00:00
2008-01-23 00:00:00
2008-01-24 00:00:00
2008-01-25 00:00:00
2008-01-28 00:00:00
2008-01-29 00:00:00
2008-01-30 00:00:00
2008-01-31 00:00:00
2008-02-01 00:00:00
2008-02-04 00:00:00
2008-02-05 00:00:00
2008-02-13 00:00:00
2008-02-14 00:00:00
2008-02-15 00:00:00
2008-02-18 00:00:00
2008-02-19 00:00:00
2008-02-20 00:00:00
2008-02-21 00:00:00
2008-02-22 00:00:00
2008-02-25 00:00:00
2008-02-26 00:00:00
2008-02-27 00:00:00
2008-02-28 00:00:00
2008-02-29 00:00:00
2008-03-03 00:00:00
2008-03-04 00:00:00
2008-03-05 00:00:00
2008-03-06 00:00:00
2008-03-07 00:00:00
2008-03-10 00:00:00
2008-03-11 00:00:00
2008-03-12 00:00:00
2008-03-13 00:00:00
2008-03-14 00:00:00
2008-03-17 00:00:00
2008-03-18 00:00:00
2008-03-19 00:00:00
2008-03-20 00:00:00
2008-03-21 00:00:00
2008-03-24 00:00:00
2008-03-25 00:00:00
2008-03-26 00:00:00
2008-03-27 00:00:00
2008-03-28 00:00:00
2008-03-31 00:00:00
2008-04-01 00:00:00
2008-04-02 00:00:00
2008-04-03 00:00:00
2008-04-07 00:00:00
2008-04-08 00:00:00
2008-04-09 00:00:00
2008-04-10 00:00:00
2008-04-11 00:00:00
2008-04-14 00:00:00
2008-04-15 00:00:00
2008-04-16 00:00:00
2008-04-17 00:00:00
2008-04-18 00:00:00
2008-04-21 00:00:00
2008-04-22 00:00:00
2008-04-23 00:00:00
2008-04-24 00:00:00
2008-04-25 00:00:00
2008-04-28 00:00:00
2008-04-29 00:00:00
2008-04-30 00:00:00
2008-05-05 00:00:00
2008-05-06 00:00:00
2008-05-07 00:00:00
2008-05-08 00:00:00
2008-05-09 00:00:00
2008-05-12 00:00:00
2008-05-13 00:00:00
2008-05-14 00:00:00
2008-05-15 00:00:00
2008-05-16 00:00:00
2008-05-19 00:00:00
2008-05-20 00:00:00
2008-05-21 00:00:00
2008-05-22 00:00:00
2008-05-23 00:00:00
2008-05-26 00:00:00
2008-05-27 00:00:00
2008-05-28 00:00:00
2008-05-29 00:00:00
2008-05-30 00:00:00
2008-06-02 00:00:00
2008-06-03 00:00:00
2008-06-04 00:00:00
2008-06-05 00:00:00
2008-06-06 00:00:00
2008-06-10 00:00:00
2008-06-11 00:00:00
2008-06-12 00:00:00
2008-06-13 00:00:00
2008-06-16 00:00:00
2008-06-17 00:00:00
2008-06-18 00:00:00
2008-06-19 00:00:00
2008-06-20 00:00:00
2008-06-23 00:00:00
2008-06-24 00:00:00
2008-06-25 00:00:00
2008-06-26 00:00:00
2008-06-27 00:00:00
2008-06-30 00:00:00
2008-07-01 00:00:00
2008-07-02 00:00:00
2008-07-03 00:00:00
2008-07-04 00:00:00
2008-07-07 00:00:00
2008-07-08 00:00:00
2008-07-09 00:00:00
2008-07-10 00:00:00
2008-07-11 00:00:00
2008-07-14 00:00:00
2008-07-15 00:00:00
2008-07-16 00:00:00
2008-07-17 00:00:00
2008-07-18 00:00:00
2008-07-21 00:00:00
2008-07-22 00:00:00
2008-07-23 00:00:00
2008-07-24 00:00:00
2008-07-25 00:00:00
2008-07-28 00:00:00
2008-07-29 00:00:00
2008-07-30 00:00:00
2008-07-31 00:00:00
2008-08-01 00:00:00
2008-08-04 00:00:00
2008-08-05 00:00:00
2008-08-06 00:00:00
2008-08-07 00:00:00
2008-08-08 00:00:00
2008-08-11 00:00:00
2008-08-12 00:00:00
2008-08-13 00:00:00
2008-08-14 00:00:00
2008-08-15 00:00:00
2008-08-18 00:00:00
2008-08-19 00:00:00
2008-08-20 00:00:00
2008-08-21 00:00:00
2008-08-22 00:00:00
2008-08-25 00:00:00
2008-08-26 00:00:00
2008-08-27 00:00:00
2008-08-28 00:00:00
2008-08-29 00:00:00
2008-09-01 00:00:00
2008-09-02 00:00:00
2008-09-03 00:00:00
2008-09-04 00:00:00
2008-09-05 00:00:00
2008-09-08 00:00:00
2008-09-09 00:00:00
2008-09-10 00:00:00
2008-09-11 00:00:00
2008-09-12 00:00:00
2008-09-16 00:00:00
2008-09-17 00:00:00
2008-09-18 00:00:00
2008-09-19 00:00:00
2008-09-22 00:00:00
2008-09-23 00:00:00
2008-09-24 00:00:00
2008-09-25 00:00:00
2008-09-26 00:00:00
2008-10-06 00:00:00
2008-10-07 00:00:00
2008-10-08 00:00:00
2008-10-09 00:00:00
2008-10-10 00:00:00
2008-10-13 00:00:00
2008-10-14 00:00:00
2008-10-15 00:00:00
2008-10-16 00:00:00
2008-10-17 00:00:00
2008-10-20 00:00:00
2008-10-21 00:00:00
2008-10-22 00:00:00
2008-10-23 00:00:00
2008-10-24 00:00:00
2008-10-27 00:00:00
2008-10-28 00:00:00
2008-10-29 00:00:00
2008-10-30 00:00:00
2008-10-31 00:00:00
2008-11-03 00:00:00
2008-11-04 00:00:00
2008-11-05 00:00:00
2008-11-06 00:00:00
2008-11-07 00:00:00
2008-11-10 00:00:00
2008-11-11 00:00:00
2008-11-12 00:00:00
2008-11-13 00:00:00
2008-11-14 00:00:00
2008-11-17 00:00:00
2008-11-18 00:00:00
2008-11-19 00:00:00
2008-11-20 00:00:00
2008-11-21 00:00:00
2008-11-24 00:00:00
2008-11-25 00:00:00
2008-11-26 00:00:00
2008-11-27 00:00:00
2008-11-28 00:00:00
2008-12-01 00:00:00
2008-12-02 00:00:00
2008-12-03 00:00:00
2008-12-04 00:00:00
2008-12-05 00:00:00
2008-12-08 00:00:00
2008-12-09 00:00:00
2008-12-10 00:00:00
2008-12-11 00:00:00
2008-12-12 00:00:00
2008-12-15 00:00:00
2008-12-16 00:00:00
2008-12-17 00:00:00
2008-12-18 00:00:00
2008-12-19 00:00:00
2008-12-22 00:00:00
2008-12-23 00:00:00
2008-12-24 00:00:00
2008-12-25 00:00:00
2008-12-26 00:00:00
2008-12-29 00:00:00
2008-12-30 00:00:00
2008-12-31 00:00:00
2009-01-05 00:00:00
2009-01-06 00:00:00
2009-01-07 00:00:00
2009-01-08 00:00:00
2009-01-09 00:00:00
2009-01-12 00:00:00
2009-01-13 00:00:00
2009-01-14 00:00:00
2009-01-15 00:00:00
2009-01-16 00:00:00
2009-01-19 00:00:00
2009-01-20 00:00:00
2009-01-21 00:00:00
2009-01-22 00:00:00
2009-01-23 00:00:00
2009-02-02 00:00:00
2009-02-03 00:00:00
2009-02-04 00:00:00
2009-02-05 00:00:00
2009-02-06 00:00:00
2009-02-09 00:00:00
2009-02-10 00:00:00
2009-02-11 00:00:00
2009-02-12 00:00:00
2009-02-13 00:00:00
2009-02-16 00:00:00
2009-02-17 00:00:00
2009-02-18 00:00:00
2009-02-19 00:00:00
2009-02-20 00:00:00
2009-02-23 00:00:00
2009-02-24 00:00:00
2009-02-25 00:00:00
2009-02-26 00:00:00
2009-02-27 00:00:00
2009-03-02 00:00:00
2009-03-03 00:00:00
2009-03-04 00:00:00
2009-03-05 00:00:00
2009-03-06 00:00:00
2009-03-09 00:00:00
2009-03-10 00:00:00
2009-03-11 00:00:00
2009-03-12 00:00:00
2009-03-13 00:00:00
2009-03-16 00:00:00
2009-03-17 00:00:00
2009-03-18 00:00:00
2009-03-19 00:00:00
2009-03-20 00:00:00
2009-03-23 00:00:00
2009-03-24 00:00:00
2009-03-25 00:00:00
2009-03-26 00:00:00
2009-03-27 00:00:00
2009-03-30 00:00:00
2009-03-31 00:00:00
2009-04-01 00:00:00
2009-04-02 00:00:00
2009-04-03 00:00:00
2009-04-07 00:00:00
2009-04-08 00:00:00
2009-04-09 00:00:00
2009-04-10 00:00:00
2009-04-13 00:00:00
2009-04-14 00:00:00
2009-04-15 00:00:00
2009-04-16 00:00:00
2009-04-17 00:00:00
2009-04-20 00:00:00
2009-04-21 00:00:00
2009-04-22 00:00:00
2009-04-23 00:00:00
2009-04-24 00:00:00
2009-04-27 00:00:00
2009-04-28 00:00:00
2009-04-29 00:00:00
2009-04-30 00:00:00
2009-05-04 00:00:00
2009-05-05 00:00:00
2009-05-06 00:00:00
2009-05-07 00:00:00
2009-05-08 00:00:00
2009-05-11 00:00:00
2009-05-12 00:00:00
2009-05-13 00:00:00
2009-05-14 00:00:00
2009-05-15 00:00:00
2009-05-18 00:00:00
2009-05-19 00:00:00
2009-05-20 00:00:00
2009-05-21 00:00:00
2009-05-22 00:00:00
2009-05-25 00:00:00
2009-05-26 00:00:00
2009-05-27 00:00:00
2009-06-01 00:00:00
2009-06-02 00:00:00
2009-06-03 00:00:00
2009-06-04 00:00:00
2009-06-05 00:00:00
2009-06-08 00:00:00
2009-06-09 00:00:00
2009-06-10 00:00:00
2009-06-11 00:00:00
2009-06-12 00:00:00
2009-06-15 00:00:00
2009-06-16 00:00:00
2009-06-17 00:00:00
2009-06-18 00:00:00
2009-06-19 00:00:00
2009-06-22 00:00:00
2009-06-23 00:00:00
2009-06-24 00:00:00
2009-06-25 00:00:00
2009-06-26 00:00:00
2009-06-29 00:00:00
2009-06-30 00:00:00
2009-07-01 00:00:00
2009-07-02 00:00:00
2009-07-03 00:00:00
2009-07-06 00:00:00
2009-07-07 00:00:00
2009-07-08 00:00:00
2009-07-09 00:00:00
2009-07-10 00:00:00
2009-07-13 00:00:00
2009-07-14 00:00:00
2009-07-15 00:00:00
2009-07-16 00:00:00
2009-07-17 00:00:00
2009-07-20 00:00:00
2009-07-21 00:00:00
2009-07-22 00:00:00
2009-07-23 00:00:00
2009-07-24 00:00:00
2009-07-27 00:00:00
2009-07-28 00:00:00
2009-07-29 00:00:00
2009-07-30 00:00:00
2009-07-31 00:00:00
2009-08-03 00:00:00
2009-08-04 00:00:00
2009-08-05 00:00:00
2009-08-06 00:00:00
2009-08-07 00:00:00
2009-08-10 00:00:00
2009-08-11 00:00:00
2009-08-12 00:00:00
2009-08-13 00:00:00
2009-08-14 00:00:00
2009-08-17 00:00:00
2009-08-18 00:00:00
2009-08-19 00:00:00
2009-08-20 00:00:00
2009-08-21 00:00:00
2009-08-24 00:00:00
2009-08-25 00:00:00
2009-08-26 00:00:00
2009-08-27 00:00:00
2009-08-28 00:00:00
2009-08-31 00:00:00
2009-09-01 00:00:00
2009-09-02 00:00:00
2009-09-03 00:00:00
2009-09-04 00:00:00
2009-09-07 00:00:00
2009-09-08 00:00:00
2009-09-09 00:00:00
2009-09-10 00:00:00
2009-09-11 00:00:00
2009-09-14 00:00:00
2009-09-15 00:00:00
2009-09-16 00:00:00
2009-09-17 00:00:00
2009-09-18 00:00:00
2009-09-21 00:00:00
2009-09-22 00:00:00
2009-09-23 00:00:00
2009-09-24 00:00:00
2009-09-25 00:00:00
2009-09-28 00:00:00
2009-09-29 00:00:00
2009-09-30 00:00:00
2009-10-09 00:00:00
2009-10-12 00:00:00
2009-10-13 00:00:00
2009-10-14 00:00:00
2009-10-15 00:00:00
2009-10-16 00:00:00
2009-10-19 00:00:00
2009-10-20 00:00:00
2009-10-21 00:00:00
2009-10-22 00:00:00
2009-10-23 00:00:00
2009-10-26 00:00:00
2009-10-27 00:00:00
2009-10-28 00:00:00
2009-10-29 00:00:00
2009-10-30 00:00:00
2009-11-02 00:00:00
2009-11-03 00:00:00
2009-11-04 00:00:00
2009-11-05 00:00:00
2009-11-06 00:00:00
2009-11-09 00:00:00
2009-11-10 00:00:00
2009-11-11 00:00:00
2009-11-12 00:00:00
2009-11-13 00:00:00
2009-11-16 00:00:00
2009-11-17 00:00:00
2009-11-18 00:00:00
2009-11-19 00:00:00
2009-11-20 00:00:00
2009-11-23 00:00:00
2009-11-24 00:00:00
2009-11-25 00:00:00
2009-11-26 00:00:00
2009-11-27 00:00:00
2009-11-30 00:00:00
2009-12-01 00:00:00
2009-12-02 00:00:00
2009-12-03 00:00:00
2009-12-04 00:00:00
2009-12-07 00:00:00
2009-12-08 00:00:00
2009-12-09 00:00:00
2009-12-10 00:00:00
2009-12-11 00:00:00
2009-12-14 00:00:00
2009-12-15 00:00:00
2009-12-16 00:00:00
2009-12-17 00:00:00
2009-12-18 00:00:00
2009-12-21 00:00:00
2009-12-22 00:00:00
2009-12-23 00:00:00
2009-12-24 00:00:00
2009-12-25 00:00:00
2009-12-28 00:00:00
2009-12-29 00:00:00
2009-12-30 00:00:00
2009-12-31 00:00:00
2010-01-04 00:00:00
2010-01-05 00:00:00
2010-01-06 00:00:00
2010-01-07 00:00:00
2010-01-08 00:00:00
2010-01-11 00:00:00
2010-01-12 00:00:00
2010-01-13 00:00:00
2010-01-14 00:00:00
2010-01-15 00:00:00
2010-01-18 00:00:00
2010-01-19 00:00:00
2010-01-20 00:00:00
2010-01-21 00:00:00
2010-01-22 00:00:00
2010-01-25 00:00:00
2010-01-26 00:00:00
2010-01-27 00:00:00
2010-01-28 00:00:00
2010-01-29 00:00:00
2010-02-01 00:00:00
2010-02-02 00:00:00
2010-02-03 00:00:00
2010-02-04 00:00:00
2010-02-05 00:00:00
2010-02-08 00:00:00
2010-02-09 00:00:00
2010-02-10 00:00:00
2010-02-11 00:00:00
2010-02-12 00:00:00
2010-02-22 00:00:00
2010-02-23 00:00:00
2010-02-24 00:00:00
2010-02-25 00:00:00
2010-02-26 00:00:00
2010-03-01 00:00:00
2010-03-02 00:00:00
2010-03-03 00:00:00
2010-03-04 00:00:00
2010-03-05 00:00:00
2010-03-08 00:00:00
2010-03-09 00:00:00
2010-03-10 00:00:00
2010-03-11 00:00:00
2010-03-12 00:00:00
2010-03-15 00:00:00
2010-03-16 00:00:00
2010-03-17 00:00:00
2010-03-18 00:00:00
2010-03-19 00:00:00
2010-03-22 00:00:00
2010-03-23 00:00:00
2010-03-24 00:00:00
2010-03-25 00:00:00
2010-03-26 00:00:00
2010-03-29 00:00:00
2010-03-30 00:00:00
2010-03-31 00:00:00
2010-04-01 00:00:00
2010-04-02 00:00:00
2010-04-06 00:00:00
2010-04-07 00:00:00
2010-04-08 00:00:00
2010-04-09 00:00:00
2010-04-12 00:00:00
2010-04-13 00:00:00
2010-04-14 00:00:00
2010-04-15 00:00:00
2010-04-16 00:00:00
2010-04-19 00:00:00
2010-04-20 00:00:00
2010-04-21 00:00:00
2010-04-22 00:00:00
2010-04-23 00:00:00
2010-04-26 00:00:00
2010-04-27 00:00:00
2010-04-28 00:00:00
2010-04-29 00:00:00
2010-04-30 00:00:00
2010-05-04 00:00:00
2010-05-05 00:00:00
2010-05-06 00:00:00
2010-05-07 00:00:00
2010-05-10 00:00:00
2010-05-11 00:00:00
2010-05-12 00:00:00
2010-05-13 00:00:00
2010-05-14 00:00:00
2010-05-17 00:00:00
2010-05-18 00:00:00
2010-05-19 00:00:00
2010-05-20 00:00:00
2010-05-21 00:00:00
2010-05-24 00:00:00
2010-05-25 00:00:00
2010-05-26 00:00:00
2010-05-27 00:00:00
2010-05-28 00:00:00
2010-05-31 00:00:00
2010-06-01 00:00:00
2010-06-02 00:00:00
2010-06-03 00:00:00
2010-06-04 00:00:00
2010-06-07 00:00:00
2010-06-08 00:00:00
2010-06-09 00:00:00
2010-06-10 00:00:00
2010-06-11 00:00:00
2010-06-17 00:00:00
2010-06-18 00:00:00
2010-06-21 00:00:00
2010-06-22 00:00:00
2010-06-23 00:00:00
2010-06-24 00:00:00
2010-06-25 00:00:00
2010-06-28 00:00:00
2010-06-29 00:00:00
2010-06-30 00:00:00
2010-07-01 00:00:00
2010-07-02 00:00:00
2010-07-05 00:00:00
2010-07-06 00:00:00
2010-07-07 00:00:00
2010-07-08 00:00:00
2010-07-09 00:00:00
2010-07-12 00:00:00
2010-07-13 00:00:00
2010-07-14 00:00:00
2010-07-15 00:00:00
2010-07-16 00:00:00
2010-07-19 00:00:00
2010-07-20 00:00:00
2010-07-21 00:00:00
2010-07-22 00:00:00
2010-07-23 00:00:00
2010-07-26 00:00:00
2010-07-27 00:00:00
2010-07-28 00:00:00
2010-07-29 00:00:00
2010-07-30 00:00:00
2010-08-02 00:00:00
2010-08-03 00:00:00
2010-08-04 00:00:00
2010-08-05 00:00:00
2010-08-06 00:00:00
2010-08-09 00:00:00
2010-08-10 00:00:00
2010-08-11 00:00:00
2010-08-12 00:00:00
2010-08-13 00:00:00
2010-08-16 00:00:00
2010-08-17 00:00:00
2010-08-18 00:00:00
2010-08-19 00:00:00
2010-08-20 00:00:00
2010-08-23 00:00:00
2010-08-24 00:00:00
2010-08-25 00:00:00
2010-08-26 00:00:00
2010-08-27 00:00:00
2010-08-30 00:00:00
2010-08-31 00:00:00
2010-09-01 00:00:00
2010-09-02 00:00:00
2010-09-03 00:00:00
2010-09-06 00:00:00
2010-09-07 00:00:00
2010-09-08 00:00:00
2010-09-09 00:00:00
2010-09-10 00:00:00
2010-09-13 00:00:00
2010-09-14 00:00:00
2010-09-15 00:00:00
2010-09-16 00:00:00
2010-09-17 00:00:00
2010-09-20 00:00:00
2010-09-21 00:00:00
2010-09-27 00:00:00
2010-09-28 00:00:00
2010-09-29 00:00:00
2010-09-30 00:00:00
2010-10-08 00:00:00
2010-10-11 00:00:00
2010-10-12 00:00:00
2010-10-13 00:00:00
2010-10-14 00:00:00
2010-10-15 00:00:00
2010-10-18 00:00:00
2010-10-19 00:00:00
2010-10-20 00:00:00
2010-10-21 00:00:00
2010-10-22 00:00:00
2010-10-25 00:00:00
2010-10-26 00:00:00
2010-10-27 00:00:00
2010-10-28 00:00:00
2010-10-29 00:00:00
2010-11-01 00:00:00
2010-11-02 00:00:00
2010-11-03 00:00:00
2010-11-04 00:00:00
2010-11-05 00:00:00
2010-11-08 00:00:00
2010-11-09 00:00:00
2010-11-10 00:00:00
2010-11-11 00:00:00
2010-11-12 00:00:00
2010-11-15 00:00:00
2010-11-16 00:00:00
2010-11-17 00:00:00
2010-11-18 00:00:00
2010-11-19 00:00:00
2010-11-22 00:00:00
2010-11-23 00:00:00
2010-11-24 00:00:00
2010-11-25 00:00:00
2010-11-26 00:00:00
2010-11-29 00:00:00
2010-11-30 00:00:00
2010-12-01 00:00:00
2010-12-02 00:00:00
2010-12-03 00:00:00
2010-12-06 00:00:00
2010-12-07 00:00:00
2010-12-08 00:00:00
2010-12-09 00:00:00
2010-12-10 00:00:00
2010-12-13 00:00:00
2010-12-14 00:00:00
2010-12-15 00:00:00
2010-12-16 00:00:00
2010-12-17 00:00:00
2010-12-20 00:00:00
2010-12-21 00:00:00
2010-12-22 00:00:00
2010-12-23 00:00:00
2010-12-24 00:00:00
2010-12-27 00:00:00
2010-12-28 00:00:00
2010-12-29 00:00:00
2010-12-30 00:00:00
2010-12-31 00:00:00
2011-01-04 00:00:00
2011-01-05 00:00:00
2011-01-06 00:00:00
2011-01-07 00:00:00
2011-01-10 00:00:00
2011-01-11 00:00:00
2011-01-12 00:00:00
2011-01-13 00:00:00
2011-01-14 00:00:00
2011-01-17 00:00:00
2011-01-18 00:00:00
2011-01-19 00:00:00
2011-01-20 00:00:00
2011-01-21 00:00:00
2011-01-24 00:00:00
2011-01-25 00:00:00
2011-01-26 00:00:00
2011-01-27 00:00:00
2011-01-28 00:00:00
2011-01-31 00:00:00
2011-02-01 00:00:00
2011-02-09 00:00:00
2011-02-10 00:00:00
2011-02-11 00:00:00
2011-02-14 00:00:00
2011-02-15 00:00:00
2011-02-16 00:00:00
2011-02-17 00:00:00
2011-02-18 00:00:00
2011-02-21 00:00:00
2011-02-22 00:00:00
2011-02-23 00:00:00
2011-02-24 00:00:00
2011-02-25 00:00:00
2011-02-28 00:00:00
2011-03-01 00:00:00
2011-03-02 00:00:00
2011-03-03 00:00:00
2011-03-04 00:00:00
2011-03-07 00:00:00
2011-03-08 00:00:00
2011-03-09 00:00:00
2011-03-10 00:00:00
2011-03-11 00:00:00
2011-03-14 00:00:00
2011-03-15 00:00:00
2011-03-16 00:00:00
2011-03-17 00:00:00
2011-03-18 00:00:00
2011-03-21 00:00:00
2011-03-22 00:00:00
2011-03-23 00:00:00
2011-03-24 00:00:00
2011-03-25 00:00:00
2011-03-28 00:00:00
2011-03-29 00:00:00
2011-03-30 00:00:00
2011-03-31 00:00:00
2011-04-01 00:00:00
2011-04-06 00:00:00
2011-04-07 00:00:00
2011-04-08 00:00:00
2011-04-11 00:00:00
2011-04-12 00:00:00
2011-04-13 00:00:00
2011-04-14 00:00:00
2011-04-15 00:00:00
2011-04-18 00:00:00
2011-04-19 00:00:00
2011-04-20 00:00:00
2011-04-21 00:00:00
2011-04-22 00:00:00
2011-04-25 00:00:00
2011-04-26 00:00:00
2011-04-27 00:00:00
2011-04-28 00:00:00
2011-04-29 00:00:00
2011-05-03 00:00:00
2011-05-04 00:00:00
2011-05-05 00:00:00
2011-05-06 00:00:00
2011-05-09 00:00:00
2011-05-10 00:00:00
2011-05-11 00:00:00
2011-05-12 00:00:00
2011-05-13 00:00:00
2011-05-16 00:00:00
2011-05-17 00:00:00
2011-05-18 00:00:00
2011-05-19 00:00:00
2011-05-20 00:00:00
2011-05-23 00:00:00
2011-05-24 00:00:00
2011-05-25 00:00:00
2011-05-26 00:00:00
2011-05-27 00:00:00
2011-05-30 00:00:00
2011-05-31 00:00:00
2011-06-01 00:00:00
2011-06-02 00:00:00
2011-06-03 00:00:00
2011-06-07 00:00:00
2011-06-08 00:00:00
2011-06-09 00:00:00
2011-06-10 00:00:00
2011-06-13 00:00:00
2011-06-14 00:00:00
2011-06-15 00:00:00
2011-06-16 00:00:00
2011-06-17 00:00:00
2011-06-20 00:00:00
2011-06-21 00:00:00
2011-06-22 00:00:00
2011-06-23 00:00:00
2011-06-24 00:00:00
2011-06-27 00:00:00
2011-06-28 00:00:00
2011-06-29 00:00:00
2011-06-30 00:00:00
2011-07-01 00:00:00
2011-07-04 00:00:00
2011-07-05 00:00:00
2011-07-06 00:00:00
2011-07-07 00:00:00
2011-07-08 00:00:00
2011-07-11 00:00:00
2011-07-12 00:00:00
2011-07-13 00:00:00
2011-07-14 00:00:00
2011-07-15 00:00:00
2011-07-18 00:00:00
2011-07-19 00:00:00
2011-07-20 00:00:00
2011-07-21 00:00:00
2011-07-22 00:00:00
2011-07-25 00:00:00
2011-07-26 00:00:00
2011-07-27 00:00:00
2011-07-28 00:00:00
2011-07-29 00:00:00
2011-08-01 00:00:00
2011-08-02 00:00:00
2011-08-03 00:00:00
2011-08-04 00:00:00
2011-08-05 00:00:00
2011-08-08 00:00:00
2011-08-09 00:00:00
2011-08-10 00:00:00
2011-08-11 00:00:00
2011-08-12 00:00:00
2011-08-15 00:00:00
2011-08-16 00:00:00
2011-08-17 00:00:00
2011-08-18 00:00:00
2011-08-19 00:00:00
2011-08-22 00:00:00
2011-08-23 00:00:00
2011-08-24 00:00:00
2011-08-25 00:00:00
2011-08-26 00:00:00
2011-08-29 00:00:00
2011-08-30 00:00:00
2011-08-31 00:00:00
2011-09-01 00:00:00
2011-09-02 00:00:00
2011-09-05 00:00:00
2011-09-06 00:00:00
2011-09-07 00:00:00
2011-09-08 00:00:00
2011-09-09 00:00:00
2011-09-13 00:00:00
2011-09-14 00:00:00
2011-09-15 00:00:00
2011-09-16 00:00:00
2011-09-19 00:00:00
2011-09-20 00:00:00
2011-09-21 00:00:00
2011-09-22 00:00:00
2011-09-23 00:00:00
2011-09-26 00:00:00
2011-09-27 00:00:00
2011-09-28 00:00:00
2011-09-29 00:00:00
2011-09-30 00:00:00
2011-10-10 00:00:00
2011-10-11 00:00:00
2011-10-12 00:00:00
2011-10-13 00:00:00
2011-10-14 00:00:00
2011-10-17 00:00:00
2011-10-18 00:00:00
2011-10-19 00:00:00
2011-10-20 00:00:00
2011-10-21 00:00:00
2011-10-24 00:00:00
2011-10-25 00:00:00
2011-10-26 00:00:00
2011-10-27 00:00:00
2011-10-28 00:00:00
2011-10-31 00:00:00
2011-11-01 00:00:00
2011-11-02 00:00:00
2011-11-03 00:00:00
2011-11-04 00:00:00
2011-11-07 00:00:00
2011-11-08 00:00:00
2011-11-09 00:00:00
2011-11-10 00:00:00
2011-11-11 00:00:00
2011-11-14 00:00:00
2011-11-15 00:00:00
2011-11-16 00:00:00
2011-11-17 00:00:00
2011-11-18 00:00:00
2011-11-21 00:00:00
2011-11-22 00:00:00
2011-11-23 00:00:00
2011-11-24 00:00:00
2011-11-25 00:00:00
2011-11-28 00:00:00
2011-11-29 00:00:00
2011-11-30 00:00:00
2011-12-01 00:00:00
2011-12-02 00:00:00
2011-12-05 00:00:00
2011-12-06 00:00:00
2011-12-07 00:00:00
2011-12-08 00:00:00
2011-12-09 00:00:00
2011-12-12 00:00:00
2011-12-13 00:00:00
2011-12-14 00:00:00
2011-12-15 00:00:00
2011-12-16 00:00:00
2011-12-19 00:00:00
2011-12-20 00:00:00
2011-12-21 00:00:00
2011-12-22 00:00:00
2011-12-23 00:00:00
2011-12-26 00:00:00
2011-12-27 00:00:00
2011-12-28 00:00:00
2011-12-29 00:00:00
2011-12-30 00:00:00
2012-01-04 00:00:00
2012-01-05 00:00:00
2012-01-06 00:00:00
2012-01-09 00:00:00
2012-01-10 00:00:00
2012-01-11 00:00:00
2012-01-12 00:00:00
2012-01-13 00:00:00
2012-01-16 00:00:00
2012-01-17 00:00:00
2012-01-18 00:00:00
2012-01-19 00:00:00
2012-01-20 00:00:00
2012-01-30 00:00:00
2012-01-31 00:00:00
2012-02-01 00:00:00
2012-02-02 00:00:00
2012-02-03 00:00:00
2012-02-06 00:00:00
2012-02-07 00:00:00
2012-02-08 00:00:00
2012-02-09 00:00:00
2012-02-10 00:00:00
2012-02-13 00:00:00
2012-02-14 00:00:00
2012-02-15 00:00:00
2012-02-16 00:00:00
2012-02-17 00:00:00
2012-02-20 00:00:00
2012-02-21 00:00:00
2012-02-22 00:00:00
2012-02-23 00:00:00
2012-02-24 00:00:00
2012-02-27 00:00:00
2012-02-28 00:00:00
2012-02-29 00:00:00
2012-03-01 00:00:00
2012-03-02 00:00:00
2012-03-05 00:00:00
2012-03-06 00:00:00
2012-03-07 00:00:00
2012-03-08 00:00:00
2012-03-09 00:00:00
2012-03-12 00:00:00
2012-03-13 00:00:00
2012-03-14 00:00:00
2012-03-15 00:00:00
2012-03-16 00:00:00
2012-03-19 00:00:00
2012-03-20 00:00:00
2012-03-21 00:00:00
2012-03-22 00:00:00
2012-03-23 00:00:00
2012-03-26 00:00:00
2012-03-27 00:00:00
2012-03-28 00:00:00
2012-03-29 00:00:00
2012-03-30 00:00:00
2012-04-05 00:00:00
2012-04-06 00:00:00
2012-04-09 00:00:00
2012-04-10 00:00:00
2012-04-11 00:00:00
2012-04-12 00:00:00
2012-04-13 00:00:00
2012-04-16 00:00:00
2012-04-17 00:00:00
2012-04-18 00:00:00
2012-04-19 00:00:00
2012-04-20 00:00:00
2012-04-23 00:00:00
2012-04-24 00:00:00
2012-04-25 00:00:00
2012-04-26 00:00:00
2012-04-27 00:00:00
2012-05-02 00:00:00
2012-05-03 00:00:00
2012-05-04 00:00:00
2012-05-07 00:00:00
2012-05-08 00:00:00
2012-05-09 00:00:00
2012-05-10 00:00:00
2012-05-11 00:00:00
2012-05-14 00:00:00
2012-05-15 00:00:00
2012-05-16 00:00:00
2012-05-17 00:00:00
2012-05-18 00:00:00
2012-05-21 00:00:00
2012-05-22 00:00:00
2012-05-23 00:00:00
2012-05-24 00:00:00
2012-05-25 00:00:00
2012-05-28 00:00:00
2012-05-29 00:00:00
2012-05-30 00:00:00
2012-05-31 00:00:00
2012-06-01 00:00:00
2012-06-04 00:00:00
2012-06-05 00:00:00
2012-06-06 00:00:00
2012-06-07 00:00:00
2012-06-08 00:00:00
2012-06-11 00:00:00
2012-06-12 00:00:00
2012-06-13 00:00:00
2012-06-14 00:00:00
2012-06-15 00:00:00
2012-06-18 00:00:00
2012-06-19 00:00:00
2012-06-20 00:00:00
2012-06-21 00:00:00
2012-06-25 00:00:00
2012-06-26 00:00:00
2012-06-27 00:00:00
2012-06-28 00:00:00
2012-06-29 00:00:00
2012-07-02 00:00:00
2012-07-03 00:00:00
2012-07-04 00:00:00
2012-07-05 00:00:00
2012-07-06 00:00:00
2012-07-09 00:00:00
2012-07-10 00:00:00
2012-07-11 00:00:00
2012-07-12 00:00:00
2012-07-13 00:00:00
2012-07-16 00:00:00
2012-07-17 00:00:00
2012-07-18 00:00:00
2012-07-19 00:00:00
2012-07-20 00:00:00
2012-07-23 00:00:00
2012-07-24 00:00:00
2012-07-25 00:00:00
2012-07-26 00:00:00
2012-07-27 00:00:00
2012-07-30 00:00:00
2012-07-31 00:00:00
2012-08-01 00:00:00
2012-08-02 00:00:00
2012-08-03 00:00:00
2012-08-06 00:00:00
2012-08-07 00:00:00
2012-08-08 00:00:00
2012-08-09 00:00:00
2012-08-10 00:00:00
2012-08-13 00:00:00
2012-08-14 00:00:00
2012-08-15 00:00:00
2012-08-16 00:00:00
2012-08-17 00:00:00
2012-08-20 00:00:00
2012-08-21 00:00:00
2012-08-22 00:00:00
2012-08-23 00:00:00
2012-08-24 00:00:00
2012-08-27 00:00:00
2012-08-28 00:00:00
2012-08-29 00:00:00
2012-08-30 00:00:00
2012-08-31 00:00:00
2012-09-03 00:00:00
2012-09-04 00:00:00
2012-09-05 00:00:00
2012-09-06 00:00:00
2012-09-07 00:00:00
2012-09-10 00:00:00
2012-09-11 00:00:00
2012-09-12 00:00:00
2012-09-13 00:00:00
2012-09-14 00:00:00
2012-09-17 00:00:00
2012-09-18 00:00:00
2012-09-19 00:00:00
2012-09-20 00:00:00
2012-09-21 00:00:00
2012-09-24 00:00:00
2012-09-25 00:00:00
2012-09-26 00:00:00
2012-09-27 00:00:00
2012-09-28 00:00:00
2012-10-08 00:00:00
2012-10-09 00:00:00
2012-10-10 00:00:00
2012-10-11 00:00:00
2012-10-12 00:00:00
2012-10-15 00:00:00
2012-10-16 00:00:00
2012-10-17 00:00:00
2012-10-18 00:00:00
2012-10-19 00:00:00
2012-10-22 00:00:00
2012-10-23 00:00:00
2012-10-24 00:00:00
2012-10-25 00:00:00
2012-10-26 00:00:00
2012-10-29 00:00:00
2012-10-30 00:00:00
2012-10-31 00:00:00
2012-11-01 00:00:00
2012-11-02 00:00:00
2012-11-05 00:00:00
2012-11-06 00:00:00
2012-11-07 00:00:00
2012-11-08 00:00:00
2012-11-09 00:00:00
2012-11-12 00:00:00
2012-11-13 00:00:00
2012-11-14 00:00:00
2012-11-15 00:00:00
2012-11-16 00:00:00
2012-11-19 00:00:00
2012-11-20 00:00:00
2012-11-21 00:00:00
2012-11-22 00:00:00
2012-11-23 00:00:00
2012-11-26 00:00:00
2012-11-27 00:00:00
2012-11-28 00:00:00
2012-11-29 00:00:00
2012-11-30 00:00:00
2012-12-03 00:00:00
2012-12-04 00:00:00
2012-12-05 00:00:00
2012-12-06 00:00:00
2012-12-07 00:00:00
2012-12-10 00:00:00
2012-12-11 00:00:00
2012-12-12 00:00:00
2012-12-13 00:00:00
2012-12-14 00:00:00
2012-12-17 00:00:00
2012-12-18 00:00:00
2012-12-19 00:00:00
2012-12-20 00:00:00
2012-12-21 00:00:00
2012-12-24 00:00:00
2012-12-25 00:00:00
2012-12-26 00:00:00
2012-12-27 00:00:00
2012-12-28 00:00:00
2012-12-31 00:00:00
2013-01-04 00:00:00
2013-01-07 00:00:00
2013-01-08 00:00:00
2013-01-09 00:00:00
2013-01-10 00:00:00
2013-01-11 00:00:00
2013-01-14 00:00:00
2013-01-15 00:00:00
2013-01-16 00:00:00
2013-01-17 00:00:00
2013-01-18 00:00:00
2013-01-21 00:00:00
2013-01-22 00:00:00
2013-01-23 00:00:00
2013-01-24 00:00:00
2013-01-25 00:00:00
2013-01-28 00:00:00
2013-01-29 00:00:00
2013-01-30 00:00:00
2013-01-31 00:00:00
2013-02-01 00:00:00
2013-02-04 00:00:00
2013-02-05 00:00:00
2013-02-06 00:00:00
2013-02-07 00:00:00
2013-02-08 00:00:00
2013-02-18 00:00:00
2013-02-19 00:00:00
2013-02-20 00:00:00
2013-02-21 00:00:00
2013-02-22 00:00:00
2013-02-25 00:00:00
2013-02-26 00:00:00
2013-02-27 00:00:00
2013-02-28 00:00:00
2013-03-01 00:00:00
2013-03-04 00:00:00
2013-03-05 00:00:00
2013-03-06 00:00:00
2013-03-07 00:00:00
2013-03-08 00:00:00
2013-03-11 00:00:00
2013-03-12 00:00:00
2013-03-13 00:00:00
2013-03-14 00:00:00
2013-03-15 00:00:00
2013-03-18 00:00:00
2013-03-19 00:00:00
2013-03-20 00:00:00
2013-03-21 00:00:00
2013-03-22 00:00:00
2013-03-25 00:00:00
2013-03-26 00:00:00
2013-03-27 00:00:00
2013-03-28 00:00:00
2013-03-29 00:00:00
2013-04-01 00:00:00
2013-04-02 00:00:00
2013-04-03 00:00:00
2013-04-08 00:00:00
2013-04-09 00:00:00
2013-04-10 00:00:00
2013-04-11 00:00:00
2013-04-12 00:00:00
2013-04-15 00:00:00
2013-04-16 00:00:00
2013-04-17 00:00:00
2013-04-18 00:00:00
2013-04-19 00:00:00
2013-04-22 00:00:00
2013-04-23 00:00:00
2013-04-24 00:00:00
2013-04-25 00:00:00
2013-04-26 00:00:00
2013-05-02 00:00:00
2013-05-03 00:00:00
2013-05-06 00:00:00
2013-05-07 00:00:00
2013-05-08 00:00:00
2013-05-09 00:00:00
2013-05-10 00:00:00
2013-05-13 00:00:00
2013-05-14 00:00:00
2013-05-15 00:00:00
2013-05-16 00:00:00
2013-05-17 00:00:00
2013-05-20 00:00:00
2013-05-21 00:00:00
2013-05-22 00:00:00
2013-05-23 00:00:00
2013-05-24 00:00:00
2013-05-27 00:00:00
2013-05-28 00:00:00
2013-05-29 00:00:00
2013-05-30 00:00:00
2013-05-31 00:00:00
2013-06-03 00:00:00
2013-06-04 00:00:00
2013-06-05 00:00:00
2013-06-06 00:00:00
2013-06-07 00:00:00
2013-06-13 00:00:00
2013-06-14 00:00:00
2013-06-17 00:00:00
2013-06-18 00:00:00
2013-06-19 00:00:00
2013-06-20 00:00:00
2013-06-21 00:00:00
2013-06-24 00:00:00
2013-06-25 00:00:00
2013-06-26 00:00:00
2013-06-27 00:00:00
2013-06-28 00:00:00
2013-07-01 00:00:00
2013-07-02 00:00:00
2013-07-03 00:00:00
2013-07-04 00:00:00
2013-07-05 00:00:00
2013-07-08 00:00:00
2013-07-09 00:00:00
2013-07-10 00:00:00
2013-07-11 00:00:00
2013-07-12 00:00:00
2013-07-15 00:00:00
2013-07-16 00:00:00
2013-07-17 00:00:00
2013-07-18 00:00:00
2013-07-19 00:00:00
2013-07-22 00:00:00
2013-07-23 00:00:00
2013-07-24 00:00:00
2013-07-25 00:00:00
2013-07-26 00:00:00
2013-07-29 00:00:00
2013-07-30 00:00:00
2013-07-31 00:00:00
2013-08-01 00:00:00
2013-08-02 00:00:00
2013-08-05 00:00:00
2013-08-06 00:00:00
2013-08-07 00:00:00
2013-08-08 00:00:00
2013-08-09 00:00:00
2013-08-12 00:00:00
2013-08-13 00:00:00
2013-08-14 00:00:00
2013-08-15 00:00:00
2013-08-16 00:00:00
2013-08-19 00:00:00
2013-08-20 00:00:00
2013-08-21 00:00:00
2013-08-22 00:00:00
2013-08-23 00:00:00
2013-08-26 00:00:00
2013-08-27 00:00:00
2013-08-28 00:00:00
2013-08-29 00:00:00
2013-08-30 00:00:00
2013-09-02 00:00:00
2013-09-03 00:00:00
2013-09-04 00:00:00
2013-09-05 00:00:00
2013-09-06 00:00:00
2013-09-09 00:00:00
2013-09-10 00:00:00
2013-09-11 00:00:00
2013-09-12 00:00:00
2013-09-13 00:00:00
2013-09-16 00:00:00
2013-09-17 00:00:00
2013-09-18 00:00:00
2013-09-23 00:00:00
2013-09-24 00:00:00
2013-09-25 00:00:00
2013-09-26 00:00:00
2013-09-27 00:00:00
2013-09-30 00:00:00
2013-10-08 00:00:00
2013-10-09 00:00:00
2013-10-10 00:00:00
2013-10-11 00:00:00
2013-10-14 00:00:00
2013-10-15 00:00:00
2013-10-16 00:00:00
2013-10-17 00:00:00
2013-10-18 00:00:00
2013-10-21 00:00:00
2013-10-22 00:00:00
2013-10-23 00:00:00
2013-10-24 00:00:00
2013-10-25 00:00:00
2013-10-28 00:00:00
2013-10-29 00:00:00
2013-10-30 00:00:00
2013-10-31 00:00:00
2013-11-01 00:00:00
2013-11-04 00:00:00
2013-11-05 00:00:00
2013-11-06 00:00:00
2013-11-07 00:00:00
2013-11-08 00:00:00
2013-11-11 00:00:00
2013-11-12 00:00:00
2013-11-13 00:00:00
2013-11-14 00:00:00
2013-11-15 00:00:00
2013-11-18 00:00:00
2013-11-19 00:00:00
2013-11-20 00:00:00
2013-11-21 00:00:00
2013-11-22 00:00:00
2013-11-25 00:00:00
2013-11-26 00:00:00
2013-11-27 00:00:00
2013-11-28 00:00:00
2013-11-29 00:00:00
2013-12-02 00:00:00
2013-12-03 00:00:00
2013-12-04 00:00:00
2013-12-05 00:00:00
2013-12-06 00:00:00
2013-12-09 00:00:00
2013-12-10 00:00:00
2013-12-11 00:00:00
2013-12-12 00:00:00
2013-12-13 00:00:00
2013-12-16 00:00:00
2013-12-17 00:00:00
2013-12-18 00:00:00
2013-12-19 00:00:00
2013-12-20 00:00:00
2013-12-23 00:00:00
2013-12-24 00:00:00
2013-12-25 00:00:00
2013-12-26 00:00:00
2013-12-27 00:00:00
2013-12-30 00:00:00
2013-12-31 00:00:00
2014-01-02 00:00:00
2014-01-03 00:00:00
2014-01-06 00:00:00
2014-01-07 00:00:00
2014-01-08 00:00:00
2014-01-09 00:00:00
2014-01-10 00:00:00
2014-01-13 00:00:00
2014-01-14 00:00:00
2014-01-15 00:00:00
2014-01-16 00:00:00
2014-01-17 00:00:00
2014-01-20 00:00:00
2014-01-21 00:00:00
2014-01-22 00:00:00
2014-01-23 00:00:00
2014-01-24 00:00:00
2014-01-27 00:00:00
2014-01-28 00:00:00
2014-01-29 00:00:00
2014-01-30 00:00:00
2014-02-07 00:00:00
2014-02-10 00:00:00
2014-02-11 00:00:00
2014-02-12 00:00:00
2014-02-13 00:00:00
2014-02-14 00:00:00
2014-02-17 00:00:00
2014-02-18 00:00:00
2014-02-19 00:00:00
2014-02-20 00:00:00
2014-02-21 00:00:00
2014-02-24 00:00:00
2014-02-25 00:00:00
2014-02-26 00:00:00
2014-02-27 00:00:00
2014-02-28 00:00:00
2014-03-03 00:00:00
2014-03-04 00:00:00
2014-03-05 00:00:00
2014-03-06 00:00:00
2014-03-07 00:00:00
2014-03-10 00:00:00
2014-03-11 00:00:00
2014-03-12 00:00:00
2014-03-13 00:00:00
2014-03-14 00:00:00
2014-03-17 00:00:00
2014-03-18 00:00:00
2014-03-19 00:00:00
2014-03-20 00:00:00
2014-03-21 00:00:00
2014-03-24 00:00:00
2014-03-25 00:00:00
2014-03-26 00:00:00
2014-03-27 00:00:00
2014-03-28 00:00:00
2014-03-31 00:00:00
2014-04-01 00:00:00
2014-04-02 00:00:00
2014-04-03 00:00:00
2014-04-04 00:00:00
2014-04-08 00:00:00
2014-04-09 00:00:00
2014-04-10 00:00:00
2014-04-11 00:00:00
2014-04-14 00:00:00
2014-04-15 00:00:00
2014-04-16 00:00:00
2014-04-17 00:00:00
2014-04-18 00:00:00
2014-04-21 00:00:00
2014-04-22 00:00:00
2014-04-23 00:00:00
2014-04-24 00:00:00
2014-04-25 00:00:00
2014-04-28 00:00:00
2014-04-29 00:00:00
2014-04-30 00:00:00
2014-05-05 00:00:00
2014-05-06 00:00:00
2014-05-07 00:00:00
2014-05-08 00:00:00
2014-05-09 00:00:00
2014-05-12 00:00:00
2014-05-13 00:00:00
2014-05-14 00:00:00
2014-05-15 00:00:00
2014-05-16 00:00:00
2014-05-19 00:00:00
2014-05-20 00:00:00
2014-05-21 00:00:00
2014-05-22 00:00:00
2014-05-23 00:00:00
2014-05-26 00:00:00
2014-05-27 00:00:00
2014-05-28 00:00:00
2014-05-29 00:00:00
2014-05-30 00:00:00
2014-06-03 00:00:00
2014-06-04 00:00:00
2014-06-05 00:00:00
2014-06-06 00:00:00
2014-06-09 00:00:00
2014-06-10 00:00:00
2014-06-11 00:00:00
2014-06-12 00:00:00
2014-06-13 00:00:00
2014-06-16 00:00:00
2014-06-17 00:00:00
2014-06-18 00:00:00
2014-06-19 00:00:00
2014-06-20 00:00:00
2014-06-23 00:00:00
2014-06-24 00:00:00
2014-06-25 00:00:00
2014-06-26 00:00:00
2014-06-27 00:00:00
2014-06-30 00:00:00
2014-07-01 00:00:00
2014-07-02 00:00:00
2014-07-03 00:00:00
2014-07-04 00:00:00
2014-07-07 00:00:00
2014-07-08 00:00:00
2014-07-09 00:00:00
2014-07-10 00:00:00
2014-07-11 00:00:00
2014-07-14 00:00:00
2014-07-15 00:00:00
2014-07-16 00:00:00
2014-07-17 00:00:00
2014-07-18 00:00:00
2014-07-21 00:00:00
2014-07-22 00:00:00
2014-07-23 00:00:00
2014-07-24 00:00:00
2014-07-25 00:00:00
2014-07-28 00:00:00
2014-07-29 00:00:00
2014-07-30 00:00:00
2014-07-31 00:00:00
2014-08-01 00:00:00
2014-08-04 00:00:00
2014-08-05 00:00:00
2014-08-06 00:00:00
2014-08-07 00:00:00
2014-08-08 00:00:00
2014-08-11 00:00:00
2014-08-12 00:00:00
2014-08-13 00:00:00
2014-08-14 00:00:00
2014-08-15 00:00:00
2014-08-18 00:00:00
2014-08-19 00:00:00
2014-08-20 00:00:00
2014-08-21 00:00:00
2014-08-22 00:00:00
2014-08-25 00:00:00
2014-08-26 00:00:00
2014-08-27 00:00:00
2014-08-28 00:00:00
2014-08-29 00:00:00
2014-09-01 00:00:00
2014-09-02 00:00:00
2014-09-03 00:00:00
2014-09-04 00:00:00
2014-09-05 00:00:00
2014-09-09 00:00:00
2014-09-10 00:00:00
2014-09-11 00:00:00
2014-09-12 00:00:00
2014-09-15 00:00:00
2014-09-16 00:00:00
2014-09-17 00:00:00
2014-09-18 00:00:00
2014-09-19 00:00:00
2014-09-22 00:00:00
2014-09-23 00:00:00
2014-09-24 00:00:00
2014-09-25 00:00:00
2014-09-26 00:00:00
2014-09-29 00:00:00
2014-09-30 00:00:00
2014-10-08 00:00:00
2014-10-09 00:00:00
2014-10-10 00:00:00
2014-10-13 00:00:00
2014-10-14 00:00:00
2014-10-15 00:00:00
2014-10-16 00:00:00
2014-10-17 00:00:00
2014-10-20 00:00:00
2014-10-21 00:00:00
2014-10-22 00:00:00
2014-10-23 00:00:00
2014-10-24 00:00:00
2014-10-27 00:00:00
2014-10-28 00:00:00
2014-10-29 00:00:00
2014-10-30 00:00:00
2014-10-31 00:00:00
2014-11-03 00:00:00
2014-11-04 00:00:00
2014-11-05 00:00:00
2014-11-06 00:00:00
2014-11-07 00:00:00
2014-11-10 00:00:00
2014-11-11 00:00:00
2014-11-12 00:00:00
2014-11-13 00:00:00
2014-11-14 00:00:00
2014-11-17 00:00:00
2014-11-18 00:00:00
2014-11-19 00:00:00
2014-11-20 00:00:00
2014-11-21 00:00:00
2014-11-24 00:00:00
2014-11-25 00:00:00
2014-11-26 00:00:00
2014-11-27 00:00:00
2014-11-28 00:00:00
2014-12-01 00:00:00
2014-12-02 00:00:00
2014-12-03 00:00:00
2014-12-04 00:00:00
2014-12-05 00:00:00
2014-12-08 00:00:00
2014-12-09 00:00:00
2014-12-10 00:00:00
2014-12-11 00:00:00
2014-12-12 00:00:00
2014-12-15 00:00:00
2014-12-16 00:00:00
2014-12-17 00:00:00
2014-12-18 00:00:00
2014-12-19 00:00:00
2014-12-22 00:00:00
2014-12-23 00:00:00
2014-12-24 00:00:00
2014-12-25 00:00:00
2014-12-26 00:00:00
2014-12-29 00:00:00
2014-12-30 00:00:00
2014-12-31 00:00:00
2015-01-05 00:00:00
2015-01-06 00:00:00
2015-01-07 00:00:00
2015-01-08 00:00:00
2015-01-09 00:00:00
2015-01-12 00:00:00
2015-01-13 00:00:00
2015-01-14 00:00:00
2015-01-15 00:00:00
2015-01-16 00:00:00
2015-01-19 00:00:00
2015-01-20 00:00:00
2015-01-21 00:00:00
2015-01-22 00:00:00
2015-01-23 00:00:00
2015-01-26 00:00:00
2015-01-27 00:00:00
2015-01-28 00:00:00
2015-01-29 00:00:00
2015-01-30 00:00:00
2015-02-02 00:00:00
2015-02-03 00:00:00
2015-02-04 00:00:00
2015-02-05 00:00:00
2015-02-06 00:00:00
2015-02-09 00:00:00
2015-02-10 00:00:00
2015-02-11 00:00:00
2015-02-12 00:00:00
2015-02-13 00:00:00
2015-02-16 00:00:00
2015-02-17 00:00:00
2015-02-25 00:00:00
2015-02-26 00:00:00
2015-02-27 00:00:00
2015-03-02 00:00:00
2015-03-03 00:00:00
2015-03-04 00:00:00
2015-03-05 00:00:00
2015-03-06 00:00:00
2015-03-09 00:00:00
2015-03-10 00:00:00
2015-03-11 00:00:00
2015-03-12 00:00:00
2015-03-13 00:00:00
2015-03-16 00:00:00
2015-03-17 00:00:00
2015-03-18 00:00:00
2015-03-19 00:00:00
2015-03-20 00:00:00
2015-03-23 00:00:00
2015-03-24 00:00:00
2015-03-25 00:00:00
2015-03-26 00:00:00
2015-03-27 00:00:00
2015-03-30 00:00:00
2015-03-31 00:00:00
2015-04-01 00:00:00
2015-04-02 00:00:00
2015-04-03 00:00:00
2015-04-07 00:00:00
2015-04-08 00:00:00
2015-04-09 00:00:00
2015-04-10 00:00:00
2015-04-13 00:00:00
2015-04-14 00:00:00
2015-04-15 00:00:00
2015-04-16 00:00:00
2015-04-17 00:00:00
2015-04-20 00:00:00
2015-04-21 00:00:00
2015-04-22 00:00:00
2015-04-23 00:00:00
2015-04-24 00:00:00
2015-04-27 00:00:00
2015-04-28 00:00:00
2015-04-29 00:00:00
2015-04-30 00:00:00
2015-05-04 00:00:00
2015-05-05 00:00:00
2015-05-06 00:00:00
2015-05-07 00:00:00
2015-05-08 00:00:00
2015-05-11 00:00:00
2015-05-12 00:00:00
2015-05-13 00:00:00
2015-05-14 00:00:00
2015-05-15 00:00:00
2015-05-18 00:00:00
2015-05-19 00:00:00
2015-05-20 00:00:00
2015-05-21 00:00:00
2015-05-22 00:00:00
2015-05-25 00:00:00
2015-05-26 00:00:00
2015-05-27 00:00:00
2015-05-28 00:00:00
2015-05-29 00:00:00
2015-06-01 00:00:00
2015-06-02 00:00:00
2015-06-03 00:00:00
2015-06-04 00:00:00
2015-06-05 00:00:00
2015-06-08 00:00:00
2015-06-09 00:00:00
2015-06-10 00:00:00
2015-06-11 00:00:00
2015-06-12 00:00:00
2015-06-15 00:00:00
2015-06-16 00:00:00
2015-06-17 00:00:00
2015-06-18 00:00:00
2015-06-19 00:00:00
2015-06-23 00:00:00
2015-06-24 00:00:00
2015-06-25 00:00:00
2015-06-26 00:00:00
2015-06-29 00:00:00
2015-06-30 00:00:00
2015-07-01 00:00:00
2015-07-02 00:00:00
2015-07-03 00:00:00
2015-07-06 00:00:00
2015-07-07 00:00:00
2015-07-08 00:00:00
2015-07-09 00:00:00
2015-07-10 00:00:00
2015-07-13 00:00:00
2015-07-14 00:00:00
2015-07-15 00:00:00
2015-07-16 00:00:00
2015-07-17 00:00:00
2015-07-20 00:00:00
2015-07-21 00:00:00
2015-07-22 00:00:00
2015-07-23 00:00:00
2015-07-24 00:00:00
2015-07-27 00:00:00
2015-07-28 00:00:00
2015-07-29 00:00:00
2015-07-30 00:00:00
2015-07-31 00:00:00
2015-08-03 00:00:00
2015-08-04 00:00:00
2015-08-05 00:00:00
2015-08-06 00:00:00
2015-08-07 00:00:00
2015-08-10 00:00:00
2015-08-11 00:00:00
2015-08-12 00:00:00
2015-08-13 00:00:00
2015-08-14 00:00:00
2015-08-17 00:00:00
2015-08-18 00:00:00
2015-08-19 00:00:00
2015-08-20 00:00:00
2015-08-21 00:00:00
2015-08-24 00:00:00
2015-08-25 00:00:00
2015-08-26 00:00:00
2015-08-27 00:00:00
2015-08-28 00:00:00
2015-08-31 00:00:00
2015-09-01 00:00:00
2015-09-02 00:00:00
2015-09-07 00:00:00
2015-09-08 00:00:00
2015-09-09 00:00:00
2015-09-10 00:00:00
2015-09-11 00:00:00
2015-09-14 00:00:00
2015-09-15 00:00:00
2015-09-16 00:00:00
2015-09-17 00:00:00
2015-09-18 00:00:00
2015-09-21 00:00:00
2015-09-22 00:00:00
2015-09-23 00:00:00
2015-09-24 00:00:00
2015-09-25 00:00:00
2015-09-28 00:00:00
2015-09-29 00:00:00
2015-09-30 00:00:00
2015-10-08 00:00:00
2015-10-09 00:00:00
2015-10-12 00:00:00
2015-10-13 00:00:00
2015-10-14 00:00:00
2015-10-15 00:00:00
2015-10-16 00:00:00
2015-10-19 00:00:00
2015-10-20 00:00:00
2015-10-21 00:00:00
2015-10-22 00:00:00
2015-10-23 00:00:00
2015-10-26 00:00:00
2015-10-27 00:00:00
2015-10-28 00:00:00
2015-10-29 00:00:00
2015-10-30 00:00:00
2015-11-02 00:00:00
2015-11-03 00:00:00
2015-11-04 00:00:00
2015-11-05 00:00:00
2015-11-06 00:00:00
2015-11-09 00:00:00
2015-11-10 00:00:00
2015-11-11 00:00:00
2015-11-12 00:00:00
2015-11-13 00:00:00
2015-11-16 00:00:00
2015-11-17 00:00:00
2015-11-18 00:00:00
2015-11-19 00:00:00
2015-11-20 00:00:00
2015-11-23 00:00:00
2015-11-24 00:00:00
2015-11-25 00:00:00
2015-11-26 00:00:00
2015-11-27 00:00:00
2015-11-30 00:00:00
2015-12-01 00:00:00
2015-12-02 00:00:00
2015-12-03 00:00:00
2015-12-04 00:00:00
2015-12-07 00:00:00
2015-12-08 00:00:00
2015-12-09 00:00:00
2015-12-10 00:00:00
2015-12-11 00:00:00
2015-12-14 00:00:00
2015-12-15 00:00:00
2015-12-16 00:00:00
2015-12-17 00:00:00
2015-12-18 00:00:00
2015-12-21 00:00:00
2015-12-22 00:00:00
2015-12-23 00:00:00
2015-12-24 00:00:00
2015-12-25 00:00:00
2015-12-28 00:00:00
2015-12-29 00:00:00
2015-12-30 00:00:00
2015-12-31 00:00:00
2016-01-04 00:00:00
2016-01-05 00:00:00
2016-01-06 00:00:00
2016-01-07 00:00:00
2016-01-08 00:00:00
2016-01-11 00:00:00
2016-01-12 00:00:00
2016-01-13 00:00:00
2016-01-14 00:00:00
2016-01-15 00:00:00
2016-01-18 00:00:00
2016-01-19 00:00:00
2016-01-20 00:00:00
2016-01-21 00:00:00
2016-01-22 00:00:00
2016-01-25 00:00:00
2016-01-26 00:00:00
2016-01-27 00:00:00
2016-01-28 00:00:00
2016-01-29 00:00:00
2016-02-01 00:00:00
2016-02-02 00:00:00
2016-02-03 00:00:00
2016-02-04 00:00:00
2016-02-05 00:00:00
2016-02-15 00:00:00
2016-02-16 00:00:00
2016-02-17 00:00:00
2016-02-18 00:00:00
2016-02-19 00:00:00
2016-02-22 00:00:00
2016-02-23 00:00:00
2016-02-24 00:00:00
2016-02-25 00:00:00
2016-02-26 00:00:00
2016-02-29 00:00:00
2016-03-01 00:00:00
2016-03-02 00:00:00
2016-03-03 00:00:00
2016-03-04 00:00:00
2016-03-07 00:00:00
2016-03-08 00:00:00
2016-03-09 00:00:00
2016-03-10 00:00:00
2016-03-11 00:00:00
2016-03-14 00:00:00
2016-03-15 00:00:00
2016-03-16 00:00:00
2016-03-17 00:00:00
2016-03-18 00:00:00
2016-03-21 00:00:00
2016-03-22 00:00:00
2016-03-23 00:00:00
2016-03-24 00:00:00
2016-03-25 00:00:00
2016-03-28 00:00:00
2016-03-29 00:00:00
2016-03-30 00:00:00
2016-03-31 00:00:00
2016-04-01 00:00:00
2016-04-05 00:00:00
2016-04-06 00:00:00
2016-04-07 00:00:00
2016-04-08 00:00:00
2016-04-11 00:00:00
2016-04-12 00:00:00
2016-04-13 00:00:00
2016-04-14 00:00:00
2016-04-15 00:00:00
2016-04-18 00:00:00
2016-04-19 00:00:00
2016-04-20 00:00:00
2016-04-21 00:00:00
2016-04-22 00:00:00
2016-04-25 00:00:00
2016-04-26 00:00:00
2016-04-27 00:00:00
2016-04-28 00:00:00
2016-04-29 00:00:00
2016-05-03 00:00:00
2016-05-04 00:00:00
2016-05-05 00:00:00
2016-05-06 00:00:00
2016-05-09 00:00:00
2016-05-10 00:00:00
2016-05-11 00:00:00
2016-05-12 00:00:00
2016-05-13 00:00:00
2016-05-16 00:00:00
2016-05-17 00:00:00
2016-05-18 00:00:00
2016-05-19 00:00:00
2016-05-20 00:00:00
2016-05-23 00:00:00
2016-05-24 00:00:00
2016-05-25 00:00:00
2016-05-26 00:00:00
2016-05-27 00:00:00
2016-05-30 00:00:00
2016-05-31 00:00:00
2016-06-01 00:00:00
2016-06-02 00:00:00
2016-06-03 00:00:00
2016-06-06 00:00:00
2016-06-07 00:00:00
2016-06-08 00:00:00
2016-06-13 00:00:00
2016-06-14 00:00:00
2016-06-15 00:00:00
2016-06-16 00:00:00
2016-06-17 00:00:00
2016-06-20 00:00:00
2016-06-21 00:00:00
2016-06-22 00:00:00
2016-06-23 00:00:00
2016-06-24 00:00:00
2016-06-27 00:00:00
2016-06-28 00:00:00
2016-06-29 00:00:00
2016-06-30 00:00:00
2016-07-01 00:00:00
2016-07-04 00:00:00
2016-07-05 00:00:00
2016-07-06 00:00:00
2016-07-07 00:00:00
2016-07-08 00:00:00
2016-07-11 00:00:00
2016-07-12 00:00:00
2016-07-13 00:00:00
2016-07-14 00:00:00
2016-07-15 00:00:00
2016-07-18 00:00:00
2016-07-19 00:00:00
2016-07-20 00:00:00
2016-07-21 00:00:00
2016-07-22 00:00:00
2016-07-25 00:00:00
2016-07-26 00:00:00
2016-07-27 00:00:00
2016-07-28 00:00:00
2016-07-29 00:00:00
2016-08-01 00:00:00
2016-08-02 00:00:00
2016-08-03 00:00:00
2016-08-04 00:00:00
2016-08-05 00:00:00
2016-08-08 00:00:00
2016-08-09 00:00:00
2016-08-10 00:00:00
2016-08-11 00:00:00
2016-08-12 00:00:00
2016-08-15 00:00:00
2016-08-16 00:00:00
2016-08-17 00:00:00
2016-08-18 00:00:00
2016-08-19 00:00:00
2016-08-22 00:00:00
2016-08-23 00:00:00
2016-08-24 00:00:00
2016-08-25 00:00:00
2016-08-26 00:00:00
2016-08-29 00:00:00
2016-08-30 00:00:00
2016-08-31 00:00:00
2016-09-01 00:00:00
2016-09-02 00:00:00
2016-09-05 00:00:00
2016-09-06 00:00:00
2016-09-07 00:00:00
2016-09-08 00:00:00
2016-09-09 00:00:00
2016-09-12 00:00:00
2016-09-13 00:00:00
2016-09-14 00:00:00
2016-09-19 00:00:00
2016-09-20 00:00:00
2016-09-21 00:00:00
2016-09-22 00:00:00
2016-09-23 00:00:00
2016-09-26 00:00:00
2016-09-27 00:00:00
2016-09-28 00:00:00
2016-09-29 00:00:00
2016-09-30 00:00:00
2016-10-10 00:00:00
2016-10-11 00:00:00
2016-10-12 00:00:00
2016-10-13 00:00:00
2016-10-14 00:00:00
2016-10-17 00:00:00
2016-10-18 00:00:00
2016-10-19 00:00:00
2016-10-20 00:00:00
2016-10-21 00:00:00
2016-10-24 00:00:00
2016-10-25 00:00:00
2016-10-26 00:00:00
2016-10-27 00:00:00
2016-10-28 00:00:00
2016-10-31 00:00:00
2016-11-01 00:00:00
2016-11-02 00:00:00
2016-11-03 00:00:00
2016-11-04 00:00:00
2016-11-07 00:00:00
2016-11-08 00:00:00
2016-11-09 00:00:00
2016-11-10 00:00:00
2016-11-11 00:00:00
2016-11-14 00:00:00
2016-11-15 00:00:00
2016-11-16 00:00:00
2016-11-17 00:00:00
2016-11-18 00:00:00
2016-11-21 00:00:00
2016-11-22 00:00:00
2016-11-23 00:00:00
2016-11-24 00:00:00
2016-11-25 00:00:00
2016-11-28 00:00:00
2016-11-29 00:00:00
2016-11-30 00:00:00
2016-12-01 00:00:00
2016-12-02 00:00:00
2016-12-05 00:00:00
2016-12-06 00:00:00
2016-12-07 00:00:00
2016-12-08 00:00:00
2016-12-09 00:00:00
2016-12-12 00:00:00
2016-12-13 00:00:00
2016-12-14 00:00:00
2016-12-15 00:00:00
2016-12-16 00:00:00
2016-12-19 00:00:00
2016-12-20 00:00:00
2016-12-21 00:00:00
2016-12-22 00:00:00
2016-12-23 00:00:00
2016-12-26 00:00:00
2016-12-27 00:00:00
2016-12-28 00:00:00
2016-12-29 00:00:00
2016-12-30 00:00:00
2017-01-03 00:00:00
2017-01-04 00:00:00
2017-01-05 00:00:00
2017-01-06 00:00:00
2017-01-09 00:00:00
2017-01-10 00:00:00
2017-01-11 00:00:00
2017-01-12 00:00:00
2017-01-13 00:00:00
2017-01-16 00:00:00
2017-01-17 00:00:00
2017-01-18 00:00:00
2017-01-19 00:00:00
2017-01-20 00:00:00
2017-01-23 00:00:00
2017-01-24 00:00:00
2017-01-25 00:00:00
2017-01-26 00:00:00
2017-02-03 00:00:00
2017-02-06 00:00:00
2017-02-07 00:00:00
2017-02-08 00:00:00
2017-02-09 00:00:00
2017-02-10 00:00:00
2017-02-13 00:00:00
2017-02-14 00:00:00
2017-02-15 00:00:00
2017-02-16 00:00:00
2017-02-17 00:00:00
2017-02-20 00:00:00
2017-02-21 00:00:00
2017-02-22 00:00:00
2017-02-23 00:00:00
2017-02-24 00:00:00
2017-02-27 00:00:00
2017-02-28 00:00:00
2017-03-01 00:00:00
2017-03-02 00:00:00
2017-03-03 00:00:00
2017-03-06 00:00:00
2017-03-07 00:00:00
2017-03-08 00:00:00
2017-03-09 00:00:00
2017-03-10 00:00:00
2017-03-13 00:00:00
2017-03-14 00:00:00
2017-03-15 00:00:00
2017-03-16 00:00:00
2017-03-17 00:00:00
2017-03-20 00:00:00
2017-03-21 00:00:00
2017-03-22 00:00:00
2017-03-23 00:00:00
2017-03-24 00:00:00
2017-03-27 00:00:00
2017-03-28 00:00:00
2017-03-29 00:00:00
2017-03-30 00:00:00
2017-03-31 00:00:00
2017-04-05 00:00:00
2017-04-06 00:00:00
2017-04-07 00:00:00
2017-04-10 00:00:00
2017-04-11 00:00:00
2017-04-12 00:00:00
2017-04-13 00:00:00
2017-04-14 00:00:00
2017-04-17 00:00:00
2017-04-18 00:00:00
2017-04-19 00:00:00
2017-04-20 00:00:00
2017-04-21 00:00:00
2017-04-24 00:00:00
2017-04-25 00:00:00
2017-04-26 00:00:00
2017-04-27 00:00:00
2017-04-28 00:00:00
2017-05-02 00:00:00
2017-05-03 00:00:00
2017-05-04 00:00:00
2017-05-05 00:00:00
2017-05-08 00:00:00
2017-05-09 00:00:00
2017-05-10 00:00:00
2017-05-11 00:00:00
2017-05-12 00:00:00
2017-05-15 00:00:00
2017-05-16 00:00:00
2017-05-17 00:00:00
2017-05-18 00:00:00
2017-05-19 00:00:00
2017-05-22 00:00:00

In [88]:
dates = [pd.Timestamp('2012-05-01'), pd.Timestamp('2012-05-02'), pd.Timestamp('2012-05-03')]
s = pd.DataFrame(index = dates ,data =[[5,6,7],[8,6,0],[1,2,3]],columns=[1,2,3] )
d = pd.DataFrame(index = dates,data =[[1,2,3,1],[2,3,1,2],[3,1,2,3]],columns=['hs','hc','hv','hg'] )
dd =d.copy()

In [129]:
excessReturn = returndf - finaldf

In [133]:
excessReturn.rolling(min_periods=20,window=20,center=False).mean()
excessReturn.index.name = 'Own_Factor_excess_return_20D'
excessReturn.to_csv(path + excessReturn.index.name + '.csv',na_rep='NaN', date_format = '%Y%m%d')

In [ ]:


In [134]:



---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-134-d83a95a163ac> in <module>()
      1 a=1
----> 2 a(2)

TypeError: 'int' object is not callable

In [ ]:


In [91]:
for i in dates:
    sSlice = s.loc[i]
    dSlice = d.loc[i]
    dd.loc[i] = sSlice.loc[dSlice].values
print dd


            hs  hc  hv  hg
2012-05-01   5   6   7   5
2012-05-02   6   0   8   6
2012-05-03   3   1   2   3

In [ ]:
#  --------------------------------------- Calculate 60/120 day price/ 250 ROE volatility ---------------------------------- #

In [7]:
filenameROE = 'LZ_GPA_FIN_IND_ROE.csv'

In [10]:
def calRoeVol(period):
    roedf = pd.read_csv(path+filenameROE,infer_datetime_format=True,parse_dates=[0],index_col=0)
    roeVol = roedf.rolling(min_periods=period-1,window=period,center=False).std()
    roeVol.index.name = 'Own_Factor_ROE_Volatility_%dD' % period
    roeVol.to_csv(path + roeVol.index.name + '.csv',na_rep='NaN', date_format = '%Y%m%d')
    return roeVol

In [13]:
calRoeVol(250).tail()


Out[13]:
000005.SZ 600601.SH 600602.SH 600651.SH 600652.SH 600653.SH 600654.SH 600656.SH 000004.SZ 000002.SZ ... 002876.SZ 603580.SH 300659.SZ 603196.SH 002875.SZ 603200.SH 300658.SZ 300660.SZ 603042.SH 002877.SZ
Own_Factor_ROE_Volatility_250D
2017-05-26 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-05-31 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-06-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-06-02 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-06-05 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 rows × 3343 columns


In [ ]:
# ---------------------------------------cal  Natural log of market cap ---------------------------------- #

In [35]:
def calLNCAP():
    LNCAP = np.log10(pd.read_csv(path+filenameFCAP,infer_datetime_format=True,parse_dates=[0],index_col=0))
    LNCAP.index.name = 'Own_Factor_LNCAP_1D' 
    LNCAP.to_csv(path + LNCAP.index.name + '.csv',na_rep='NaN', date_format = '%Y%m%d')
    return  LNCAP

In [36]:
calLNCAP().tail(5)


Out[36]:
000005.SZ 600601.SH 600602.SH 600651.SH 600652.SH 600653.SH 600654.SH 600656.SH 000004.SZ 000002.SZ ... 603200.SH 300658.SZ 300660.SZ 603042.SH 002877.SZ 002878.SZ 300661.SZ 603496.SH 300662.SZ 300663.SZ
Own_Factor_LNCAP_1D
2017-06-05 5.686703 5.892863 5.770347 5.790428 5.749290 5.755356 6.029954 NaN 5.475191 7.31146 ... 4.745963 4.885785 5.302972 4.782630 4.567939 NaN NaN NaN NaN NaN
2017-06-06 5.689245 5.898920 5.776141 5.793661 5.749290 5.755356 6.007662 NaN 5.475191 7.30670 ... 4.787317 4.927242 5.344365 4.823957 4.609331 4.594187 4.808953 NaN NaN NaN
2017-06-07 5.700916 5.906079 5.786881 5.803218 5.749290 5.755356 6.007662 NaN 5.475191 7.30670 ... 4.828769 4.968600 5.385780 4.865329 4.650694 4.635674 4.850309 4.706718 NaN NaN
2017-06-08 5.700916 5.929124 5.787504 5.802167 5.790588 5.755356 6.007662 NaN 5.475191 7.30670 ... 4.870183 5.009982 5.427173 4.906777 4.691979 4.676998 4.891677 4.748188 4.627724 4.536614
2017-06-09 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 rows × 3348 columns


In [ ]:
# ---------------------------------------cal  Non linear size ---------------------------------- #

In [37]:
FCAP = pd.read_csv(path+filenameFCAP,infer_datetime_format=True,parse_dates=[0],index_col=0)

In [45]:
def calNonLS():
    FCAPCube = FCAP**2
    NormalizedFCAPCube = simpleNormalize(FCAPCube )
    NormalizedFCAP = simpleNormalize(FCAP)
    neutralizedFCAPCube = neutralizeFactor(NormalizedFCAPCube, NormalizedFCAP, NormalizedFCAPCube.index)
    neutralizedFCAPCube .index.name = 'Own_Factor_Non_Linear_Size.1D'
    neutralizedFCAPCube .to_csv(path+neutralizedFCAPCube .index.name+'.csv',na_rep='NaN',date_format='%Y%m%d')
    return neutralizedFCAPCube

In [46]:
calNonLS().tail(5)


Out[46]:
000005.SZ 600601.SH 600602.SH 600651.SH 600652.SH 600653.SH 600654.SH 600656.SH 000004.SZ 000002.SZ ... 603200.SH 300658.SZ 300660.SZ 603042.SH 002877.SZ 002878.SZ 300661.SZ 603496.SH 300662.SZ 300663.SZ
Own_Factor_Non_Linear_Size.1D
2017-06-05 0.078146 0.026173 0.059936 0.055025 0.064852 0.063460 -0.024531 NaN 0.111310 -2.651575 ... 0.154515 0.150742 0.128669 0.153640 0.157857 NaN NaN NaN NaN NaN
2017-06-06 0.077922 0.024656 0.058868 0.054549 0.065162 0.063774 -0.014682 NaN 0.111511 -2.621159 ... 0.153623 0.149480 0.125266 0.152663 0.157289 0.157537 0.153066 NaN NaN NaN
2017-06-07 0.077734 0.024887 0.058535 0.054443 0.067393 0.066014 -0.011885 NaN 0.113412 -2.602376 ... 0.154140 0.149619 0.123180 0.153094 0.158145 0.158414 0.153534 0.157057 NaN NaN
2017-06-08 0.077314 0.017092 0.058039 0.054383 0.057281 0.065642 -0.011943 NaN 0.112849 -2.589295 ... 0.152228 0.147277 0.118320 0.151082 0.156619 0.156912 0.151567 0.155423 0.157809 0.159223
2017-06-09 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 rows × 3348 columns


In [ ]:
# ---------------------------------------cal  beta ---------------------------------- #

In [7]:
startTime =  datetime.strptime('20131201', '%Y%m%d')
endTime = datetime.strptime('20170429', '%Y%m%d')
filenameBENCH = 'LZ_GPA_INDXQUOTE_CLOSE.csv'
filenamePrice = 'Own_Factor_AdjustedPriceForward-1d.csv'
HS300Index ='000300.SH'

In [8]:
benchmarkReturn = pd.read_csv(path+filenameBENCH,infer_datetime_format=True,parse_dates=[0],index_col=0)[HS300Index].loc[startTime:endTime].pct_change()
stkreturn = pd.read_csv(path+filenamePrice,infer_datetime_format=True,parse_dates=[0],index_col=0).loc[startTime:endTime].pct_change()

In [34]:
import warnings
warnings.simplefilter("error")
def cal_beta(returnSeries,benchmark = benchmarkReturn,riskFreeRate = 0 ): 
    benchmarkSlice = benchmark.loc[returnSeries.iloc[1:].index] - riskFreeRate
    try:
        result = ((returnSeries.iloc[1:] - riskFreeRate).cov(benchmarkSlice)) / (benchmarkSlice.std() ** 2)
    except:
        result = np.NaN
    return

In [34]:
#betadf = stkreturn.apply(cal_beta)

In [ ]:


In [10]:
def cal_beta1(returnSeries,benchmarkSlice ,riskFreeRate = 0 ): 
    try:
        result = ((returnSeries - riskFreeRate).cov(benchmarkSlice)) / (benchmarkSlice.std() ** 2)
    except:
        result = np.NaN
    return result

In [ ]:


In [12]:
import warnings

warnings.simplefilter("error")

start = time.time()
betadf = stkreturn.copy()
for i in range(99,len(betadf)):
    betaSlice = stkreturn.iloc[i-99:i+1]
    benchmarkSlicedd =  benchmarkReturn.iloc[i-99:i+1]
    betadf.iloc[i] = betaSlice.apply(cal_beta1, args=(benchmarkSlicedd,0))
print '%s time elapsed' %(time.time() - start)


1300.76799989 time elapsed

In [62]:
betadf


Out[62]:
000005.SZ 600601.SH 600602.SH 600651.SH 600652.SH 600653.SH 600654.SH 600656.SH 000004.SZ 000002.SZ ... 300652.SZ 300653.SZ 603488.SH 603269.SH 603758.SH 002872.SZ 002873.SZ 300656.SZ 603197.SH 603383.SH
Own_Factor_AdjustedPriceForward-1d
2013-12-02 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-03 0.011765 0.021276 0.041667 0.012132 0.020979 0.000000 0.016152 0.031879 -0.007105 0.010514 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-04 0.015504 0.020833 0.018947 0.030822 0.015981 0.023810 0.014569 0.004878 0.011628 0.010404 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-05 0.000000 0.000000 0.035124 -0.001661 -0.004493 0.019380 -0.019582 0.008091 0.001768 0.000000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-06 0.003817 -0.010202 -0.003994 0.008320 -0.006773 -0.007605 -0.001332 -0.008026 0.001765 -0.008009 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-09 0.000000 -0.003436 0.060122 0.023101 -0.004545 0.003831 0.024001 0.004854 0.005286 -0.005767 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-10 0.011407 0.010343 0.100188 0.040323 0.020546 0.026718 0.040365 0.057971 0.014023 0.005801 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-11 -0.007519 -0.020477 0.003436 -0.020154 -0.022371 -0.014870 0.027533 0.015221 -0.007779 -0.014994 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-12 0.022727 -0.003484 0.027398 -0.006330 0.002290 -0.011321 -0.023142 -0.026987 0.006969 -0.001172 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-13 -0.018519 0.003496 -0.010001 -0.015923 0.004565 0.000000 0.003741 -0.012327 0.002595 0.001173 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-16 -0.026415 -0.013938 -0.062288 -0.029126 -0.031818 0.011450 -0.028572 0.004680 -0.026747 -0.012881 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-17 -0.007752 -0.007066 -0.017953 -0.016666 -0.016431 -0.015094 0.000000 -0.045031 -0.010638 -0.018980 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-18 0.000000 0.007116 0.018281 0.005084 -0.002389 -0.022989 -0.025575 0.000000 0.012545 -0.001209 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-19 -0.011719 -0.014135 -0.035908 -0.015177 -0.002392 0.003922 -0.002625 -0.003252 -0.013274 -0.014529 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-20 -0.011858 -0.025088 0.000000 -0.011987 -0.016785 -0.015625 -0.017105 -0.013051 0.016143 -0.035626 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-23 -0.020000 0.000000 0.027934 -0.020797 -0.026831 0.003968 -0.032129 -0.039669 0.000000 -0.007643 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-24 0.016327 0.011031 -0.012682 0.005309 0.010025 0.000000 0.009682 0.001721 0.007944 0.005135 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-25 0.000000 0.021817 0.012845 0.008804 0.002481 0.007905 0.015069 -0.001718 0.015762 0.010216 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-26 -0.020080 -0.032029 0.023550 -0.027924 -0.032176 -0.019608 -0.024292 -0.008606 -0.033621 -0.013906 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-27 0.008197 0.014707 0.010620 0.010773 0.025575 -0.004000 0.011065 0.017361 0.030330 0.029487 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-30 0.008130 0.000000 -0.008756 0.000000 0.014962 0.000000 0.000000 0.008532 0.002597 -0.021170 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-31 0.008065 0.007245 -0.001768 0.014210 0.000000 0.000000 -0.001368 0.005076 0.006045 0.021628 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2014-01-02 -0.004000 -0.003596 -0.014158 0.024517 0.000000 0.004016 0.013699 0.011785 0.013734 -0.004980 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2014-01-03 -0.012048 -0.018051 -0.043089 -0.023931 0.000000 -0.012000 -0.021622 0.011647 -0.000847 -0.018774 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2014-01-06 -0.032520 -0.036765 -0.054409 -0.017513 0.000000 -0.044534 -0.034530 -0.008224 0.042373 -0.045919 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2014-01-07 0.029412 0.000000 0.003968 -0.001782 0.000000 -0.008475 -0.017168 0.003317 -0.005691 -0.006685 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2014-01-08 -0.016327 0.011452 -0.015811 0.028570 0.000000 -0.012821 0.001456 -0.038017 0.000000 -0.001346 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2014-01-09 -0.012448 -0.007549 -0.002008 -0.017361 0.000000 -0.012987 -0.013080 -0.034364 -0.007359 0.005391 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2014-01-10 -0.029412 -0.019011 -0.030180 -0.037102 0.000000 -0.017544 -0.027983 -0.016014 -0.067545 -0.010723 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2014-01-13 -0.004329 -0.011626 0.006223 -0.023854 0.000000 -0.004464 0.022727 -0.009042 -0.000883 -0.018971 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2017-03-16 0.969235 1.089566 0.768167 0.944826 0.984745 1.034367 0.942794 NaN 0.429968 0.940344 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-17 0.954168 1.083913 0.742081 0.950715 0.986827 1.008350 0.907530 NaN 0.426210 0.872939 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-20 0.954561 1.093718 0.754492 0.968784 0.975208 1.009153 0.918630 NaN 0.416637 0.886029 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-21 0.984413 1.090120 0.696092 0.937365 0.981867 1.003213 0.946624 NaN 0.456273 0.914032 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-22 0.994456 1.099281 0.689936 0.959002 1.014500 1.000195 0.939280 NaN 0.450434 0.912257 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-23 0.986501 1.121211 0.678482 0.963382 1.000172 0.986861 0.925554 NaN 0.439523 0.938352 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-24 0.991547 1.122286 0.678561 0.965796 0.956239 0.982087 0.923800 NaN 0.416877 0.921135 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-27 0.983714 1.107365 0.680926 0.956450 0.959551 0.985303 0.897649 NaN 0.420590 0.930946 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-28 0.987538 1.113729 0.681100 0.960323 0.951589 0.980003 0.884705 NaN 0.417586 0.929660 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-29 0.987575 1.115883 0.674193 0.948843 0.953357 0.975995 0.875493 NaN 0.347814 0.882209 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-30 1.018214 1.127891 0.632184 0.957099 1.005106 0.996343 0.822809 NaN 0.469898 0.858895 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-31 1.018666 1.144935 0.633569 0.973030 0.978250 1.015494 0.832535 NaN 0.458348 0.876380 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-05 1.038729 1.176902 0.601254 1.016399 1.045148 1.048601 0.804809 NaN 0.538764 0.835748 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-06 1.037876 1.174112 0.601145 1.020435 1.041382 1.049726 0.803658 NaN 0.541457 0.842696 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-07 1.046245 1.164556 0.594050 0.988271 1.040028 1.052862 0.810192 NaN 0.528419 0.842347 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-10 1.055705 1.170177 0.563792 0.960440 1.048209 1.059524 0.752557 NaN 0.488617 0.984084 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-11 1.079924 1.167793 0.550380 0.965680 1.052694 1.051596 0.748227 NaN 0.453856 0.982938 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-12 1.068508 1.178080 0.539570 0.969150 1.068414 1.040404 0.758171 NaN 0.470622 1.022434 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-13 1.070933 1.172042 0.536893 0.970049 1.052536 1.044180 0.753449 NaN 0.456643 1.033574 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-14 1.111642 1.182665 0.526686 1.002572 1.065306 1.045322 0.740719 NaN 0.444297 1.045833 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-17 1.116823 1.187667 0.525002 1.017546 1.081209 1.053469 0.738738 NaN 0.445298 1.044968 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-18 1.119015 1.193238 0.513135 1.017229 1.127901 1.058391 0.736953 NaN 0.444492 1.034234 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-19 1.148005 1.200361 0.499465 1.071846 1.100470 1.079462 0.721051 NaN 0.421895 1.072114 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-20 1.153950 1.196253 0.512161 1.063409 1.112280 1.092082 0.709101 NaN 0.430825 1.104302 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-21 1.157024 1.205477 0.498529 1.041551 1.080709 1.087699 0.712839 NaN 0.405413 1.125976 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-24 1.195916 1.267379 0.487375 1.010828 1.138358 1.155789 0.696899 NaN 0.392431 1.121655 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-25 1.198706 1.279923 0.500202 0.988868 1.157569 1.179036 0.718163 NaN 0.417885 1.139296 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-26 1.218537 1.268831 0.509547 1.015689 1.171865 1.212818 0.731424 NaN 0.484147 1.131587 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-27 1.206963 1.275696 0.511833 1.049663 1.176921 1.196882 0.725155 NaN 0.497747 1.162144 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-28 1.266313 1.294036 0.551397 1.123299 1.173727 1.226679 0.773398 NaN 0.587997 1.201728 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

832 rows × 3330 columns


In [45]:
betadf.fillna(method= 'ffill')


Out[45]:
000005.SZ 600601.SH 600602.SH 600651.SH 600652.SH 600653.SH 600654.SH 600656.SH 000004.SZ 000002.SZ ... 300652.SZ 300653.SZ 603488.SH 603269.SH 603758.SH 002872.SZ 002873.SZ 300656.SZ 603197.SH 603383.SH
Own_Factor_Beta_1D
2013-12-02 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-03 0.011765 0.021276 0.041667 0.012132 0.020979 0.000000 0.016152 0.031879 -0.007105 0.010514 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-04 0.015504 0.020833 0.018947 0.030822 0.015981 0.023810 0.014569 0.004878 0.011628 0.010404 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-05 0.000000 0.000000 0.035124 -0.001661 -0.004493 0.019380 -0.019582 0.008091 0.001768 0.000000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-06 0.003817 -0.010202 -0.003994 0.008320 -0.006773 -0.007605 -0.001332 -0.008026 0.001765 -0.008009 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-09 0.000000 -0.003436 0.060122 0.023101 -0.004545 0.003831 0.024001 0.004854 0.005286 -0.005767 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-10 0.011407 0.010343 0.100188 0.040323 0.020546 0.026718 0.040365 0.057971 0.014023 0.005801 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-11 -0.007519 -0.020477 0.003436 -0.020154 -0.022371 -0.014870 0.027533 0.015221 -0.007779 -0.014994 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-12 0.022727 -0.003484 0.027398 -0.006330 0.002290 -0.011321 -0.023142 -0.026987 0.006969 -0.001172 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-13 -0.018519 0.003496 -0.010001 -0.015923 0.004565 0.000000 0.003741 -0.012327 0.002595 0.001173 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-16 -0.026415 -0.013938 -0.062288 -0.029126 -0.031818 0.011450 -0.028572 0.004680 -0.026747 -0.012881 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-17 -0.007752 -0.007066 -0.017953 -0.016666 -0.016431 -0.015094 0.000000 -0.045031 -0.010638 -0.018980 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-18 0.000000 0.007116 0.018281 0.005084 -0.002389 -0.022989 -0.025575 0.000000 0.012545 -0.001209 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-19 -0.011719 -0.014135 -0.035908 -0.015177 -0.002392 0.003922 -0.002625 -0.003252 -0.013274 -0.014529 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-20 -0.011858 -0.025088 0.000000 -0.011987 -0.016785 -0.015625 -0.017105 -0.013051 0.016143 -0.035626 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-23 -0.020000 0.000000 0.027934 -0.020797 -0.026831 0.003968 -0.032129 -0.039669 0.000000 -0.007643 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-24 0.016327 0.011031 -0.012682 0.005309 0.010025 0.000000 0.009682 0.001721 0.007944 0.005135 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-25 0.000000 0.021817 0.012845 0.008804 0.002481 0.007905 0.015069 -0.001718 0.015762 0.010216 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-26 -0.020080 -0.032029 0.023550 -0.027924 -0.032176 -0.019608 -0.024292 -0.008606 -0.033621 -0.013906 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-27 0.008197 0.014707 0.010620 0.010773 0.025575 -0.004000 0.011065 0.017361 0.030330 0.029487 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-30 0.008130 0.000000 -0.008756 0.000000 0.014962 0.000000 0.000000 0.008532 0.002597 -0.021170 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2013-12-31 0.008065 0.007245 -0.001768 0.014210 0.000000 0.000000 -0.001368 0.005076 0.006045 0.021628 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2014-01-02 -0.004000 -0.003596 -0.014158 0.024517 0.000000 0.004016 0.013699 0.011785 0.013734 -0.004980 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2014-01-03 -0.012048 -0.018051 -0.043089 -0.023931 0.000000 -0.012000 -0.021622 0.011647 -0.000847 -0.018774 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2014-01-06 -0.032520 -0.036765 -0.054409 -0.017513 0.000000 -0.044534 -0.034530 -0.008224 0.042373 -0.045919 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2014-01-07 0.029412 0.000000 0.003968 -0.001782 0.000000 -0.008475 -0.017168 0.003317 -0.005691 -0.006685 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2014-01-08 -0.016327 0.011452 -0.015811 0.028570 0.000000 -0.012821 0.001456 -0.038017 0.000000 -0.001346 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2014-01-09 -0.012448 -0.007549 -0.002008 -0.017361 0.000000 -0.012987 -0.013080 -0.034364 -0.007359 0.005391 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2014-01-10 -0.029412 -0.019011 -0.030180 -0.037102 0.000000 -0.017544 -0.027983 -0.016014 -0.067545 -0.010723 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2014-01-13 -0.004329 -0.011626 0.006223 -0.023854 0.000000 -0.004464 0.022727 -0.009042 -0.000883 -0.018971 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2017-03-16 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-17 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-20 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-21 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-22 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-23 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-24 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-27 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-28 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-29 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-30 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-03-31 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-05 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-06 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-07 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-10 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-11 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-12 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-13 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-14 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-17 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-18 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-19 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-20 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-21 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-24 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-25 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-26 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-27 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-04-28 0.012295 0.017422 0.014261 0.024711 0.000000 0.003953 0.000000 0.014556 0.000000 -0.005399 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

832 rows × 3330 columns


In [63]:
betadf.index.name = 'Own_Factor_Beta_1D'
betadf.to_csv(path+betadf .index.name+'.csv',na_rep='NaN',date_format='%Y%m%d')

In [38]:
def cal_beta_new(returnSeries,benchmark,riskFreeRate = 0 ):
    return ((returnSeries - riskFreeRate).cov(benchmark)) / (benchmark.std() ** 2)

In [9]:
def cal_beta_df(returndf,benchmark,riskFreeRate = 0 ):
    return returndf.apply(lambda x: ((x - riskFreeRate).cov(benchmark)) / (benchmark.var()))

In [10]:
def process_fun(*args):
    return cal_beta_df(*args)

In [11]:
fargs = []
for i in range(49,100):
    stkSlice = stkreturn  .iloc[i-49:i+1]
    benchmarkSlice = benchmarkReturn.iloc[i-49:i+1]
    fargs.append((stkSlice,benchmarkSlice))

from multiprocessing import Pool, cpu_count start = time.time() pool = Pool(cpu_count()-1) results = map(lambda x: pool.apply_async(process_fun, x), fargs) # apply_async 不报错! pool.close() pool.join()

values = map(lambda x: x.get() if x.successful() else [np.nan]*len(stkreturn.columns), results) df = pd.DataFrame(index = stkreturn.iloc[49:100], columns = stkreturn.columns, data = np.array(values)) print '%s time elapsed' %(time.time() - start)


In [11]:
import numpy
# warning is not logged here. Perfect for clean unit test output
with numpy.errstate(divide='ignore'):
    numpy.float64(1.0) / 0.0

In [ ]:
#stkreturn.rolling(min_periods=50,window=50,center=False).apply(cal_beta)