小市值选股策略代码分享(附python源码)

这篇具有很好参考价值的文章主要介绍了小市值选股策略代码分享(附python源码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

小市值选股策略的核心在于通过综合分析公司的基本面、行业定位、财务健康状况以及市场趋势,

来寻找那些被市场低估但具备显著成长潜力的股票,同时也要重视风险管理和投资组合的多样化。

小市值选股策略代码分享(附python源码)

 

今天来给大家分享下小市值策略代码如下:

# 显式导入 BigQuant 相关 SDK 模块
from bigdatasource.api import DataSource
from bigdata.api.datareader import D
from biglearning.api import M
from biglearning.api import tools as T
from biglearning.module2.common.data import Outputs

import pandas as pd
import numpy as np
import math
import warnings
import datetime

from zipline.finance.commission import PerOrder
from zipline.api import get_open_orders
from zipline.api import symbol

from bigtrader.sdk import *
from bigtrader.utils.my_collections import NumPyDeque
from bigtrader.constant import OrderType
from bigtrader.constant import Direction

# <aistudiograph>

# @param(id="m6", name="initialize")
# 交易引擎:初始化函数,只执行一次
def m6_initialize_bigquant_run(context):
#读取数据
context.ranker_prediction = context.options['data'].read_df()
context.ranker_prediction.set_index('date',inplace=True)

#print(context.ranker_prediction)
# @param(id="m6", name="before_trading_start")
# 交易引擎:每个单位时间开盘前调用一次。
def m6_before_trading_start_bigquant_run(context, data):
# 盘前处理,订阅行情等
pass

# @param(id="m6", name="handle_tick")
# 交易引擎:tick数据处理函数,每个tick执行一次
def m6_handle_tick_bigquant_run(context, tick):
pass

# @param(id="m6", name="handle_data")
# 交易引擎:bar数据处理函数,每个时间单位执行一次
def m6_handle_data_bigquant_run(context, data):


#context = 回测引擎
#context内部 会有一些功能~ 是通过 context.xxx 来使用的
#data

#调仓期的控制
remainder = context.trading_day_index % 5
#如果没到调仓期直接结束运行
if remainder !=0:
return

import datetime
#初始化
buy_list = [] #买入列表
sell_list = [] #卖出列表

#==================== 数据准备
today = data.current_dt.strftime('%Y-%m-%d') #读取当天日期
time = data.current_dt

account_pos = context.get_account_positions()
holding_list = list({key: value for key, value in account_pos.items() if value.avail_qty > 0}.keys())
holding_num = len(holding_list)

#读取当日数据
try:
today_data = context.ranker_prediction.loc[today,:]
today_data.reset_index(inplace=True)
except:
return

#策略
today_data=today_data[today_data['上市时间'] >= 365] #上市时间的过滤
today_data=today_data[today_data['市盈率ttm'] >= 0] #财务数据过滤
today_data=today_data[today_data['换手排名'] <= 0.4]
today_data.sort_values(by='市值',ascending=True,inplace=True) #市值排序

#构建目标列表
target_list = today_data.instrument.to_list()[:10]

#构建卖出列表
for ins in holding_list:
if ins not in target_list:
sell_list.append(ins)

#构建买入列表
for ins in target_list:
if ins not in holding_list:
buy_list.append(ins)

#先卖
for ins in sell_list:
context.order_target(ins,0)

#等权买
for ins in buy_list:
context.order_target_percent(ins,0.025)

# @param(id="m6", name="handle_trade")
# 交易引擎:成交回报处理函数,每个成交发生时执行一次
def m6_handle_trade_bigquant_run(context, trade):
pass

# @param(id="m6", name="handle_order")
# 交易引擎:委托回报处理函数,每个委托变化时执行一次
def m6_handle_order_bigquant_run(context, order):
pass

# @param(id="m6", name="after_trading")
# 交易引擎:盘后处理函数,每日盘后执行一次
def m6_after_trading_bigquant_run(context, data):
pass


# @module(position="-85,-19", comment='', comment_collapsed=True)
m1 = M.instruments.v2(
start_date=T.live_run_param('trading_date', '2023-01-01'),
end_date=T.live_run_param('trading_date', '2023-11-20'),
market='CN_STOCK_A',
instrument_list='',
max_count=0
)

# @module(position="450,-27", comment='', comment_collapsed=True)
m2 = M.input_features.v1(
features="""
#构建一个因子。 open-close的绝对值
市值=market_cap_0
市盈率ttm=pe_ttm_0
上市时间=list_days_0
换手排名=rank_turn_0
净利润=fs_net_income_0
每股收益=fs_eps_0
净利润=fs_net_income_0"""
)

# @module(position="212,97", comment='', comment_collapsed=True)
m3 = M.general_feature_extractor.v7(
instruments=m1.data,
features=m2.data,
start_date='',
end_date='',
before_start_days=90
)

# @module(position="228,205", comment='', comment_collapsed=True)
m4 = M.derived_feature_extractor.v3(
input_data=m3.data,
features=m2.data,
date_col='date',
instrument_col='instrument',
drop_na=True,
remove_extra_columns=True,
user_functions={}
)

# @module(position="189,315", comment='', comment_collapsed=True)
m5 = M.chinaa_stock_filter.v1(
input_data=m4.data,
index_constituent_cond=['全部'],
board_cond=['上证主板', '深证主板', '创业板', '科创板'],
industry_cond=['全部'],
st_cond=['正常'],
delist_cond=['非退市'],
output_left_data=False
)

# @module(position="82,446", comment='', comment_collapsed=True)
m6 = M.hftrade.v2(
instruments=m1.data,
options_data=m5.data,
start_date='',
end_date='',
initialize=m6_initialize_bigquant_run,
before_trading_start=m6_before_trading_start_bigquant_run,
handle_tick=m6_handle_tick_bigquant_run,
handle_data=m6_handle_data_bigquant_run,
handle_trade=m6_handle_trade_bigquant_run,
handle_order=m6_handle_order_bigquant_run,
after_trading=m6_after_trading_bigquant_run,
capital_base=1000000,
frequency='daily',
price_type='真实价格',
product_type='股票',
before_start_days='0',
volume_limit=1,
order_price_field_buy='close',
order_price_field_sell='open',
benchmark='000300.HIX',
plot_charts=True,
disable_cache=False,
replay_bdb=False,
show_debug_info=False,
backtest_only=False
)
# </aistudiograph>

 文章来源地址https://www.toymoban.com/news/detail-747841.html

以上是一个简洁的小市值策略代码模板,您可以根据需求自行调整参数,以实现更高的收益。
另外,您还可以前往BigQuant量化平台进行策略回测和效果评估。 
 
小市值选股策略不仅仅是寻找被低估的股票,更是一个综合考虑公司潜力、财务健康状况、市场估值和宏观经济因素的过程,
同时需要投资者具备敏锐的市场洞察力、稳健的风险管理能力和长期的投资视角。
 
 

到了这里,关于小市值选股策略代码分享(附python源码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【AI选股】如何通过python调用wencai包实现AI选股(请移步新文章)

    i问财是同花顺旗下专业的机器人智能选股问答平台,致力于为投资者提供宏观数据、新闻资讯、A股、港美股、新三板、基金等各类方案。wencai是i问财的策略回测接口的Pythonic工具包,满足量化爱好者和数据分析师在量化方面的需求。 提示:以下是本篇文章正文内容,下面案例

    2024年02月11日
    浏览(47)
  • 开源代码分享(6)—考虑电动汽车可调度潜力的充电站两阶段市场投标策略(附matlab代码)

    [1]詹祥澎,杨军,韩思宁等.考虑电动汽车可调度潜力的充电站两阶段市场投标策略[J].电力系统自动化,2021,45(10):86-96. 摘要:在电力市场环境下,充电站优化投标策略能降低电力成本,甚至通过售电获取收益。文中考 虑了电动汽车成为柔性储荷资源的潜力,提出了日前电力市场和

    2024年02月15日
    浏览(39)
  • 【AI选股】如何通过python调用通达信-小达实现AI选股(量化又多了一个选股工具,原文Chrome浏览器请改为Edge浏览器)

    ChatGPT火遍网络,那么有没有可以不用写公式就可以实现AI选股的方法?答案是有,今天我们就来试试通达信的小达,让小达按我们的要求去进行选股。 使用Chrome浏览器报错的请改为Edge浏览器,或者Firefox浏览器,参考如下文章: 【Python小技巧】browser_cookie3访问Chrome浏览器Co

    2024年02月11日
    浏览(100)
  • 使用python进行AI选股之同花顺问财

      通过问财python库,可以输入中文就能获取AI选股结果,而不需要写很多代码来进行股票选取,如上图就是输入中文”均线多头排列的股票”获取的结果。本文主要介绍问财python库的选股功能和使用步骤。 同花顺i问财是同花顺旗下的AI投顾平台,专注于使用AI技术改进财经数

    2024年01月18日
    浏览(211)
  • Python量化交易策略--双均线策略及代码

            双均线策略是比较经典的策略,股票的价格均线是投资参考的重要指标。均线有快线和慢线之分,当快线向上穿过慢线则是金叉,一般执行买入操作,当快线向下穿过慢线时则形成死叉,一般执行卖出操作。基于这个基本思路,出于兴趣爱好,便使用python复现了这个

    2023年04月11日
    浏览(79)
  • 前端代码分享——星空背景特效(内含源码)

    打开网页效果最好哦 提供的JavaScript代码是一个名为\\\"WarpDrive\\\"的jQuery插件,它创建了一个星空动画,类似于科幻媒体(如《星际迷航》)中所看到的\\\"超光速\\\"效果。 提供的JavaScript代码是一个名为\\\"WarpDrive\\\"的jQuery插件,它创建了一个星空动画,类似于科幻媒体(如《星际迷航》)

    2024年02月14日
    浏览(45)
  • 抖音seo源码开发源代码开发技术分享

    抖音API接口:抖音提供了丰富的API接口,包括用户信息、视频信息、评论信息等。 数据爬取技术:通过抓包分析抖音接口的数据结构,可以使用Python等编程语言编写爬虫程序。 数据库技术:需要掌握数据库的基本操作,将爬取的数据存储到数据库中。 数据分析技术:通过数

    2024年02月15日
    浏览(62)
  • 抖音seo矩阵源码*开发搭建*代码打包部署(开源)分享

    抖音SEO矩阵指的是一系列通过搜索引擎优化(SEO)技术和策略来提升抖音账号在搜索结果中排名的方法和工具。在抖音上,用户可以通过搜索来查找与其相关的视频和账号。因此,抖音SEO矩阵的主要目的是通过的优化和账号信息的完善,使抖音账号能够获得更高

    2024年02月13日
    浏览(73)
  • 前端代码分享——常用的手机端底部导航栏(内含源码)

    点击左上角 打开网页 效果更佳哦 index.html js 代码的解释: 代码以一些注释开始,提到了设计师和原始图片来源。 代码使用\\\"use strict\\\"启用JavaScript的严格模式,这有助于捕捉常见的编码错误并强制执行更好的编码实践。 代码选择HTML文档中的body元素,并将其分配给 body 变量。

    2024年02月03日
    浏览(41)
  • 抖音seo矩阵源码SaaS搭建代码分享-可二开

    场景:适用于抖音seo源码,抖音矩阵源码,短视频seo源码,短视频矩阵源码,抖音短视频seo矩阵系统源码开发搭建等。 抖音SEO是通过一系列的技术手段和优化策略来提升视频内容在抖音平台内的曝光率和排名。其中主要包括以下几个方面: 1.优化。通过对视频的标题、

    2024年02月16日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包