将反向操作由1.python量化——alpha股票-指数期货对冲策略的股指期货,换成筛选的后T只股票的做空(融资融券业务)。
大概思路就是选择排名前T只股票做多,后T只做空。
- 所用库
# coding=utf-8
import math
import tushare as ts
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import talib
matplotlib.rcParams['axes.unicode_minus']=False
plt.rcParams['font.sans-serif']=['SimHei']
- 数据获取
ts.set_token('f3e00ef token 码01c6811477')
pro = ts.pro_api()
df1= pro.query('daily_basic', ts_code='', trade_date='20200420',fields='ts_code,trade_date,total_mv,ps,pe,pb')#获取日期所有数据
df1_=df1#赋值一个 用于计算最后T名股票
- 股票筛选函数
#################################筛选股票函数######################################
def XG_function(df1,sig): #sig=True是筛选前T只股票的参数,sig=False则是后T只
#条件选股,排名前20
df1=df1[ df1['pe']>45 ]
df1=df1[ df1['pb']>8 ]
df1=df1[ df1['ps']>17 ]
df1=df1[ df1['total_mv']<5000000 ]
#排序选股
df1=df1.sort_values(by="pe" , ascending=sig)
df1=df1.head(100)#按由低到高排,选前100名
df1=df1.sort_values(by="ps" , ascending=sig)
df1=df1.head(70)
df1=df1.sort_values(by="pb" , ascending=sig)
df1=df1.head(20)
df1=df1['ts_code']#获得一篮子股票
return df1
- 计算前T 后T只股票的等权重收益
code='000300.SH'
star='20200430'
end="20200810"
###################计算组合的等权重收益率##########################################
def Sy_function(df