Commit 9b102854 authored by Dr.李's avatar Dr.李

update one more database

parent d7f8463a
...@@ -39,7 +39,6 @@ ...@@ -39,7 +39,6 @@
"benchmark = 'zz500'\n", "benchmark = 'zz500'\n",
"\n", "\n",
"prod_factors = ['VAL', 'BDTO', 'RVOL', 'CFinc1', 'CHV']\n", "prod_factors = ['VAL', 'BDTO', 'RVOL', 'CFinc1', 'CHV']\n",
"product_weights = np.array([3., 1., 1., 0.5, 0.5])\n",
"\n", "\n",
"factor_list = ','.join([factor_table + '.' + f for f in prod_factors])\n", "factor_list = ','.join([factor_table + '.' + f for f in prod_factors])\n",
"\n", "\n",
...@@ -58,11 +57,10 @@ ...@@ -58,11 +57,10 @@
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"sql_template = 'select {factor_list}, factor_data.申万一级行业, {trade_table}.Return as dailyReturn, {risk_table}.*, 1 as Market ' \\\n", "sql_template1 = 'select {factor_list},{trade_table}.Return as dailyReturn, {risk_table}.* ' \\\n",
" 'from {factor_table}, factor_data, trade_data, {risk_table} ' \\\n", " 'from {factor_table}, trade_data, {risk_table} ' \\\n",
" 'where factor_data.Date = {factor_table}.Date and factor_data.Code = {factor_table}.Code ' \\\n", " 'where {factor_table}.Date = trade_data.Date and {factor_table}.Code = trade_data.Code ' \\\n",
" 'and factor_data.Date = trade_data.Date and factor_data.Code = trade_data.Code ' \\\n", " 'and {factor_table}.Date = {risk_table}.Date and {factor_table}.Code = {risk_table}.Code;'"
" 'and factor_data.Date = {risk_table}.Date and factor_data.Code = {risk_table}.Code;'"
] ]
}, },
{ {
...@@ -72,12 +70,26 @@ ...@@ -72,12 +70,26 @@
"outputs": [], "outputs": [],
"source": [ "source": [
"%%time\n", "%%time\n",
"sql = sql_template.format(factor_list=factor_list,\n", "sql1 = sql_template1.format(factor_list=factor_list,\n",
" factor_table=factor_table,\n", " factor_table=factor_table,\n",
" risk_table=risk_table,\n", " risk_table=risk_table,\n",
" trade_table=trade_table)\n", " trade_table=trade_table)\n",
"\n", "\n",
"factor_df = pd.read_sql(sql, engine)" "sql2 = 'select * from factor_data'\n",
"\n",
"# factor_df1 = pd.read_sql(sql1, engine)\n",
"# common_factor_df = pd.read_sql(sql2, engine)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"factor_df = pd.read_hdf('factor_data.hdf', 'all')"
] ]
}, },
{ {
...@@ -123,7 +135,8 @@ ...@@ -123,7 +135,8 @@
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"risk_factor_cols = raw_df.columns[9:-1]\n", "risk_factor_cols = raw_df.columns[8:35]\n",
"ob_risk_factor_cols = risk_factor_cols.copy()\n",
"risk_factor_cols" "risk_factor_cols"
] ]
}, },
...@@ -135,7 +148,7 @@ ...@@ -135,7 +148,7 @@
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"df = raw_df.copy()" "common_factor = raw_df.columns[38:-1]"
] ]
}, },
{ {
...@@ -146,7 +159,7 @@ ...@@ -146,7 +159,7 @@
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"df['d1ret'] = df.dailyReturn.groupby(df.Code).shift(-2)" "df = raw_df.copy()"
] ]
}, },
{ {
...@@ -156,6 +169,15 @@ ...@@ -156,6 +169,15 @@
"collapsed": true "collapsed": true
}, },
"outputs": [], "outputs": [],
"source": [
"df['d1ret'] = df.dailyReturn.groupby(df.Code).shift(-2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [ "source": [
"benchmark_data = pd.read_sql('select {0}, Date from index_data'.format(benchmark), engine)" "benchmark_data = pd.read_sql('select {0}, Date from index_data'.format(benchmark), engine)"
] ]
...@@ -193,6 +215,106 @@ ...@@ -193,6 +215,106 @@
"df.shape" "df.shape"
] ]
}, },
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Calculate Market Risk\n",
"--------------------------"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"engine = sqlalchemy.create_engine('mysql+pymysql://sa:we083826@10.63.6.176/multifactor?charset=utf8')\n",
"\n",
"window = 250\n",
"return_data = pd.read_sql('select Date, Code, Price, `Return` from trade_data', engine)\n",
"return_pivot = return_data.pivot_table('Price', 'Date', 'Code')\n",
"return_pivot.fillna(method='pad', inplace=True)\n",
"return_pivot = return_pivot / return_pivot.shift(1) - 1.\n",
"index_data = benchmark_data.set_index('Date')\n",
"\n",
"full_df = pd.merge(return_pivot, index_data, left_index=True, right_index=True)\n",
"del full_df['zz500']"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"corr_table = full_df.rolling(window=window).corr(full_df['ret'])\n",
"std_table = full_df.rolling(window=window).std()\n",
"\n",
"beta_table = std_table.copy()\n",
"for col in full_df.columns:\n",
" beta_table[col] = corr_table[col] * std_table[col] / std_table['ret']\n",
"beta_table = beta_table.stack().reset_index()\n",
"\n",
"beta_table.columns = ['Date', 'Code', 'market']"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"beta_table.to_hdf('factor_data.hdf', 'beta')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"df = pd.merge(df, beta_table, on=['Date', 'Code'], how='inner')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"df.shape"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"analysis_factors = prod_factors + ['Size']\n",
"analysis_factors_weights = np.array([3., 1., 1., 0.5, 0.5, 3.])\n",
"\n",
"ob_risk_factor_cols = ob_risk_factor_cols.append(pd.Index(['market']))\n",
"risk_factor_cols = ob_risk_factor_cols.difference(analysis_factors)\n",
"risk_factor_cols = risk_factor_cols.unique()\n",
"ob_risk_factor_cols = ob_risk_factor_cols.unique()\n",
"risk_factor_cols"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"ob_risk_factor_cols"
]
},
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
...@@ -252,16 +374,10 @@ ...@@ -252,16 +374,10 @@
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"total_data.loc[:, risk_factor_cols] = total_data[risk_factor_cols].groupby(total_data.Date).transform(lambda x: x / x.sum())" "y = total_data[common_factor].values\n",
] "groups = total_data.Date.values.astype(np.int)\n",
}, "\n",
{ "total_data[common_factor] = st.standardize(ws.winsorize_normal"
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"risk_factor_cols"
] ]
}, },
{ {
...@@ -272,8 +388,7 @@ ...@@ -272,8 +388,7 @@
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"y = total_data[prod_factors].values\n", "y = total_data[analysis_factors].values"
"groups = total_data.Date.values.astype(np.int)"
] ]
}, },
{ {
...@@ -288,7 +403,7 @@ ...@@ -288,7 +403,7 @@
" groups=groups),\n", " groups=groups),\n",
" groups)\n", " groups)\n",
"\n", "\n",
"total_data['res'] = neutralized_values @ product_weights" "total_data['res'] = neutralized_values @ analysis_factors_weights"
] ]
}, },
{ {
...@@ -297,7 +412,7 @@ ...@@ -297,7 +412,7 @@
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"total_data[['res', 'Date', 'Code']].tail()" "total_data.tail()"
] ]
}, },
{ {
...@@ -330,27 +445,29 @@ ...@@ -330,27 +445,29 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": { "metadata": {},
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"to_look_into = total_data[risk_factor_cols].multiply(total_data.pos_long_short, axis=0)" "to_look_into = total_data[ob_risk_factor_cols].multiply(total_data.pos_long_short, axis=0)"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"to_look_into.groupby(total_data.Date).sum().max()" "to_look_into.groupby(total_data.Date).sum()['Size'].plot(figsize=(14,7))"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"to_look_into.groupby(total_data.Date).sum().min()" "to_look_into.groupby(total_data.Date).sum().min()"
...@@ -370,7 +487,9 @@ ...@@ -370,7 +487,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"ret_series.cumsum().plot(figsize=(14,7))" "ret_series.cumsum().plot(figsize=(14,7))"
...@@ -379,7 +498,9 @@ ...@@ -379,7 +498,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"ret_series[-60:].cumsum().plot(figsize=(14,7))" "ret_series[-60:].cumsum().plot(figsize=(14,7))"
...@@ -388,7 +509,9 @@ ...@@ -388,7 +509,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"total_data.pos_long_short.groupby(total_data.Date).apply(lambda x: x.sum()).head()" "total_data.pos_long_short.groupby(total_data.Date).apply(lambda x: x.sum()).head()"
...@@ -416,7 +539,9 @@ ...@@ -416,7 +539,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"%%time\n", "%%time\n",
...@@ -427,7 +552,9 @@ ...@@ -427,7 +552,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"total_data[['pos_100', 'res', 'dailyReturn', 'd1ret', 'd1ret_b', 'Code', 'Date']].tail()" "total_data[['pos_100', 'res', 'dailyReturn', 'd1ret', 'd1ret_b', 'Code', 'Date']].tail()"
...@@ -441,22 +568,26 @@ ...@@ -441,22 +568,26 @@
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"to_look_into = total_data[risk_factor_cols].multiply(total_data.pos_100 - total_data[index_components], axis=0)" "to_look_into = total_data[ob_risk_factor_cols].multiply(total_data.pos_100 - total_data[index_components], axis=0)"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"to_look_into.groupby(total_data.Date).sum().max()" "to_look_into.groupby(total_data.Date).sum()['Size'].plot(figsize=(14,7))"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"to_look_into.groupby(total_data.Date).sum().min()" "to_look_into.groupby(total_data.Date).sum().min()"
...@@ -476,7 +607,9 @@ ...@@ -476,7 +607,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"ret_series.cumsum().plot(figsize=(14,7))" "ret_series.cumsum().plot(figsize=(14,7))"
...@@ -485,7 +618,9 @@ ...@@ -485,7 +618,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"ret_series[-60:].cumsum().plot(figsize=(14,7))" "ret_series[-60:].cumsum().plot(figsize=(14,7))"
...@@ -494,7 +629,9 @@ ...@@ -494,7 +629,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"total_data.pos_100.groupby(total_data.Date).sum().head()" "total_data.pos_100.groupby(total_data.Date).sum().head()"
...@@ -533,7 +670,9 @@ ...@@ -533,7 +670,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"%%time\n", "%%time\n",
...@@ -552,7 +691,9 @@ ...@@ -552,7 +691,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"(total_data['pos_100_uind'] > 0).groupby(total_data.Date).sum().plot(figsize=(14, 7))" "(total_data['pos_100_uind'] > 0).groupby(total_data.Date).sum().plot(figsize=(14, 7))"
...@@ -566,22 +707,26 @@ ...@@ -566,22 +707,26 @@
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"to_look_into = total_data[risk_factor_cols].multiply(total_data.pos_100_uind - total_data[index_components], axis=0)" "to_look_into = total_data[ob_risk_factor_cols].multiply(total_data.pos_100_uind - total_data[index_components], axis=0)"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"to_look_into.groupby(total_data.Date).sum().max()" "to_look_into.groupby(total_data.Date).sum()['Size'].plot(figsize=(14,7))"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"to_look_into.groupby(total_data.Date).sum().min()" "to_look_into.groupby(total_data.Date).sum().min()"
...@@ -590,7 +735,9 @@ ...@@ -590,7 +735,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"total_data[['pos_100_uind', 'res', 'dailyReturn', 'd1ret', 'd1ret_b', 'Code', 'Date']].tail()" "total_data[['pos_100_uind', 'res', 'dailyReturn', 'd1ret', 'd1ret_b', 'Code', 'Date']].tail()"
...@@ -610,7 +757,9 @@ ...@@ -610,7 +757,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"ret_series.cumsum().plot(figsize=(14,7))" "ret_series.cumsum().plot(figsize=(14,7))"
...@@ -619,7 +768,9 @@ ...@@ -619,7 +768,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"ret_series[-60:].cumsum().plot(figsize=(14,7))" "ret_series[-60:].cumsum().plot(figsize=(14,7))"
...@@ -628,7 +779,9 @@ ...@@ -628,7 +779,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"total_data.pos_100_uind.groupby(total_data.Date).sum().head()" "total_data.pos_100_uind.groupby(total_data.Date).sum().head()"
...@@ -667,15 +820,15 @@ ...@@ -667,15 +820,15 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"%%time\n", "%%time\n",
"\n", "\n",
"lbound_exposure = -0.00001 * np.ones(len(risk_factor_cols))\n", "lbound_exposure = -1e-3 * np.ones(len(risk_factor_cols))\n",
"ubound_exposure = 0.00001 * np.ones(len(risk_factor_cols))\n", "ubound_exposure = 1e-3 * np.ones(len(risk_factor_cols))\n",
"lbound_exposure[-2] = -0.01\n",
"ubound_exposure[-2] = 0.01\n",
"\n", "\n",
"def get_benchmark_match_pos(x):\n", "def get_benchmark_match_pos(x):\n",
" er = x.res.values\n", " er = x.res.values\n",
...@@ -705,7 +858,9 @@ ...@@ -705,7 +858,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"(total_data['pos_bmat'] > 1e-4).groupby(total_data.Date).sum().plot(ylim=(50, 250), figsize=(14, 7))" "(total_data['pos_bmat'] > 1e-4).groupby(total_data.Date).sum().plot(ylim=(50, 250), figsize=(14, 7))"
...@@ -719,22 +874,26 @@ ...@@ -719,22 +874,26 @@
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"to_look_into = total_data[risk_factor_cols].multiply(total_data.pos_bmat - total_data[index_components], axis=0)" "to_look_into = total_data[ob_risk_factor_cols].multiply(total_data.pos_bmat - total_data[index_components], axis=0)"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"to_look_into.groupby(total_data.Date).sum().max()" "to_look_into.groupby(total_data.Date).sum()['Size'].plot(figsize=(14,7))"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"to_look_into.groupby(total_data.Date).sum().min()" "to_look_into.groupby(total_data.Date).sum().min()"
...@@ -743,7 +902,9 @@ ...@@ -743,7 +902,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"total_data[['pos_bmat', 'res', 'dailyReturn', 'd1ret', 'd1ret_b', 'Code', 'Date']].tail()" "total_data[['pos_bmat', 'res', 'dailyReturn', 'd1ret', 'd1ret_b', 'Code', 'Date']].tail()"
...@@ -763,7 +924,9 @@ ...@@ -763,7 +924,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"ret_series.cumsum().plot(figsize=(14,7))" "ret_series.cumsum().plot(figsize=(14,7))"
...@@ -772,7 +935,9 @@ ...@@ -772,7 +935,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"ret_series[-60:].cumsum().plot(figsize=(14,7))" "ret_series[-60:].cumsum().plot(figsize=(14,7))"
...@@ -824,7 +989,9 @@ ...@@ -824,7 +989,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"sharp_mat.plot(figsize=(14, 7))" "sharp_mat.plot(figsize=(14, 7))"
...@@ -868,16 +1035,20 @@ ...@@ -868,16 +1035,20 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"aggregated_pos_table.loc[aggregated_pos_table['申万一级行业'] == '申万家用电器',['pos_long_short', 'pos_100', 'pos_100_uind', 'pos_bmat']].plot(figsize=(16,7))" "aggregated_pos_table.loc[aggregated_pos_table['申万一级行业'] == '申万化工',['pos_long_short', 'pos_100', 'pos_100_uind', 'pos_bmat']].plot(figsize=(16,7))"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"aggregated_pos_table[['pos_long_short', 'pos_100', 'pos_100_uind', 'pos_bmat']].corr()" "aggregated_pos_table[['pos_long_short', 'pos_100', 'pos_100_uind', 'pos_bmat']].corr()"
...@@ -886,7 +1057,9 @@ ...@@ -886,7 +1057,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"turn_over_table = {}\n", "turn_over_table = {}\n",
...@@ -904,7 +1077,9 @@ ...@@ -904,7 +1077,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"turn_over_table.plot(figsize=(14, 7))" "turn_over_table.plot(figsize=(14, 7))"
...@@ -913,7 +1088,9 @@ ...@@ -913,7 +1088,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"(turn_over_table * 0.0015).plot(figsize=(14, 7))" "(turn_over_table * 0.0015).plot(figsize=(14, 7))"
...@@ -922,7 +1099,9 @@ ...@@ -922,7 +1099,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"(turn_over_table[-60:].cumsum() * 0.0015).plot(figsize=(14, 7))" "(turn_over_table[-60:].cumsum() * 0.0015).plot(figsize=(14, 7))"
...@@ -957,7 +1136,7 @@ ...@@ -957,7 +1136,7 @@
"source": [ "source": [
"net_weight = total_data.pos_long_short\n", "net_weight = total_data.pos_long_short\n",
"next_bar_return_series = total_data.d1ret\n", "next_bar_return_series = total_data.d1ret\n",
"risk_table = total_data[risk_factor_cols]\n", "risk_table = total_data[ob_risk_factor_cols]\n",
"net_weight.index = total_data.Date\n", "net_weight.index = total_data.Date\n",
"next_bar_return_series.index = total_data.Date\n", "next_bar_return_series.index = total_data.Date\n",
"risk_table.index = total_data.Date" "risk_table.index = total_data.Date"
...@@ -966,7 +1145,9 @@ ...@@ -966,7 +1145,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"%%time\n", "%%time\n",
...@@ -987,7 +1168,9 @@ ...@@ -987,7 +1168,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"top_sources = aggregated_bars.sum().abs().sort_values(ascending=False).index[:10]\n", "top_sources = aggregated_bars.sum().abs().sort_values(ascending=False).index[:10]\n",
...@@ -997,7 +1180,9 @@ ...@@ -997,7 +1180,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"aggregated_bars[top_sources.difference(['idiosyncratic'])].cumsum().plot(figsize=(14, 7))" "aggregated_bars[top_sources.difference(['idiosyncratic'])].cumsum().plot(figsize=(14, 7))"
...@@ -1006,7 +1191,9 @@ ...@@ -1006,7 +1191,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"aggregated_bars[top_sources.difference(['idiosyncratic'])].plot(figsize=(14, 7))\n", "aggregated_bars[top_sources.difference(['idiosyncratic'])].plot(figsize=(14, 7))\n",
...@@ -1036,7 +1223,9 @@ ...@@ -1036,7 +1223,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"%%time\n", "%%time\n",
...@@ -1057,7 +1246,9 @@ ...@@ -1057,7 +1246,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"top_sources = aggregated_bars.sum().abs().sort_values(ascending=False).index[:10]\n", "top_sources = aggregated_bars.sum().abs().sort_values(ascending=False).index[:10]\n",
...@@ -1067,7 +1258,9 @@ ...@@ -1067,7 +1258,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"aggregated_bars[top_sources.difference(['idiosyncratic'])].cumsum().plot(figsize=(14, 7))" "aggregated_bars[top_sources.difference(['idiosyncratic'])].cumsum().plot(figsize=(14, 7))"
...@@ -1076,7 +1269,9 @@ ...@@ -1076,7 +1269,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"aggregated_bars[top_sources.difference(['idiosyncratic'])].plot(figsize=(14, 7))\n", "aggregated_bars[top_sources.difference(['idiosyncratic'])].plot(figsize=(14, 7))\n",
...@@ -1106,7 +1301,9 @@ ...@@ -1106,7 +1301,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"%%time\n", "%%time\n",
...@@ -1127,7 +1324,9 @@ ...@@ -1127,7 +1324,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"top_sources = aggregated_bars.sum().abs().sort_values(ascending=False).index[:10]\n", "top_sources = aggregated_bars.sum().abs().sort_values(ascending=False).index[:10]\n",
...@@ -1137,7 +1336,9 @@ ...@@ -1137,7 +1336,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"aggregated_bars[top_sources.difference(['idiosyncratic'])].cumsum().plot(figsize=(14, 7))" "aggregated_bars[top_sources.difference(['idiosyncratic'])].cumsum().plot(figsize=(14, 7))"
...@@ -1146,7 +1347,9 @@ ...@@ -1146,7 +1347,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"aggregated_bars[top_sources.difference(['idiosyncratic'])].plot(figsize=(14, 7))\n", "aggregated_bars[top_sources.difference(['idiosyncratic'])].plot(figsize=(14, 7))\n",
...@@ -1176,7 +1379,9 @@ ...@@ -1176,7 +1379,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"%%time\n", "%%time\n",
...@@ -1197,7 +1402,9 @@ ...@@ -1197,7 +1402,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"top_sources = aggregated_bars.sum().abs().sort_values(ascending=False).index[:10]\n", "top_sources = aggregated_bars.sum().abs().sort_values(ascending=False).index[:10]\n",
...@@ -1207,7 +1414,9 @@ ...@@ -1207,7 +1414,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"aggregated_bars[top_sources.difference(['idiosyncratic'])].cumsum().plot(figsize=(14, 7))" "aggregated_bars[top_sources.difference(['idiosyncratic'])].cumsum().plot(figsize=(14, 7))"
...@@ -1216,7 +1425,9 @@ ...@@ -1216,7 +1425,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"collapsed": true
},
"outputs": [], "outputs": [],
"source": [ "source": [
"aggregated_bars[top_sources.difference(['idiosyncratic'])].plot(figsize=(14, 7))\n", "aggregated_bars[top_sources.difference(['idiosyncratic'])].plot(figsize=(14, 7))\n",
...@@ -1241,6 +1452,114 @@ ...@@ -1241,6 +1452,114 @@
"outputs": [], "outputs": [],
"source": [] "source": []
}, },
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment