ChatGPT炒股:通过关联交易来预测上市公司业绩

97 阅读7分钟

一些上市公司或者新三板公司会披露下一年度的关联交易预计。

如果预计关联交易金额大幅提升,且关联客户占公司营收和利润比例较高,那说明公司下一年度业绩有望大幅增加。

当然,这也只是一个粗略估计,实际发生金额未必就如企业预期。

比如苏奥传感,2022年预计关联交易发生金额1600万,实际发生1084万。所以,这个只能作为一个线索,切不可作为拐点发生的证据。

新三板上有几千家公司,2023年关联交易预计的公告有几百份,如果能够全部下载然后整理到一个表格中,进行排序,就可以一目了然的知道哪些企业的关联交易预计会大幅增长了。 借助ChatGPT,可以轻松实现这个功能。

首先,打开挂牌公司公告,网址是:www.neeq.com.cn/disclosure/…

输入:2023年日常性关联交易,然后点击查询,

可以看到requestURL是:www.neeq.com.cn/disclosureI…

Content-Type是:application/x-www-form-urlencoded; charset=UTF-8

说明这个页面的数据都是动态生成的,用常规静态页面的方法是无法获取到的。

点击response,可以看到动态生成的内容,是json格式

点击payload,可以看到这些动态参数是通过form data方式传递给网站服务器的

要获取这个网站内容,要告诉chatgpt网站的Request URL、Request headers、formdata 这些信息,然后发送post请求来获取网址数据,可以在ChatGPT里面输入提示词如下:

一个动态网页,其相关信息如下:

Request URL:

www.neeq.com.cn/disclosureI…

Request headers

Accept:

text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, /; q=0.01

Accept-Encoding:

gzip, deflate, br

Accept-Language:

zh-CN,zh;q=0.9,en;q=0.8

Connection:

keep-alive

Content-Length:

538

Content-Type:

application/x-www-form-urlencoded; charset=UTF-8

Host:

www.neeq.com.cn

Origin:

www.neeq.com.cn

Referer:

www.neeq.com.cn/disclosure/…

Sec-Ch-Ua:

"Google Chrome";v="113", "Chromium";v="113", "Not-A.Brand";v="24"

Sec-Ch-Ua-Mobile:

?0

Sec-Ch-Ua-Platform:

"Windows"

Sec-Fetch-Dest:

empty

Sec-Fetch-Mode:

cors

Sec-Fetch-Site:

same-origin

User-Agent:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36

X-Requested-With:

XMLHttpRequest

formdata = 'noticeType%5B%5D=5&disclosureType%5B%5D=5&disclosureSubtype%5B%5D=&page=&companyCd=&isNewThree=1&keyword=2023+%E5%B9%B4%E6%97%A5%E5%B8%B8%E6%80%A7%E5%85%B3%E8%81%94%E4%BA%A4%E6%98%93&xxfcbj%5B%5D=3&hyType%5B%5D=&needFields%5B%5D=companyCd&needFields%5B%5D=companyName&needFields%5B%5D=disclosureTitle&needFields%5B%5D=disclosurePostTitle&needFields%5B%5D=destFilePath&needFields%5B%5D=publishDate&needFields%5B%5D=xxfcbj&needFields%5B%5D=destFilePath&needFields%5B%5D=fileExt&needFields%5B%5D=xxzrlx&siteId=1&sortfield=xxssdq&sorttype=asc'

写一段Python代码,发送POST请求,获取这个网页的数据

程序运行后,返回这样的字符串,其中有一段json数据,股票公告下载的地址就在json数据中。

要用程序批量下载PDF,需要首先要去掉开头和结尾的字符串,得到其中的json数据,然后从json数据中提取destFilePath(PDF文件下载地址)和disclosureTitle(PDF文件标题)内容,然后让程序自动下载就好了。

经过多次尝试,构建ChatGPT的提示词如下:

从一个动态网页获取了网页数据response.text,

