量化学习——因子分析(财务因子)

数据源采用akshare,财务因子进行因子分析。

import pandas as pd
import numpy as np
import akshare as ak
import numpy as np
import pandas as pd
import pyfolio as pf
import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use('seaborn-darkgrid')
plt.rcParams['figure.figsize'] = (10,7)
import akshare as ak
import  warnings
warnings.filterwarnings('ignore')
from alphalens.utils import get_clean_factor_and_forward_returns
from alphalens.tears import create_full_tear_sheet

获取财务因子

fin= ak.stock_financial_analysis_indicator(symbol="600004")
fin = fin.replace('--',0)
fin.iloc[:,1:] = fin.iloc[:,1:].astype('float')
fin['日期'] = pd.to_datetime(fin['日期'], format='%Y-%m-%d')

获取收盘价

i = "600004"
df= ak.stock_zh_a_hist(symbol=i, period="daily", start_date="19900301", end_date='20210907', adjust="")
df['日期'] = pd.to_datetime(df['日期'], format='%Y-%m-%d')
df['code'] = i

构建股票数据分析池

start = "19900301"
end= '20210907'
def select(code,start,end):
    fin= ak.stock_financial_analysis_indicator(symbol=code)
    fin = fin.replace('--',0)
    fin.iloc[:,1:] = fin.iloc[:,1:].astype('float')
    fin['日期'] = pd.to_datetime(fin['日期'], format='%Y-%m-%d')
    fin = fin.set_index('日期')
    df= ak.stock_zh_a_hist(symbol=code, period="daily", start_date=start, end_date=end, adjust="")
    df['日期'] = pd.to_datetime(df['日期'], format='%Y-%m-%d')
    df = df.set_index('日期')
    df['code'] = code
    last = pd.concat([df,fin],axis=1).ffill(axis=0).fillna(0)
    
    #last.index = pd.to_datetime(last['日期'])
    #last.index.name = None
    last.sort_index(inplace=True)
    return last

# 成分股名单
stock_list = ak.index_stock_cons(symbol="000016")
df = pd.DataFrame()
for i in stock_list.head()['品种代码']:
    print(i)
    df = df.append(select(i,start,end))    

   
assets = df.set_index([df.index,df.code], drop=True)
assets = assets[~(assets['code']==0)] 
# column为股票代码,index为日期,值为股票收盘价
assets.rename(columns= {'code':'code2'},inplace=True)
close = assets.pivot_table(index='日期',columns='code',  values='收盘')
close.index = pd.to_datetime(close.index)
close.index.name = None

因子分析

ret = get_clean_factor_and_forward_returns(assets[['1-2年以内预付货款(元)']],close,max_loss=1.0,periods=(5,10,20))
create_full_tear_sheet(ret, long_short=True)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神出鬼没,指的就是我!

必须花钱,数据超好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值