(1)筛选
使用作业1的程序
- 完成对沪深300指数成分股过去2015年1月-2018年1月三年的数据分析
- 按alpha从大到小,选择出30只alpha最高的股票形成股票池1,以备进一步分析
(2)预测
- 对沪深300指数成分股2018年1月-2021年1月三年的数据分析
- 选择出30只alpha最高的股票形成股票池2
- 观察股票池1和股票池2的重合度
- 分别计算股票池1在2015-2018时间段和2018-2021时间段的Alpha均值,观察Alpha均值的变化
- 对观察结果进行思考与分析
将沪深300的成分股的基础信息整合到txt文件中
将获取的股票基础信息整理成csv文件便于在Python中读取
使用tushare库爬取股票交易数据,建立CAMP模型,进行分析,废话不多话,直接上代码!
"""
python3.7
-*- coding: UTF-8 -*-
@Project -> File :Code -> CAMP
@IDE :PyCharm
@Author :YangShouWei
@USER: 296714435
@Date :2021/4/6 15:41:37
@LastEditor:
"""
import pandas as pd
import tushare as ts
import matplotlib.pyplot as plt
import statsmodels.api as sm
import re
import numpy as np
def modelCAMP(code,name, starttime, endtime):
# 资本资产进价模型(CAPM)
# Ri -Rf = β*(Rm-Rf) + ε
# 载入股指数据
sh = ts.get_k_data('sh', start=starttime,end=endtime, autype='qfq') # 获取上证数据
sh["p_change"] = (sh["close"] / sh["close"].shift(1) - 1) * 100 # 利用今日收盘价和前日收盘价计算股价波动,新增一列
try:
gzmt = ts.get_k_data(code, start=starttime,end=endtime, autype='qfq') # 获取股票数据
# 一些企业在2018年之前还未上市,作为特殊情况处理,返回0
if len(gzmt.date) == 0:
return [0]
gzmt["p_change"] = (gzmt["close"] / gzmt["close"].shift(1) - 1) * 100
except:
return [0]
# print(code)
ret_merge = pd.merge(pd.DataFrame(sh.p_change), pd.DataFrame(gzmt.p_change), left_index = True, right_index = True