去掉开头的字符串:jQuery331_1685491901352([{"listInfo":{"content":[,去掉结尾的字符串:,"firstPage":true,"lastPage":false,"number":0,"numberOfElements":20,"size":20,"sort":null,"totalElements":796,"totalPages":40},"status":0}]) ,只保留中间的json内容;

然后从json文件中提取出所有的destFilePath和disclosureTitle内容;

在所有的destFilePath内容前加上 www.neeq.com.cn,构建出一个PDF文件下载地址,以disclosureTitle作为PDF文件标题名,注意:要用正则表达式将文件名中[]、:这样的特殊符号替换为下划线;

下载所有PDF文件,保存到电脑d盘“关联交易”文件夹

注意:需要在代码中添加应对反爬虫的一些措施,比如添加请求头、延迟请求等

然后,再通过response_text = response.text 把两段代码连接起来。就构成一个完整的下载程序。

运行程序,成功下载所有PDF文件。

接下来,要把这些公告文件里面的表格数据提取出来。打开这些公告,所有关联交易的数据在PDF文件的第一页。

打开ChatGPT(一定要用GPT4,编程能力很强。相比之下,gpt3.5弱太多了),输入提示词如下:

d盘有一个文件夹:guanlianjiaoyi,里面有很多pdf文件;你的任务是写一个Python程序,批量提取PDF文件中表格信息到excel文件,具体步骤:

1、打开一个PDF文件;

2、用pdfplumber提取第一页的表格信息;

3、以原有的PDF文件名作为excel表格文件标题,保存刚才提取的表格信息到excel文件,放到电脑d盘文件夹excel中

然后在命令行提示符里面安装pdfplumber:pip install pdfplumber

pdfplumber是一个Python库,用来读取和写入PDF文件。ChatGPT一会就生成了代码,复制到Visual Studio Code中,运行,很快就完成了。

打开其中的excel表检查看看,内容提取正确。

最后,要把所有这些表格里面的内容全部合并到一张表格里面。

在ChatGPT中选中GPT4,输入如下提示词:

d盘有一个文件夹:excel,里面有很多excel文件;你的任务是写一个Python程序,批量合并excel表格中的内容到一个新的excel表格中,下面是一步步的操作:

1、在d盘newexcel文件夹里面新建一个excel表格,表格标题为:newexcel

2、打开d盘excel文件中第1个excel文件;

获取excel文件名,写入newexcel表格中的A2单元格;

获取excel文件中的C2单元格内容, 写入newexcel表格中的B2单元格,表头”为预计2023年购买原材料发生金额”;

获取excel文件中的D2单元格内容, 写入newexcel表格中的C2单元格,表头”2022年实际发生金额”;

获取excel文件中的C3单元格内容, 写入newexcel表格中的D2单元格,表头”2023出售产品”;

获取excel文件中的D3单元格内容, 写入newexcel表格中的E2单元格,表头”2022出售产品”;

获取excel文件中的C4单元格内容, 写入newexcel表格中的F2单元格,表头”2023委托关联人销售”;

获取excel文件中的D4单元格内容, 写入newexcel表格中的G2单元格,表头”2022委托关联人销售”;

获取excel文件中的C5单元格内容, 写入newexcel表格中的H2单元格,表头”2023接受委托关联人销售”;

获取excel文件中的D5单元格内容, 写入newexcel表格中的I2单元格,表头”2022接受委托关联人销售”;

3、打开d盘excel文件中第2个excel文件;

获取excel文件名,写入newexcel表格中的A3单元格;

获取excel文件中的C2单元格内容, 写入newexcel表格中的B3单元格;

获取excel文件中的D2单元格内容, 写入newexcel表格中的C3单元格;

获取excel文件中的C3单元格内容, 写入newexcel表格中的D3单元格;

获取excel文件中的D3单元格内容, 写入newexcel表格中的E3单元格;

获取excel文件中的C4单元格内容, 写入newexcel表格中的F3单元格;

获取excel文件中的D4单元格内容, 写入newexcel表格中的G3单元格;

获取excel文件中的C5单元格内容, 写入newexcel表格中的H3单元格;

获取excel文件中的D5单元格内容, 写入newexcel表格中的I3单元格;

4、重复以上步骤,直到所有excel文件内容都已经提取到newexcel表格中

注意:每个步骤都要输出信息

运行后出错,把出错信息复制,然后发给ChatGPT

ChatGPT很快发现了问题所在:我使用了openpyxl库中的column_index_from_string函数来将列字母转换为列索引(整数)这将解决之前的类型错误问题。请再次尝试运行此脚本。。

修复后,程序运行成功,很快所有数据都提取到excel表格中了。

接下来就可以在表格中进行关联交易的数据分析了。

那些相比于上年关联交易金额大幅上升的,就非常值得关注。