Python CAPM模型

import os
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
import seaborn as sns

sns.set(style="darkgrid")

os.chdir(r'C:\Users\lzxan\PycharmProjects\untitled1\day1\all_trading_data\index data')
files=os.listdir('.')

#读入股指数据

indexlist=[]
indexchange=pd.DataFrame()
indexmoney=pd.DataFrame()
indexclose=pd.DataFrame()

for filename in files:
    if indexchange.empty:
        dummy=pd.read_csv(filename, parse_dates=True, usecols=[1,3,7,8],index_col=0)
        indexlist.append(filename[0:8])
        dummy=dummy.sort_values(by='date')
        indexclose=pd.DataFrame(dummy['close'])
        indexchange=pd.DataFrame(dummy['change'])
        indexmoney=pd.DataFrame(dummy['money'])
        
    else:
        dummy=pd.read_csv(filename, parse_dates=True, usecols=[1,3,7,8],index_col=0)
        dummy=dummy.sort_values(by='date')
        indexlist.append(filename[0:8])
        indexchange=pd.merge(indexchange,pd.DataFrame(dummy['change']),left_index=True, right_index=True)
        indexmoney=pd.merge(indexmoney,pd.DataFrame(dummy['money']),left_index=True, right_index=True)
        indexclose=pd.merge(indexclose,pd.DataFrame(dummy['close']),left_index=True, right_index=True)

indexchange.columns=indexlist
indexmoney.columns=indexlist
indexclose.columns=indexlist

#股票数据
os.chdir(r'C:\Users\lzxan\PycharmProjects\untitled1\day1\all_trading_data\stock data')
files=os.listdir('.')
#获得股票代码列表

stocklist=[]
stockchange=pd.DataFrame()
stockmoney=pd.DataFrame()
stockclose=pd.DataFrame()
for filename in files:
    dummy=pd.read_csv(filename,parse_dates=True,index_col=0,usecols=[1,5,6,8])
    dummy=dummy.sort_values(by='date')
    if dummy.empty==False:
        if stockchange.empty:
            stocklist.append(filename[0:8])
            stockclose=pd.DataFrame(dummy['close'])
            stockchange=pd.DataFrame(dummy['change'])
            stockmoney=pd.DataFrame(dummy['money'])
        
        else:
            stocklist.append(filename[0:8])
            stockchange=pd.merge(stockchange,pd.DataFrame(dummy['change']),left_index=True, right_index=True,how='outer')
            stockmoney=pd.merge(stockmoney,pd.DataFrame(dummy['money']),left_index=True, right_index=True,how='outer')
            stockclose=pd.merge(stockclose,pd.DataFrame(dummy['close']),left_index=True, right_index=True,how='outer')

stockchange.columns=stocklist
stockmoney.columns=stocklist
stockclose.columns=stocklist

######保存读入数据
stockchange.to_csv('stockchange.csv')
stockclose.to_csv('stockclose.csv')
stockmoney.to_csv('stockmoney.csv')



def returns(x,y):
    indexnotnan=y[np.isnan(y)==False].index
    x1=x[indexnotnan]
    y1=y[indexnotnan]
    beta, alpha, r_value, p_value, sigma = stats.linregress(x1,y1)
    return alpha,beta,sigma

#CAPM模型

x=indexchange.iloc[:,0] y=stockchange.iloc[:,10] indexnotnan=y[np.isnan(y)==False].index x1=x[indexnotnan] y1=y[indexnotnan] beta, alpha, r_value, p_value, sigma = stats.linregress(x1,y1) fig,ax=plt.subplots(1,1) ax.plot(x1,alpha+x1*beta) ax.scatter(x1,y1) fig stockreturndf=pd.DataFrame(columns=['code','alpha','beta','sigma']) x=indexchange.loc[:,'sh000300'] for stockcode in stocklist: y=stockchange.loc[:,stockcode] alpha,beta,sigma=returns(x,y) row=dict(code=stockcode,alpha=alpha,beta=beta,sigma=sigma) stockreturndf=stockreturndf.append(pd.DataFrame([row],)) ######stockreturndf stockreturns=stockreturndf[['alpha','beta','sigma']] stockreturns.index=stockreturndf['code'] #######abnormalies abnormlist=list(stockreturns[stockreturns.sigma>0.1].index)

 

转载于:https://www.cnblogs.com/lzxanthony/p/9407841.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值