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

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

量化交易实战26 - 热点轮动策略(二)用热点话题构建策略模型,附完整代码

时间:2025-10-14 15:22|来源:369期货网|作者:369期货网|点击:
在写之前,说一下LDA模型,LDA模型是一种无监督学习模型,这种无监督的主题往往很难保证结果是有意义的,可解释的,也没有客观的标准去评估结果。

用我们的话来说就是:很玄学。
所以我这边就不单独介绍了,看了下文后确实感兴趣的朋友可以去了解。


一、加载数据并进行分词
首先要抓到热点,这个热点可以是自己总结的,或者在不同的平台抓取的,我这边用的新闻联播:
图片
运行结果:
图片
二、使用LDA进行话题建模

中间有停用次处理就不展示了。

图片
运行结果:
图片

最后就可以根据这些标签进行选股了。

最后附上完整代码:

    # 1. 导入库from jqdata import *import pandas as pdimport jiebafrom sklearn.decomposition import LatentDirichletAllocationfrom sklearn.feature_extraction.text import CountVectorizerimport datetime# 2. 取当天新闻,只要前 5 条yesterday = (datetime.date.today() - datetime.timedelta(days=1)).strftime('%Y-%m-%d')q = query(finance.CCTV_NEWS.day,          finance.CCTV_NEWS.content).filter(    finance.CCTV_NEWS.day == yesterday).limit(5)news_jq = finance.run_query(q)news = pd.DataFrame({'content': news_jq['content'].tolist()})print(news.head())# 3. 加载停用词(在线版,无需本地文件)import urllib.request, tempfilewith tempfile.NamedTemporaryFile(mode='w+', encoding='utf-8') as f:    urllib.request.urlretrieve(        'https://raw.githubusercontent.com/goto456/stopwords/master/cn_stopwords.txt',        f.name    )    stopwords = set(line.strip() for line in f)# 4. 分词 + 去停用词tokens = []for text in news['content']:    words = [w for w in jieba.cut(text) if w not in stopwords and len(w) > 1]    tokens.append(' '.join(words))# 5. 添加到 DataFramenews['tokens'] = tokens# 6. 训练 LDAvec = CountVectorizer()X = vec.fit_transform(news['tokens'])lda = LatentDirichletAllocation(n_components=3, random_state=42)lda.fit(X)# 7. 打印主题def print_top_words(model, feature_names, n_top=8):    for idx, topic in enumerate(model.components_):        top = [feature_names[i] for i in topic.argsort()[-n_top:][::-1]]        print(f'主题 {idx+1}: {" / ".join(top)}')print_top_words(lda, vec.get_feature_names())

    需要量化软件看这篇文章:

    耗时一个月,找遍了全市场,总算给大家找到了两款免费的量化软件!!!一款适合新手,一款适合老手!!!!

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



    编辑推荐

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

    蜀ICP备2022023994号