欢迎访问369期货网 369会员登录 注册

当前位置: 主页 > 期货量化

量化交易实战25 - 热点轮动策略(一)让机器读懂新闻,即抓热点,附完整代码

时间:2025-10-14 15:22|来源:369期货网|作者:369期货网|点击:
前言:说实话,写之前我还没想好怎么起标题。

学术一点的说法是,打算将新闻文本向量化,然后去构建策略模型。想了一下,这不就是所谓的热点轮动策略,就是现在大家常说的抓热点板块嘛。于是才有了这么一个直接的标题。
整体策略构建比较复杂,我这边分为三个部分讲解:
图片
新闻预处理就是用的上一章节的自然语言处理技术NLP,转成机器语言,最后话题建模,我这边用的LDA模型。
简单说一下思路,有兴趣的朋友可以看一下,策略的详细处理不进行讲解。
1、准备数据文档
    from jqdata import *import datetimeimport pandas as pd# 获取昨天的日期yesterday = (datetime.date.today() - datetime.timedelta(days=1)).strftime('%Y-%m-%d')# 构建查询对象q = query(finance.CCTV_NEWS).filter(    finance.CCTV_NEWS.day == yesterday)# 执行查询news = finance.run_query(q)# 查看前几行print(news.head())
    图片

    随便选取一个本文数据进行分词处理:

      import jiebaimport requests# 1. 提取第7条新闻正文(假设第3列是正文)text = news.iloc[7, 3]# 2. 清洗import retext = re.sub(r'\s+', '', text)text = re.sub(r'[^\u4e00-\u9fa5]', '', text)# 3. 分词words = jieba.lcut(text)# 4. 在线加载停用词表stopwords_url = 'https://raw.githubusercontent.com/goto456/stopwords/master/cn_stopwords.txt'stopwords = set(requests.get(stopwords_url).text.splitlines())# 5. 去停用词filtered_words = [w for w in words if w not in stopwords and len(w) > 1]# 6. 查看结果print(filtered_words)
      图片


      得到结果后,这边用两种方式演示一下将文本向量化。
      原理就不解释了,这部分能看懂就看,看不懂就当看了一下热闹,后面不会再加深演示了。
      图片大神用不上,新手看不懂。

      2、使用CountVectorizer将文本向量化

        clean_text = ' '.join(filtered_words)#  CountVectorizer 统计vect = CountVectorizer()X = vect.fit_transform([clean_text])# 读取文件内容with open('message.txt', encoding='utf-8') as f:    text = f.read()# 用之前训练好的 vect 转向量vectors = vect.transform([text])   # 注意:一定要包成列表# 查看结果print(vectors.toarray())


        图片


        这样过后,原始的新闻就被改成机器可以读懂的文本了。


        3、使用TfidfVectorizer将文本向量化

          from sklearn.feature_extraction.text import TfidfVectorizerwith open('message.txt', encoding='utf-8') as f:    vect_tf = TfidfVectorizer().fit_transform([f.read()])print(vect_tf.toarray()[0][:10])   # 前10维TF-IDF值


          图片


          【结果分析】从上述结果可以看到,与CountVectorizer不同的是,TfidfVectorizer 所进行的向量化结果并不是整数类型,而是浮点类型。

          原因是CountVectorizer是使用次数来进行向量转化的,而TfidfVectorizer是基于词频与逆向文档频率的乘积来实现向量转化的,因此结果会有这样的差别。

          注意:在文档个数不太多的情况下,使用CountVectorizer与TfidfVectorizer 进行向量转化,效果并没有太大区别。当文档个数较多时,推荐使用TfidfVectorizer 来进行操作。

          如果需要量化软件的,可以看一下这两个


          编辑推荐

          Copyright © 2024-2025 成都宁时科技有限公司 版权所有

          蜀ICP备2022023994号