IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 《股票多因子模型实战》笔记(书摘,写给自己和同学看的,请勿吐槽) -> 正文阅读

[人工智能]《股票多因子模型实战》笔记(书摘,写给自己和同学看的,请勿吐槽)

《股票多因子模型实战 Python核心代码解析》陆潇一.中国工信出版集团.电子工业出版社

股票多因子模型实战

1.1.1股票多因子:股票alpha策略/市场中性策略?

1.1.2量化CTA:商品交易顾问

1.1.3套利

1.1.4高频

价值投资

趋势投资

股票多因子

1.2股票多因子模型框架

因子:可以在逻辑上解释股票收益且可以被量化的要素都可以被称为因子

1.2.2多因子模型的数学语言

一只股票的涨跌包括:股票自身的特性与当时大盘整体的表现

股票自身特性带来的收益称为Alpha收益——跑赢大盘多少个点

股票归属于大盘整体表现的收益称为Beta收益

R=Alpha it +Beta t

股票组合:加权上式

Beta收益,大盘的涨跌,通过卖空股指期货的方法对冲。,因此只需组合有正的alpha收益

R it 股票i在t期的收益率

α收益率的常数项

β股票i在因子k上的敞口/股票该因子的因子值

fkt? k因子的因子收益率

ε残差项

1.2.3多因子模型的实践框架

?????? 1、单因子测试与筛选:因子池、因子测试

?????? 2、因子合成:将筛选出的因子加权求和变为一个合成因子

?????? 3、组合构建:打分排序,计算每只股票占比

调仓:轧差

1.3量化的基本问题

1.3.1幸存者偏差:收益率高估

1.3.2未来信息:高估—--年报公布的下一个交易日才能使用

1.3.3过度拟合和欠拟合

过度拟合:噪声参与模型构建,过度解读样本信息

欠拟合:没有充分使用

逻辑与金融含义匹配,测试模型,如:参数敏感性

1.3.4因果性与相关性:相关误认为因果

1.3.5数据质量,操作风险

2量化的python基础

Python解释型语言

del 容器里删除元素

/结果为浮点数

列表推导式[name.upper() for name in name_list]

[x.method for x in x_list]

元组只能访问(索引切片),不能增删改

字典:code_name_dict[‘600926’]=’杭州银行’

if: elif: else:

NumPy中只有一个最基本的数据结构:array

stock_price_ser=np.array([0.3,1.2,-0.7,0.6],

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[1.2,3.4,0.1,-0.8])

np.mean(stock_price_ser,axis=1)

axis=1横着算一个[ ],axis=0竖着算0.3和1.2

索引stock_price_ser[0][1]

rand生成0~1均匀分布np.random.rand(行数,列数)

randn生成标准正态分布的随机数np.random.randn()

np.arange(1,x)左闭右开

len(stock_price_ser) 方法返回对象(字符、列表、元组等)长度或项目个数

matplotlib

from matplotlib import pyplot as plt

plt.title()

plt.xlabel()

plt.ylabel()

plt.plot(x,y)

plt.show()

2.6 pandas

2.6.2数据结构:series和dataframe

构建series

series=pd.Series([0.074,0.099,0.001,0.0013)

type()查看数据类型

构建dataframe

data=pd.DataFrame(

????????????? {‘daily_return’:daily_return_Series,

‘Secucode’:secucode_Series})

Data=pd.DataFrame(

index=[0,1],

columns=[‘daily_return’,’secocode’],

data=[[0.074,’000001.SZ’],??? //横着

[0.099,’000002.SZ]] )

Dataframe的数据格式中没有字符串类型,字符串类型存放为object

2.6.3 Pandas的输入与输出

pd.read_csv(‘路径’)

data.to_csv(‘xxx.csv’)存储为csv, index=False不输出index

data[‘ind_code’].astype(‘str’)

数据框[‘列名’].astype(‘类型’)

Hdf文件hdf文件_百度百科 (baidu.com)

2.6.4 DataFrame的数据选取

Dataframe.head(数字),查看前数字行的数据

tail()方法查看尾数据

列筛选:df=Dataframe名字[ [‘daily_return’, ’secocode’] ]?? //两对中括号,外面的[ ]表示对这一DataFrame进行筛选,里面的列表是需要的内容

行筛选:满足某一要求,如df=df[‘data_date’]==’2019-05-27’

单个筛选条件用()括住 (条件一)&(条件2)

iloc方法类似切片

trading_data_2019.iloc[4:8] 左闭右开,trading_data_2019第5行到第9行的数据

行和列:trading_data_2019.iloc[4:8, 2:-1]

trading_data_2019.iloc[ 4 , 2 ]

2.6.5 Pandas排序

排序sort_values(by=’列名’) ascending=False

sort_values(by=[‘’,’’],ascending=False)

2.6.6描述统计与分组

Data.describe()

trading_data_2019[trading_data_2019[‘secucode’]==’601318.SH’][‘daily_return’].mean()

group-apply方法

trading_data_2019.groupby(‘secucode’)[‘daily_return’].apply(np.mean)

分组,选变量,应用均值方法

np.product()计算乘积

2.6.7 Pandas的数据可视化

daily_average_return=trading_data_2019.groupby(‘data_date)[‘daily_return’].apply(np.mean)

daily_average_return.plot() //横坐标date,纵坐标收益率

figsize调整图片大小

daily_average_return.plot(figsize=(19,18))

收益率的分布hist()方法:绘制直方图

daily_average_return.hist(bins=50)

bins划分间隔,bins越大划分间隔越小

cumprod()方法,计算数值的累计乘积

(daily_average_return+1).cumprod*1000).plot()

scatter()方法:散点图

trading_data_2019[trading_data_2019.data_date==’2019-05-27’].head(100).plot.scatter(y=’turnover’,x=’free_mv’,figsize=(18,9))

2.6.8多个DataFrame处理

横向整合:merge()方法

ind_name=pd.read_csv(‘ind_name.csv’, dtype={‘code’:str})

dtype设置读取内容的数据类型

pd.merge(trading_data_2019,ind_name.rename(columns={‘code’:’ind_code’}), on=’ind_code’,how=’left’)

rename方法

merge的on参数设置用于合并的列名,合并轴,

how参数可选left,right,outer,inner

????????left:合并过程以左侧DataFrame为主,与左侧数据集长度一致;

????????right:

????????outer:最终合并的是一个并集

????????inner:交集

注意:传入的两个DataFrame必须有相同的列名,

concat()方法,上下合并

total=pd.concat( [part1,part2,part3] )

更新中,看了三分之一...

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-29 13:03:21  更:2021-10-29 13:04:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 6:37:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码