import pandas as pd
import numpy as np
import math as m
import os
import datetime as dt
root = 'E:/潘老师项目/MONTH_IVOL_SMAX_DATA_FINAL1250_250'
root2 = 'E:/潘老师项目/STK_MKT_FIVEFACMONTH.csv'
root_file = os.listdir(root)
df_5FACTORS = pd.read_csv(root2,converters={'TradingMonth':str})
DOUBLE_RANK_BAC = pd.DataFrame(columns=['LAMX','DATE'],index=range(0,178))
G1 = G2 = pd.DataFrame()
p80 = 0
p30_coef_G1 = 0
p30_coef = p70_coef = p60_coef = p80_coef = 0
for n in range(0,1):
df = pd.read_csv(root + '/'+ root_file[n],converters={'Stkcd':str})
if df.empty == False:
DOUBLE_RANK_BAC.loc[n,'DATE'] = str(root_file[n])
p80 = np.percentile(df['Msmvosd'],80)
G2 = df[df['Msmvosd'] >= p80].sort_values(by=['MAX_t1']).reset_index()
G1 = df[df['Msmvosd'] <= p80].sort_values(by=['MAX_t1']).reset_index()
p30_coef_G2 = np.percentile(G2['MAX_t1'],30)
p70_coef_G2 = np.percentile(G2['MAX_t1'],70)
LOW_MAX_BIG = G2[(G2['MAX_t1'] < p30_coef_G2)].reset_index()
HIGH_MAX_BIG = G2[(G2['MAX_t1'] >= p70_coef_G2).reset_index()
p30_coef_G1 = np.percentile(G1['MAX_t1'],30)
p70_coef_G1 = np.percentile(G1['MAX_t1'],70)
LOW_MAX_SMALL = G1[(G1['MAX_t1'] < p30_coef_G1)].reset_index()
HIGH_MAX_SMALL = G1[(G1['MAX_t1'] >= p70_coef_G1).reset_index()
LMAX = np.array(LOW_MAX_BIG['Mretnd_t1'] + LOW_MAX_SMALL['Mretnd_t1']).mean() - HIGH_MAX_BIG['Mretnd_t1'] + HIGH_MAX_SMALL['Mretnd_t1']).mean()
DOUBLE_RANK_BAC.loc[n,'LMAX'] = LMAX[0]
DOUBLE_RANK_BAC = DOUBLE_RANK_BAC.dropna(0)
print(n)
DATE = list(DOUBLE_RANK_BAC['DATE'])
for n1 in DATE:
k1.append(df_5FACTORS[df_5FACTORS['TradingMonth'] == str(n1)].RiskPremium1.values[0])
k2.append(df_5FACTORS[df_5FACTORS['TradingMonth'] == str(n1)].SMB1.values[0])
k3.append(df_5FACTORS[df_5FACTORS['TradingMonth'] == str(n1)].HML1.values[0])
k4.append(df_5FACTORS[df_5FACTORS['TradingMonth'] == str(n1)].RMW1.values[0])
k5.append(df_5FACTORS[df_5FACTORS['TradingMonth'] == str(n1)].CMA1.values[0])
n_market = pd.DataFrame()
n_market['DATE'] = DATE
n_market['RiskPremium1'] = k1
n_market['SMB1'] = k2
n_market['HML1'] = k3
n_market['RMW1'] = k4
n_market['CMA1'] = k5
n_market = n_market.sort_values(by=['DATE'])
DOUBLE_RANK_BAB = DOUBLE_RANK_BAB.sort_values(by=['DATE'])
DOUBLE_RANK_BAC = DOUBLE_RANK_BAC.drop(['DATE'], axis=1)
DOUBLE_RANK_BAC.to_csv('E:/潘老师项目/LMAX_IVOL_SMAX_FF3_std250__corrcoef1250_MONTH.csv')
n_market.to_csv('E:/潘老师项目/LMAX_SMAX_IVOL_FF5_月_1250CORR_250STD.csv')