当前位置: 首页 > wzjs >正文

最新新闻事件今天国内消息seo搜索引擎招聘

最新新闻事件今天国内消息,seo搜索引擎招聘,wordpress说说功能,有没有做推文的网站先看一下我们的收益: JoinQuant直达这里看看 下面讲解原理和代码。 目录 一、是否为st 二、是否停牌 三、市值小、roe大 四、编写回测代码 今天来研究一下多因子回测模型,这里以‘市值’、‘roe’作为例子。 几个标准:沪深300里选股&am…

先看一下我们的收益: JoinQuant直达这里看看

 下面讲解原理和代码。

目录

一、是否为st

二、是否停牌

三、市值小、roe大

四、编写回测代码


今天来研究一下多因子回测模型,这里以‘市值’、‘roe’作为例子。

几个标准:沪深300里选股,市值小、roe大、排出st 停牌、定期调仓

一、是否为st

# 是否st
is_st_info = get_extras('is_st', ['000001.XSHE', '000018.XSHE'], start_date='2025-04-01', end_date='2025-04-10', df=True)
print(is_st_info)
            000001.XSHE  000018.XSHE
2025-04-01        False         True
2025-04-02        False         True
2025-04-03        False         True
2025-04-07        False         True
2025-04-08        False         True
2025-04-09        False         True
2025-04-10        False         True

然后我们改装成为函数

# 获取st股票
def get_st_stocks(stock_list, end_date, count):is_st_info = get_extras('is_st', stock_list, end_date=end_date, count=count, df=True)st_stocks = []for stock in stock_list:if is_st_info[stock].any():  # 检查该股票是否在任何一天为Truest_stocks.append(stock)return st_stocksx = get_st_stocks(['300956.XSHE', '300542.XSHE', '000018.XSHE'], end_date='2025-04-12', count=5)
print(x)

二、是否停牌

# 是否停牌
x = get_price(['300956.XSHE', '300542.XSHE'], count=5, end_date='2025-04-12', fields='paused',frequency='daily', skip_paused=False, panel=False)
print(x)
        time         code  paused
0 2025-04-07  300956.XSHE     0.0
1 2025-04-08  300956.XSHE     0.0
2 2025-04-09  300956.XSHE     0.0
3 2025-04-10  300956.XSHE     1.0
4 2025-04-11  300956.XSHE     1.0
5 2025-04-07  300542.XSHE     0.0
6 2025-04-08  300542.XSHE     1.0
7 2025-04-09  300542.XSHE     1.0
8 2025-04-10  300542.XSHE     1.0
9 2025-04-11  300542.XSHE     1.0

同样,我们改装成函数

# 是否停牌
def get_paused_stocks(stock_list, end_date, count):paused_info = get_price(stock_list, count=count, end_date=end_date, fields='paused', frequency='daily', skip_paused=False, panel=False)paused_stocks = []for stock in stock_list:if (paused_info[paused_info['code'] == stock]['paused'] == 1.0).any():  # 检查该股票是否在任何一天为1.0paused_stocks.append(stock)return paused_stocksx = get_paused_stocks(['000001.XSHE', '300956.XSHE', '300542.XSHE'], end_date='2025-04-12', count=5)
print(x)

 

三、市值小、roe大

获取某一天沪深300股票中yb天不停牌、不st,且满足市值和ROE排名前N的股票

from jqdata import *def get_mystocks(date, yb=63, N=20):"""获取某一天沪深300股票中yb天不停牌、不st,且满足市值和ROE排名前N的股票:param date: 指定日期:param yb: 多少天不停牌:param N: 排名前多少:return: 满足条件的股票代码列表"""# 获取沪深300的成分股hs300_stocks = get_index_stocks('000300.XSHG', date=date)# 获取股票的基本面数据q = query(valuation.code,valuation.market_cap,indicator.roe).filter(valuation.code.in_(hs300_stocks))df = get_fundamentals(q, date=date)#print(df.head())# 获取停牌股票paused_stocks = get_paused_stocks(hs300_stocks, end_date=date, count=yb)#print(paused_stocks)# 获取st股票st_stocks = get_st_stocks(hs300_stocks, end_date=date, count=yb)#print(st_stocks)# 获取剔除停牌和ST的股票代码列表all_paused_stocks = set(paused_stocks + st_stocks)# 从df中筛选出剔除停牌和ST的股票df = df[~df['code'].isin(all_paused_stocks)]# 对市值进行升序排名,对ROE进行降序排名df['market_cap_rank'] = df['market_cap'].rank(method='first', ascending=True)df['roe_rank'] = df['roe'].rank(method='first', ascending=False)df['composite_rank'] = df['market_cap_rank'] + df['roe_rank']# 按综合排名升序排序并选取前Ndf_sorted = df.sort_values(by='composite_rank', ascending=True).head(N)# 提取股票代码并返回mystocks = df_sorted['code'].tolist()return mystocksmystocks = get_mystocks('2024-12-31')
print(mystocks)
['300628.XSHE', '002555.XSHE', '000876.XSHE', '300394.XSHE', '603833.XSHG', '605117.XSHG', '300316.XSHE', '000975.XSHE', '000661.XSHE', '002007.XSHE', '601021.XSHG', '601799.XSHG', '300896.XSHE', '688082.XSHG', '000807.XSHE', '000408.XSHE', '300832.XSHE', '600570.XSHG', '002920.XSHE', '600066.XSHG']

 

四、编写回测代码

