用Rword2vec告诉你券商的推荐买股票是否靠谱

      最近国内A股走势不错,又有听到周边有不少同事打算入市了。那么咱们IT人员如果相关金融知识不多,又不想买基金交管费的话,跟着券商的推荐买行不行呢?

    如果是零基础的朋友请参考https://blog.csdn.net/BEYONDMA/article/details/87902276文中的前四章节,装好R语言、RTOOLS、JAVA环境和selenmium,做好前期准备工作。

      接下来我们就要开始抓取券商荐股报告的工作了,特别提示为了合法爬取数据,笔者目前全部使用浏览器自动化的操作方式来操作,避免由程序框架直接爬取带来的风险,毕竟所有国内券商推荐报告的量每天最多也就是几百篇的量级,再算上行业的报告也不过千,这是没什么去冒险的,具体代码如下:


library(rvest)
library(httr)
library(RSelenium)
remDr<-remoteDriver(browserName = "chrome",remoteServerAddr = "localhost",port = 4444L)
remDr$open()
#以国泰君安为例url填写为国泰君安地址
url='http://www.gtja.com/content/default/info/jpyj/hyyj.html'
remDr$navigate(url)
#读取网页信息
webpage <- read_html(remDr$getPageSource()[[1]][1])
#找到标题元素的xpath,券商股票的推荐页都很简单,直接在浏览器中点F12,选择element选项即可找到。
xpath='/html/body/div[3]/div/div[2]/div[1]/div/div/div/ul/li'
pMax=20
nodesets=html_nodes(webpage,xpath=xpath)
#一般来说title当中都有股票的名称及代码,通过笔者研究回测,个股的推荐意义不大,所以本文以行业研究为例,其中并没有包含具体股票信息并不影响其参考价值
title=vector(mode="character",length(nodesets)*pMax)
contents=vector(mode="character",length(nodesets)*pMax)
#以事件驱动回测必须要获取具体的推荐日期
recoDate=vector(mode='character',length(nodesets))
xpathtmp='/html/body/div[3]/div/div[2]/div[1]/div/div/div/ul/li['
#清洗数据使用的正则表达式
regxcon="[^(\u4e00-\u9fa5|\uff1f|\uff01|\uff0c|\u3001|\uff1b|\uff1a|\u201c|\u201d|\u2018|\u2019|\uff08|\uff09|\u300a|\u300b|\u3008|\u3009|\u3010|\u3011|\u300e|\u300f|\u300c|\u300d|\ufe43|\ufe44|\u3014|\u3015|\u2026|\u2014|\uff5e|\ufe4f|\uffe5|Q|0|1|2|3|9|%|.|,)]+"
pNow=0
while(T)
{for(i in 1:length(nodesets)){xpath=paste(xpathtmp,as.character(i),']/a',sep='')xnode=html_node(webpage,xpath=xpath)#清洗数据使用的正则表达式title[i+(pNow*10)]=html_text(xnode)#找到研报文本的URL  contentUrl=paste('www.gtja.com',html_attr(xnode,'href'),sep='')#获取推荐日期,此例中的推荐日期恰巧是url后缀
recoDate[i+(pNow*10)]=substring(contentUrl,(nchar(contentUrl)-12),(nchar(contentUrl)-5))#打开研报文本的网页
contentWeb=read_html(GET(contentUrl))#找到正文对应的元素,并选中contentPath='/html/body/div[4]/div'nodeContent=html_node(contentWeb,xpath=contentPath)#抓取研报文本 content=html_text(nodeContent)contents[i+(pNow*10)]=gsub(pattern=regxcon,replacement='',content,fixed=F)}#自动点击下一页按钮nextElement=remDr$findElement(using="xpath",value='/html/body/div[3]/div/div[2]/div[1]/div/div/div/div/ul/li[4]')nextElement$clickElement()Sys.sleep(1)pNow=pNow+1webpage <- read_html(remDr$getPageSource()[[1]][1])if(pNow>pMax){break}}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

代码运行的效果如下:看浏览器自动点击下一页也是种享受吧:0

抓取其它券商的代码类似不再一一说明了。有了数据就可以着手分析了

一、这里先复习一下文本分词和词云制作的知识点https://blog.csdn.net/BEYONDMA/article/details/85400923。

咱们先要把所有的推荐文本进行分词,

seg=qseg[contents]
cat(seg,file='wor2vec.txt')
library(wordcloud2)
seg <- seg[nchar(seg)>1] #去除字符长度小于2的词
seg <- sort(seg, decreasing = TRUE)[1:40]#取出现最多的40个词做词云即可
seg <- table(seg)#转换类型
wordcloud2(seg, size = 1, shape = 'circle',color = 'random-light',fontFamily = "微软雅黑")

 

词云大概是下面这个效果。

二、当然这里还可以再加一个知识点,那就是https://blog.csdn.net/BEYONDMA/article/details/85345831参考此文,将分词后各地方出现的频率将热力图做出来。当然这个与本文关系不大,不多说了。

三、分词之后就可以做回测了,首先在接下来就可以注册一个tushare帐号https://tushare.pro/,根据官方指引拿到你的token参考https://tushare.pro/register?reg=229559

install.packages('Tushare')
library(Tushare)

api <- Tushare::pro_api(token = '你的token')

api(api_name = 'stock_basic')
依据股票列表和推荐的股票进行比对,获取股票代码。然后可以参考https://blog.csdn.net/BEYONDMA/article/details/88081261

四、接下来咱们要重点说word2vec了,其实R语言是支持word2vec的,只要读者按照之前的步骤装好Rtools,那么执行以下语句就可以安装rword2vec包了。

library('devtools')

install_github('mukul13/rword2vec')

library(rword2vec)
model<-word2vec(layer1_size=200,train_file='d:/zhengwen.txt',save_vocab_file='d:/beyondma.txt',binary=1,cbow=0,alpha=0,output_file='d:/beyondma.bin',window=5,sample=0.0001,min_count=6,num_threads=2)
   

     以上是word2vec的训练模型,这个比较重要我详细解释下,简单来说word2vec其实是词转变成向量的算法,本质上他有两个约束条件,一是要求常在一起出现的词(键盘和鼠标)距离要近,且词与词的相互关系要尽量保持,比如丈夫和妻子的距离,尽量和国王和王后的距离一样,他其实是用一个固定长度的窗口,逐个去学习整个语料库,并生成每个词的词向量。

     重要参数解释如下:

layer1_size是词向量的维度一般是300,在这里我们这个专门的语料库不需要这么长的维度,200就能表示清楚了。

train_file:也就是我们要让机器学习的研报的所有文本。

save_vocab_file:生成的词频文件

window:窗口的大小

    在训练完成之后,你就可以看看这些文本中,距离比较近的词有哪些。

 

dist<-distance(file_name='d:/beyondma.bin',search_word='推荐',num=10)

dist

        word              dist
1  强烈推荐 0.991746842861176
2      买入 0.983411431312561
3      给予 0.982171237468719
4        维持 0.979804515838623
5      评级 0.977733969688416

#这里距离比较近其实就是我刚刚说的上面这些词会经常在一起出现。
ana=word_analogy(file_name="d:/beyondma.bin",search_words="推荐 维持 买入",num=10)

然后我们通过

bin_to_txt("beyondma.bin","beyondmavec.txt")

方法将词向量转为文本可读的方式。打开beyondmavec.txt我们可以看到rword2vec会把每个词向量存在这个文本中,读取每个词所对应向量后可以轻松做文本分类。

    共享一下目前笔者的回测成果,具体的个股研报价值十分有限,但是某些行业的研报还是很有价值的,比如安信证券发表在1月10日的银行业研究《银行行业深度分析:宽信用浪潮裹挟下的民企与商业银行》就明确指出“未来修复的难点,是如何在保证依法合规经营的前提下,逐渐恢复影子银行的融资功能。可行的措施包括:适当延长资管新规过渡期、对理财子公司投资非标的可操作性作出进一步优化等”这相当于先于市场一个月的时间指出,国家要恢复影子银行的功能。此类文章的特点就是与同期推荐报告的相关度不高,但是与后期的推荐报告相关度就高了。如何发现此类推荐报告也是笔者的研究方向。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/47499.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

音频合并的软件有哪些?这几个软件分享给你

我们平时听过的歌曲串烧&#xff0c;是由多首歌曲拼接起来的。如果大家不想在听音乐时手动切换歌曲的话&#xff0c;不妨试试使用软件&#xff0c;将歌曲剪辑拼接起来。但是作为剪辑小白&#xff0c;不知道音频拼接软件哪个好用。没关系&#xff0c;下面给你们分享几款手残党也…

语音合成(speech synthesis)方向六:歌唱合成(singing voice synthesis)

声明&#xff1a;工作以来主要从事TTS工作&#xff0c;工程算法都有涉及&#xff0c;平时看些文章做些笔记。文章中难免存在错误的地方&#xff0c;还望大家海涵。平时搜集一些资料&#xff0c;方便查阅学习&#xff1a;TTS 论文列表 低调奋进 TTS 开源数据 低调奋进。如转载&a…

如何进行音频合并?很简单,只需三步骤

大家有没有经常在短视频上刷到一些歌曲串烧&#xff0c;他们将很多歌曲结合在一起居然毫无违和感&#xff0c;但其实像这样的歌曲合并呀&#xff0c;或者说是音频合并到一块的操作其实是非常简单的&#xff0c;仅需几分钟就能轻松上手&#xff0c;你们也可以像那些短视频的up主…

计算机弹音乐百度百科,电子音乐合成器

电子音乐合成器又简称电子合成器&#xff0c;是由电子设备代替乐队进行演奏和进行自动化编曲的一种电子化设备。用合成器制作声音的方法很多&#xff0c;起先是把若干个正弦波振荡器连在一起&#xff0c;改变各自的频率、振幅&#xff0c;就可以产生不同音色。后来&#xff0c;…

【音乐合成】基于FPGA的音乐合成系统verilog实现

1.软件版本 matlab2013b&#xff0c;quartusii12.1 2.系统FPGA实现 2.1频率选择 音乐的合成主要有几种频率&#xff0c;这里设置如下几组频率&#xff0c;在实际情况下&#xff0c;可以进行扩充。 Fc 261.63; %C Fd 293.66; %D Fe 329.63; %E Ff 349.23; %F Fg 3…

怎么把两个mp3音频合成一个?

怎么把两个mp3音频合成一个&#xff1f;如何合并两个MP3文件为一个音乐文件&#xff1f;两个MP3格式如何合并&#xff0c;两个MP3格式合并方法&#xff1f;这是我最近收到的最多的问题了&#xff0c;而且问这些的多是我们的新手小白&#xff0c;因为专业的人不需要问&#xff0…

java 合并两个音频_如何利用音乐合成软件将多段音频合并为一段?快速合并音频的方法...

在之前的文章中小编介绍了使用音乐剪切工具在一个音频文件中分割出多个音频的片段的方法&#xff0c;然后有小伙伴就问如何利用音乐合成软件将多段音频合并为一段&#xff1f;其实合并音频的方法和分割音频的方法大体上是相同的&#xff0c;如果还有不会编辑音频的小伙伴可以跟…

计算机合成音乐的交换标准,音乐合成器

简介 音乐合成器(Musical Synthesizer) 用来产生并修改正弦波形并叠加&#xff0c;然后通过声音产生器和扬声器发出特定的声音。泛音的合成决定声音音质。 C机声卡上的音乐合成器能合成音乐&#xff0c;可模仿许多乐器的演奏效果&#xff0c;音乐合成器的功能是将MIDI消息转换为…

音乐合成软件哪个好用?快把这些软件收好

小伙伴们平时有听过一些由很多歌曲串在一起的歌吗&#xff1f;一般这种歌我们都称为歌曲串烧&#xff0c;有些歌曲串的好的话&#xff0c;会给人在听感上别有一番体验。听到这些歌后&#xff0c;会不会激发起你们把自己喜欢的歌串在一起的想法呢&#xff1f;其实歌曲串烧很容易…

不懂怎么写辞职报告的看这里,教你们一个办法

今天&#xff0c;我有一个朋友告诉我说&#xff0c;他要辞职了&#xff0c;要写辞职报告&#xff0c;不懂怎么去措辞。然后我突然就想到一个办法&#xff0c;给他看之后&#xff0c;他直呼“牛x”&#xff01;&#xff01;&#xff01; 所以&#xff0c;辞职报告不知道怎么写的…

GPT-3杀入漫威宇宙!二次元小伙用它生成蜘蛛侠续集

转自&#xff1a;新智元 既然GPT-3能循理路精炼总结语料文本&#xff0c;写诗可以、写rap歌词可以&#xff0c;那么照猫画虎写小剧本&#xff0c;也不是不可以的……吧&#xff1f; 其实真是可以的&#xff0c;而且有人已经如此操作了。 AI新玩法&#xff1a;生成蜘蛛侠电影剧本…

马斯克点赞!DeepMind神AI编剧,一句话生成几万字剧本

视学算法报道 编辑&#xff1a;David 昕朋 【导读】当够了画家、剪辑和在线客服&#xff0c;人工智能的接下来要征服的&#xff0c;是编剧。DeepMind推出的AI写作模型Dramatron&#xff0c;只需一句故事梗概&#xff0c;就能创作万字剧本&#xff01; 你有灵光乍现的时刻吗&a…

景区旅游剧本杀体验打卡小程序开发

景区旅游剧本杀体验打卡软件的主要功能包括&#xff1a; 景区介绍&#xff1a;提供详细的景区介绍和地图信息&#xff0c;使用户能够更好地了解景区的背景、特色和各个景点的位置。 任务列表&#xff1a;提供任务列表和任务说明&#xff0c;让用户能够了解每个任务的目…

旅游景区AR剧本杀打卡软件

旅游景区AR剧本杀打卡软件的主要功能包括&#xff1a; 景区介绍&#xff1a;提供详细的景区介绍和地图信息&#xff0c;使用户能够更好地了解景区的背景、特色和各个景点的位置。 AR技术&#xff1a;使用AR技术实现虚拟现实场景和任务的展示&#xff0c;增强用户的游戏…

浅谈数字图书馆智能推荐系统的发展趋势

利用citespace对近十年来的相关中英文文献关键词进行突现分析&#xff0c;结果分别如下图所示&#xff1a; (y[0,1]0.6, Minimum Duration1) (y[0,1]0.8, Minimum Duration1) 关键词突现是指在短时间内发表文章中出现频次极高的关键词&#xff0c;从关键词突现开始至突现结束形…

chatgpt赋能Python-python_chm

Python chm&#xff1a;为你的Python学习之旅提供便利 如果你正在学习Python编程语言&#xff0c;你可能会遇到需要参考文档的情况&#xff0c;这时候&#xff0c;Python chm可能就是你的救星。Python chm是Python的 Windows 帮助文件格式&#xff0c;通常用于Windows上的Pyth…

chatgpt赋能python:Python实现数字颠倒技巧

Python实现数字颠倒技巧 在日常的程序开发中&#xff0c;数字颠倒&#xff08;reverse integer&#xff09;是一个常见而又实用的技巧&#xff0c;特别是在数据处理和算法设计方面。Python语言作为一门优秀的编程语言&#xff0c;自然也提供了多种实现数字颠倒的方案。本文主要…

chatgpt赋能Python-python_1_4

Python 1%4&#xff1a;提高Python编程效率的秘诀 Python是一种高级编程语言&#xff0c;因其简单易学、充满灵活性和适用性被广泛应用于各种领域。但是随着Python项目的复杂度增加&#xff0c;代码变得越来越长、难以维护&#xff0c;这会极大地影响开发效率。那么&#xff0…

chatgpt赋能Python-pythontutor怎么用

PythonTutor是什么&#xff1f;方法和用途 什么是PythonTutor&#xff1f; PythonTutor是一种在线程序可视化工具&#xff0c;旨在帮助初学者和专业人士更好地理解Python程序的工作原理。该工具通过交互式地显示变量、堆栈和函数的值来展示Python代码的执行过程。 PythonTut…

chatgpt赋能Python-pythonmd5校验

Python MD5校验 在数字信息时代&#xff0c;数据安全显然是非常重要的。在传输和存储数据的过程中&#xff0c;我们通常会使用MD5校验来验证数据的完整性和准确性。Python是一种非常流行的编程语言&#xff0c;因其简单易用、灵活性强、扩展性好而备受欢迎。 在本文中&#x…