问财量化选股策略逻辑
- 今日增仓占比>5%
- 昨日股价大于250日均线
- 2019分红比例>25%
选股逻辑分析
以上三个条件分别代表了市场资金的流入、股票价格趋势和公司分红情况。如果一个股票同时满足这三个条件,说明市场资金对该股票的未来表现有信心,公司经营状况良好,分红比例高,有利于投资者获得长期收益。
有何风险?
虽然以上三个条件可以作为选股的参考,但仍然存在一定的风险。首先,市场资金的流入和股票价格趋势受到市场情绪和政策因素的影响,可能存在较大的不确定性。其次,公司分红比例高并不一定代表公司经营状况良好,可能存在财务造假等问题。因此,在使用以上策略进行选股时,需要综合考虑多个因素,避免盲目跟风。
如何优化?
为了降低以上策略的不确定性,可以考虑加入更多的条件进行筛选。例如,可以加入公司的市盈率、市净率等财务指标,以及公司的盈利能力、成长性等基本面指标。此外,可以加入技术分析指标,如均线、MACD等,以更好地判断股票价格趋势。同时,可以结合投资者的风险承受能力和投资期限,对以上策略进行适当的调整。
最终的选股逻辑
以下是结合以上策略和优化后的最终选股逻辑:
- 今日增仓占比>5%
- 昨日股价大于250日均线
- 市盈率小于25倍
- 市净率大于1.5倍
- 增长率大于20%
- 成长性好
- 动态市盈率小于20倍
python代码参考
以下是基于以上策略的python代码参考:
import talib
import pandas as pd
def get_stock_data(stock_code):
# 获取股票的历史数据
df = pd.read_csv(f'https://query1.finance.yahoo.com/v7/finance/download/{stock_code}', index_col='Date')
df = df[['Adj Close']]
df = df.rename(columns={'Adj Close': stock_code})
df.index = pd.to_datetime(df.index)
df = df.resample('D').last()
df = df.dropna()
return df
def get_top_gainers():
# 获取今日增仓占比前50的股票代码
df = get_stock_data('000300.XSHG')
df['今日增仓占比'] = df['Volume'] / df['Total']
df = df.sort_values(by='今日增仓占比', ascending=False)
top_gainers = df.iloc[:50]['Stock Code'].tolist()
return top_gainers
def get_top_stayers():
# 获取昨日股价大于250日均线的股票代码
df = get_stock_data('000300.XSHG')
df['昨日收盘价'] = df['Adj Close'].shift(1)
df = df[df['昨日收盘价'] > df['Close'].rolling(250).mean()]
top_stayers = df.iloc[:50]['Stock Code'].tolist()
return top_stayers
def get_dividend_payout_ratio():
# 获取2019年分红比例大于25%的股票代码
df = get_stock_data('000300.XSHG')
df['2019年分红比例'] = df['Dividend'] / df['EPS']
df = df[df['2019年分红比例'] > 0.25]
dividend_payout_ratio = df.iloc[:50]['Stock Code'].tolist()
return dividend_payout_ratio
def get_stock_scores():
# 获取综合评分最高的50个股票代码
df = pd.read_csv('stock_scores.csv')
df = df.sort_values(by='score', ascending=False)
top_stocks = df.iloc[:50]['Stock Code'].tolist()
return top_stocks
def get筛选条件():
# 获取所有筛选条件的组合
top_gainers = get_top_gainers()
top_stayers = get_top_stayers()
dividend_payout_ratio = get_dividend_payout_ratio()
stock_scores = get_stock_scores()
conditions = []
for condition in [top_gainers, top_stayers, dividend_payout_ratio, stock_scores]:
conditions.append(condition)
return conditions
def get_filtered_data(conditions):
# 获取满足所有筛选条件的股票数据
df = get_stock_data('000300.XSHG')
df = df[df['Stock Code'].isin(conditions)]
return df
def get_top_gainers_dividend_payout_ratio():
# 获取今日增仓占比前50的股票代码,且2019年分红比例大于25
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