# 导入函数库
from jqdata import *
import datetime
import numpy as np# 策略初始化
def initialize(context):set_benchmark('000300.XSHG')set_option('use_real_price', True)log.set_level('order', 'error')set_order_cost(OrderCost(close_tax=0, open_commission=0, close_commission=0, min_commission=0), type='stock')g.t = 0g.tc = 15  # 调仓频率g.yb = 63  # 样本长度g.N = 20   # 持仓数量run_daily(market_open, time='open', reference_security='000300.XSHG')def market_open(context):now = context.current_dtbefore_1d_time = now - timedelta(days=1)end_date = before_1d_time.strftime("%Y-%m-%d")if g.t % g.tc == 0:mystocks = get_mystocks(end_date, g.yb, g.N)rebalance_position(context, mystocks)g.t += 1# 获取st股票
def get_st_stocks(stock_list, end_date, count):is_st_info = get_extras('is_st', stock_list, end_date=end_date, count=count, df=True)st_stocks = []for stock in stock_list:if is_st_info[stock].any():  # 检查该股票是否在任何一天为Truest_stocks.append(stock)return st_stocks# 是否停牌
def get_paused_stocks(stock_list, end_date, count):paused_info = get_price(stock_list, count=count, end_date=end_date, fields='paused', frequency='daily', skip_paused=False, panel=False)paused_stocks = []for stock in stock_list:if (paused_info[paused_info['code'] == stock]['paused'] == 1.0).any():  # 检查该股票是否在任何一天为1.0paused_stocks.append(stock)return paused_stocksdef get_mystocks(date, yb=63, N=20):"""获取某一天沪深300股票中yb天不停牌,且满足市值和ROE排名前N的股票:param date: 指定日期:param yb: 多少天不停牌:param N: 排名前多少:return: 满足条件的股票代码列表"""# 获取沪深300的成分股hs300_stocks = get_index_stocks('000300.XSHG', date=date)# 获取股票的基本面数据q = query(valuation.code,valuation.market_cap,indicator.roe).filter(valuation.code.in_(hs300_stocks))df = get_fundamentals(q, date=date)#print(df.head())# 获取停牌股票paused_stocks = get_paused_stocks(hs300_stocks, end_date=date, count=yb)#print(paused_stocks)# 获取st股票st_stocks = get_st_stocks(hs300_stocks, end_date=date, count=yb)#print(st_stocks)# 获取剔除停牌和ST的股票代码列表all_paused_stocks = set(paused_stocks + st_stocks)# 从df中筛选出剔除停牌和ST的股票df = df[~df['code'].isin(all_paused_stocks)]# 对市值进行升序排名,对ROE进行降序排名df['market_cap_rank'] = df['market_cap'].rank(method='first', ascending=True)df['roe_rank'] = df['roe'].rank(method='first', ascending=False)df['composite_rank'] = df['market_cap_rank'] + df['roe_rank']# 按综合排名升序排序并选取前Ndf_sorted = df.sort_values(by='composite_rank', ascending=True).head(N)# 提取股票代码并返回mystocks = df_sorted['code'].tolist()return mystocks"""
###################### 工具 ######################调仓:
先卖出持仓中不在 stock_list 中的股票
再等价值买入 stock_list 中的股票
"""
def rebalance_position(context, stock_list):current_holding = context.portfolio.positions.keys()stocks_to_sell = list(set(current_holding) - set(stock_list))# 卖出bulk_orders(stocks_to_sell, 0)total_value = context.portfolio.total_value# 买入bulk_orders(stock_list, total_value/len(stock_list))# 批量买卖股票
def bulk_orders(stock_list,target_value):for i in stock_list:order_target_value(i, target_value)

上面就是所有的源码了。

参考:这里

原文太老了,代码也比较繁琐,故简化很多。

http://www.dtcms.com/wzjs/4224.html

相关文章:

  • 网站开发u盘128够吗网络推广公司北京
  • 昆明网站建设制作在线教育
  • 长春市建委官网360优化大师历史版本
  • wordpress程序 耗内存宁波免费seo排名优化
  • 成都设计网站快抖霸屏乐云seo
  • 如何修改网站备案的域名成人短期技能培训
  • 数据网站怎么做的百度百度推广
  • 做网站时背景图片浮动重庆seo论坛
  • 建材网站建设方案网络推广是什么
  • 东莞宣布优化防疫措施关键词seo服务
  • 个人网站做企业备案搜索引擎有哪些
  • 网页设计淘宝首页html代码seo公司推荐推广平台
  • 网站建设和管理工作冯耀宗seo教程
  • 一流的网站建设与优化网络营销的主要方式
  • 哪个设计网站做兼职好网站优化推广教程
  • 亲子游网站怎么做免费域名申请的方法
  • 南充免费推广网站自媒体人15种赚钱方法
  • 电商网站建设需求分析 实例题深圳网站设计知名乐云seo
  • 惠州做棋牌网站建设找哪家效益快全媒体广告代理
  • 在线视频网站怎么做seo国际时事新闻
  • 怎么快速提高网站权重知了seo
  • 无锡网站建设开发游戏行业seo整站优化
  • 公司网站建设内容建议枸橼酸西地那非片的作用及功效
  • 杭州网站建设网络公司今日的最新消息
  • php中网站搜索功能实现信息流推广渠道有哪些
  • 营销型网站建设策划书怎么写个人永久免费自助建站
  • 郑州高端网站建设怎么样代运营电商公司
  • 沈阳网站建设技术公司线上推广是做什么的
  • 苹果cms如何做网站重庆百度推广开户
  • 营销网站的策划方案怎么做百度竞价排名的优缺点