上市公司净资产收益率预测分析(github地址)
一、流程
1. 数据采集
确认采样信息,包括自变量和因变量、时间范围、数据来源(优矿平台)。
import pandas as pd
import numpy as np
import random
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats
import statsmodels.formula.api as smf
import statsmodels.api as sm
from statsmodels.stats.outliers_influence import variance_inflation_factor
from sklearn.metrics import mean_squared_error
# print配置
str1 = '\n'*4 + '#'*80
str2 = '\n'*2 + '-'*80
def get_data(beginDate, endDate):
'''
一、数据采集
输入:开始日,结束日
输出:原始数据集
'''
# 1. 股票基本信息
df = DataAPI.EquGet(secID=u"",ticker=u"",equTypeCD=u"A",listStatusCD=u"L",field=['ticker', 'secShortName', 'listDate'],pandas="1")
df = df[df.listDate<=beginDate]
tickerlst = df.ticker.tolist()
# 2. 财务数据
# 2.1 合并资产负债表(所有会计期末最新披露)
fdmt1 = DataAPI.FdmtBSAllLatestGet(ticker=tickerlst,secID=u""
,reportType=u"A",endDate=u"",beginDate=beginDate,year=""
,field=['ticker', 'endDate', 'inventories', 'TAssets', 'TLiab']
,pandas="1")
# 2.2 业绩快报(所有会计期末最新披露)
fdmt2 = DataAPI.FdmtEeAllLatestGet(ticker=tickerlst,secID=u""
,reportType=u"A",endDate=u"",beginDate=beginDate
,field=['ticker', 'endDate', 'ROE']
,pandas="1")
# 2.3 财务指标—营运能力(根据所有会计期末最新披露数据计算)
fdmt3 = DataAPI.FdmtIndiTrnovrGet(ticker=tickerlst,secID=""
,endDate="",beginDate=beginDate,beginYear="",endYear=u"",reportType=u"A"
,field=['ticker', 'endDate', 'taTurnover']
,pandas="1")
# 2.4 财务指标—成长能力(根据所有会计期末最新披露数据计算)
fdmt4 = DataAPI.FdmtIndiGrowthGet(ticker=tickerlst,secID=""
,endDate="",beginDate=beginDate,beginYear=u"",endYear=u"",reportType=u"A"
,field=['ticker', 'endDate', 'revenueYOY']
,pandas="1")
# 2.5 财务指标-利润表结构分析(根据所有会计期末最新披露数据计算)
fdmt5 = DataAPI.FdmtIndiStctISGet(ticker=tickerlst,secID=""
,endDate="",beginDate=beginDate,beginYear=u"",endYear=u"",reportType=u"A"
,field=['ticker', 'endDate', 'opTR']
,pandas="1")
# 2.6 财务指标-收现能力(根据所有会计期末最新披露数据计算)
fdmt6 = DataAPI.FdmtIndiCashGet(ticker=tickerlst,secID=""
,endDate="",beginDate=beginDate,beginYear=u"",endYear=u"",reportType=u"A"
,field=['ticker', 'endDate', 'arR']
,pandas="1")
# 2.7 财务数据合并
fdmt = pd.merge(fdmt1, fdmt2)
fdmt = pd.merge(fdmt, fdmt3)
fdmt = pd.merge(fdmt, fdmt4)
fdmt = pd.merge(fdmt, fdmt5)
fdmt = pd.merge(fdmt, fdmt6)
fdmt['ROE'] = fdmt.ROE / 100
fdmt['arR'] = fdmt.arR / 100
fdmt['opTR'] = fdmt.opTR / 100
fdmt['revenueYOY'] = fdmt.revenueYOY / 100
fdmt['lev'] = fdmt.TLiab/fdmt.TAssets
fdmt['inv'] =