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)
Content source: kamiseko/factor-test
Similar notebooks: