序言
对于公司基本面的单因子分析
检测方法
按照基本面的某一指标,按照大小排序,分成十个组别
代码
'''-------api调用聚宽-----'''
# 导入函数库
from jqdata import *
import datetime
import numpy as np
import pandas as pd
#模型选择
from sklearn.model_selection import train_test_split,cross_val_score
#数据处理
from sklearn.preprocessing import StandardScaler
# from sklearn.preprocessing import KBinsDiscretizer
#填充缺失值
# from sklearn.impute import SimpleImputer
#特征选择
from sklearn.feature_selection import SelectKBest,chi2,f_regression,SelectPercentile,RFE,SelectFromModel
from scipy.stats import pearsonr
# 模型
from sklearn.svm import SVR
from sklearn.linear_model import LinearRegression,Ridge,Lasso,RandomizedLasso,LogisticRegression
from sklearn.cluster import KMeans
from sklearn.ensemble import RandomForestRegressor,RandomForestClassifier
from sklearn.tree import DecisionTreeClassifier
#调参
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import learning_curve
#模型评估
from sklearn.metrics import silhouette_score,silhouette_samples,r2_score,roc_auc_score
# 初始化函数,设定基准等等
def initialize(context):
# 设定沪深300作为基准
g.security = list(get_all_securities(types=["stock"]).index)
set_benchmark('000300.XSHG')
# 开启动态复权模式(真实价格)
set_option('use_real_price', True)
# 输出内容到日志 log.info()
# 过滤掉order系列API产生的比error级别低的log
# log.set_level('order', 'error')
### 股票相关设定 ###
# 股票类每笔交易时的手续费是:买入时佣金万分之三,卖出时佣金万分之三加千分之一印花税, 每笔交易佣金最低扣5块钱
set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')
#设置滑点
set_slippage(PriceRelatedSlippage(0.002))
# 开盘前运行
run_daily(before_market_open, time='before_open', reference_security='000300.XSHG')
# 开盘时运行
run_daily(market_open, time='open', reference_security='000300.XSHG')
# 收盘后运行
run_daily(after_market_close, time='after_close', reference_security='000300.XSHG')
#检测因子
g.factor=valuation.market_cap
#分类数
g.class_num=10
g.day=0
#时间窗口
g.rate=22
g.stock_class_list={
}
g.stock_class_close={
}
g.stock_class_return={
}
#收益率
for i