股票多因子模型实战:Python核心代码解析.笔记06(组合构建)

本文介绍了如何通过Python进行股票投资组合构建,包括等权组合、市值加权方法以及带有风险厌恶和约束条件的优化过程,如最小化波动率以达到预期收益率。作者使用了pandas、matplotlib、seaborn和CVXOPT库进行数据分析和优化计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import pandas as pd
import matplotlib.pyplot as plt
import pylab as plb
plb.rcParams['font.sans-serif'] = ['SimHei']    # 指定默认字体
plb.rcParams['font.serif'] = ['SimHei']
plb.rcParams['axes.unicode_minus'] = False     # 解决保存图像是负号'-'显示为方块的问题
%matplotlib inline
import seaborn as sns
sns.set()
import numpy as np
from cvxopt import matrix, solvers

-----------------------------------------------------------------------------------

#通过因子合成选出股票后,需要决定如何对这些股票配权重

#等权组合
tpd = pd.read_hdf('total_tpd.h5', key='data')
Alpha_df = pd.read_hdf('./factor/equal_weight_alpha.h5', key='data')

Alpha_df.sort_values(['secucode','data_date'], inplace=True)

Alpha_df.factor_neuted = Alpha_df.groupby('secucode').apply(lambda x: x['equal_weight_alpha'].shift(-1)).values
Alpha_df.dropna(inplace=True)

#判断因子值是否大于某一分位数

def top_quantile(df, pct=0.05):
    up_line = df['equal_weight_alpha'].quantile(1-pct)
    return df['equal_weight_alpha'] >= up_line

Alpha_df['flag'] = Alpha_df.groupby('data_date').apply(lambda x:top_quantile(x)).values

Alpha_df = Alpha_df[Alpha_df.flag]

#与行情数据集合并

Alpha_df = Alpha_df.merge(tpd[['data_date','secucode','daily_return','mv']], on=['data_date','secucode'], how='left')


#等权组合的累计收益率
Alpha_df.groupby('data_date')['daily_return'].mean().add(1).cumprod().plot(figsize=(18,9))

-------------
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值