问财量化选股策略逻辑
该选股策略选取元宇宙行业中,前日实际换手率在3%至28%之间,并且2021年营收/2018年营收大于1.1的个股进行投资。
选股逻辑分析
该选股策略主要围绕以下条件进行选股:
- 选取元宇宙行业中的个股,因为元宇宙领域具有较高的成长性和隐含收益;
- 前日实际换手率在3%至28%之间,可能表示该个股存在着资金流动性和市场认可度;
- 计算2021年营收/2018年营收,如果大于1.1,则表示该公司的业绩增长较为稳健。
综合以上条件,选择符合条件的个股进行投资。
有何风险?
- 该选股策略可能会错过一些长期投资价值较高的个股;
- 过于关注某一年的财务数据,可能会造成选择失误。
如何优化?
- 加入更多的筛选条件,例如利润增长率、PEG等指标,综合判断个股的投资价值;
- 考虑采用多年数据的平均值或增长率等更全面的财务分析指标;
- 增强风险控制意识,例如采用止损或定期清仓等操作。
最终的选股逻辑
该选股策略选取元宇宙行业中,前日实际换手率在3%至28%之间,并且2021年营收/2018年营收大于1.1的个股进行投资。
同花顺指标公式代码参考
- 元宇宙行情:GNBK("gnxq");
- 前日实际换手率:TURNOVER(2);
- 2021年营收:ANNUAL(2021, 'operating_income');
- 2018年营收:ANNUAL(2018, 'operating_income');
选股公式:GNBK("gnxq") AND TURNOVER(2)>3 AND TURNOVER(2)<28 AND ANNUAL(2021, 'operating_income')/ANNUAL(2018, 'operating_income')>1.1
Python代码参考
import pandas as pd
import tushare as ts
import yfinance as yf
yf.pdr_override()
def stock_selector():
ts.set_token('your_token')
pro = ts.pro_api()
data1 = pro.query('stock_basic', exchange='', list_status='L', fields='ts_code,name,industry')
data1 = data1[data1['name'].str.contains('元宇宙')]
data2 = pro.fina_indicator(ts_code=list(data1['ts_code']), start_date='20180101', end_date='20211231')
data2['2021revenue'] = data2['operating_revenue'][(data2['end_date'] == '20211231')]
data2['2018revenue'] = data2['operating_revenue'][(data2['end_date'] == '20181231')]
data2['revenue_growth'] = data2['2021revenue'] / data2['2018revenue']
data3 = pd.merge(data1, data2, on='ts_code', how='left')
data3 = data3[(data3['revenue_growth'] > 1.1)]
start_date = str((pd.Timestamp.now() - pd.Timedelta(days=60)).date())
end_date = str(pd.Timestamp.now().date())
data4 = yf.download(list(data3['ts_code']), start=start_date, end=end_date, interval='15m', group_by='ticker', auto_adjust=False)
data4.reset_index(inplace=True)
data4 = data4.groupby(by='level_0', as_index=False).apply(lambda x:x.iloc[-2:, :])
data4.set_index(['level_0', 'Datetime'], inplace=True)
data4[['CLOSE_HIGH']] = data4[['Adj Close']].groupby(by='level_0').apply(lambda x:x.rolling(2, min_periods=2).max())
data4.rename(columns={'level_0': 'ts_code', 'Adj Close': 'CLOSE'}, inplace=True)
data3.set_index(['ts_code'], inplace=True)
data4 = pd.merge(data3, data4, left_index=True, right_index=True, how='inner')
data4 = data4[data4['CLOSE'] == data4['CLOSE_HIGH']]
data4.reset_index(inplace=True)
data5 = data4.loc[:, ['ts_code', 'name', 'industry']]
return data5
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


