行业案例库 3 months ago 152 Views 11 Comments

如何利用DeepSeek帮我做金融理财?

AI中国
AI中国

Published 7932 Articles


概述

AI 大模型火了几年了,不知不觉中,已经普及到千家万户中,常见的应用场景有:
  • 内容创作:比如通过你的名字给你作一首诗。比如给你生成吸引人的广告文案。

  • 聊天机器人:比如客服答疑,比如英语口语陪练。

  • 逻辑推理:比如辅助医生分析病例、生成诊断建议。比如帮你做一道数学题目。
大部分的交互方式,都是通过自然语言和大模型进行对话,由人主动发起,如下:

也有许多的业务场景,不是由人主动发起的,通过定时任务在后台不停运行,也可以结合大模型做增强,场景如下:
  • 风险监控:定时监控系统指标,由大模型进行智能分析,发现潜在的风险。

  • 数据分析:定时采集在线金融数据,由大模型进行智能分析,给出投资者建议。
本篇文章将介绍如何搭建一套基于 XXL-JOB + Deepseek 的定时数据分析系统,帮你做一个智能的金融理财助手。XXL-JOB[1] 是一个国内流行的开源分布式任务调度平台,简单易用,并且功能丰富。支持单机任务、分布式任务的定时调度,可以做到秒级别调度。有多种路由策略、堵塞处理策略可供选择。提供任务的报警监控、手动运维、监控大盘等能力。

如何搭建系统


搭建Deepseek

大模型选择Deepseek,出于以下考虑:
  • Deepseek以推理能力出圈,适合做数据分析。并且Deepseek的母公司幻方量化就是做量化交易的,我们相信Deepseek在金融分析上有着显著的优势。
  • Deepseek开源并且很轻量,可以很方便部署起来。
也可以选择阿里云最新开源的QwQ模型,推理能力比肩Deepseek-r1,在做复杂数据分析上同样能力出众。以下图表展示了QwQ-32B 与其他领先模型在数学推理、编程能力和通用能力上的对比:

方案一:本地部署
本地部署Deepseek、QwQ或者其他模型,步骤都是差不多的,下面以Deepseek为例:
  1. 安装ollama:https://ollama.com/download
  1. 安装Deepseek r1模型:r1模型专注于复杂逻辑推理,更适合做金融数据分析
根据机器规格大小选择一个模型,比如我的电脑有16G内存,选择7b,就在命令行输入如下命令安装:
不同模型对应的硬件要求如下表:
模型名称
模型大小
显存
内存
deepseek-r1:1.5b
1.1GB
4GB+
8GB+
deepseek-r1:7b
4.7GB
8GB+
16GB+
deepseek-r1:8b
4.9GB
10GB+
18GB+
deepseek-r1:14b
9.0GB
16GB+
32GB+
deepseek-r1:32b
20GB
24GB+
64GB+
  1. 部署完成后,我们通过api进行测试(使用兼容openai的api,端口默认是11434),方便后续写代码。
方案二:使用云产品
我们也可以直接使用云产品,以阿里云百炼[2]为例,只需要开通即可使用,并且有海量的免费额度。使用云产品的话还有个好处,就是可以随时切换模型,体验不同模型的优劣。


搭建XXL-JOB

使用XXL-JOB有如下好处:
  • 可以定时发起AI任务请求。

  • 可以把prompt和返回格式放在任务参数上,动态修改。

  • 可以使用广播分片任务,把大任务拆分成多个小任务,加快AI任务运行速度。

  • 可以使用任务依赖编排,构建一个AI数据分析的流程。

方案一:本地部署

XXL-JOB 部署很简单,详细的步骤可以参考官网[3],大概步骤如下:
  1. 准备一个数据库并初始化数据库表结构
  1. 把代码导入到IDEA中,配置xxl-job-admin的配置文件
  1. 运行XxlJobAdminApplication这个类,然后浏览器输入 http://127.0.0.1:8080/xxl-job-admin 就可以登录了(密码默认是 admin/123456)

方案二:使用云产品
我们也可以使用托管XXL-JOB的云产品,比如阿里云MSE产品任务调度XXL-JOB版[4],一键部署,并且可以免费试用[5]。

定时推送财经新闻

接下来先以定时推送财经新闻这个demo来热热身,流程图如下

  1. XXLJOB-Admin 通过定时调度或者手动触发,配置好对应任务的prompt信息,运行某个任务执行。
  2. 先去互联网拉取财经新闻,可以简单的做一下过滤。
  3. 把网页内容丢给Deepseek,让他提炼最热门的N个新闻。
下面以使用阿里云百炼托管的deepseek-r1为例,获取新浪财经的热点新闻,通过XXL-JOB配置prompt如下:
实现代码参考如下(该demo也集成在了云产品快速体验示例[6]中):
@Componentpublic class AIJob {
   @Value("${dashscope.api.key}")    private String apiKey;
   @XxlJob(value = "sinaNews")    public ReturnT sinaNews() throws Exception {        String url = "https://finance.sina.com.cn/topnews/";        String model = "deepseek-r1";        // prompt        String jobParam = XxlJobContext.getXxlJobContext().getJobParam();                ReturnT rtn = ReturnT.SUCCESS;        Document document = Jsoup.connect(url).get();        // 定位到“汇总榜”部分        Element summaryBlock = document.selectFirst("div.lbti:has(h2:containsOwn(汇总榜))");        if (summaryBlock != null) {            // 找到该块中的[removed]标签            Element scriptTag = summaryBlock.parent().selectFirst("script[src]");            if (scriptTag != null) {                // 提取src属性值        String srcValue = scriptTag.attr("src");        HttpResponse httpResponse = Unirest.get(srcValue).asString();        String news = httpResponse.getBody();        Map bodyMap = new HashMap<>();        bodyMap.put("model", model);        List> messagesList = new ArrayList<>();        Map message = new HashMap<>();        message.put("role", "system");        message.put("content", jobParam);        messagesList.add(message);        message = new HashMap<>();        message.put("role", "user");        message.put("content", "这是今天的财经新闻,帮我按规则解析:" + news );        messagesList.add(message);        bodyMap.put("messages", messagesList);        String bodyJson = new Gson().toJson(bodyMap);        Unirest.setTimeouts(120000, 120000); //加大timeout,防止超时退出        HttpResponse jsonHttpResponse =            Unirest.post("https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions")                .header("Authorization", "Bearer " + apiKey)                .header("Content-Type", "application/json")                .body(bodyJson)                .asJson();        OpenAIResponse openAIResponse =            new Gson().fromJson(jsonHttpResponse.getBody().getObject().toString(), OpenAIResponse.class);        rtn.setContent(openAIResponse.getChoices().get(0).getMessage().getContent());        XxlJobHelper.log(openAIResponse.getChoices().get(0).getMessage().getContent());                //TODO 通过钉钉发送分析总结        sendMessage(openAIResponse);            } else {                rtn.setCode(ReturnT.FAIL_CODE);                rtn.setMsg("未找到汇总榜的[removed]标签");            }        } else {            rtn.setCode(ReturnT.FAIL_CODE);            rtn.setMsg("未找到汇总榜部分");        }        return rtn;    }
   private void sendMessage(OpenAIResponse message){        //TODO    }}
手动运行一次任务,收到钉钉通知如下:

定时做金融数据分析

在上面一个例子中,我们只拉取了新浪财经的新闻,如果想准实时拉取国内外金融新闻和数据,快速做出决策,一个单机任务的时效性肯定是不够的。我们可以使用XXL-JOB的广播分片任务,将大任务拆分成小任务,不同的小任务去拉取不同的数据。再通过XXL-JOB的任务编排能力组成一个流程,一步步去完成我们的任务。流程如下:

  1. 在XXL-JOB上新建3个任务,并建立依赖关系,拉取金融数据->数据分析->生成报告。其中拉取金融数据任务的路由策略是广播分片。
  2. 拉取金融数据任务开始执行的时候,通过广播分片派发多个子任务给不同的执行器,去获取各大国内外财经新闻和金融数据,把结果存储起来(比如数据库、Redis或者对象存储)。
  3. 数据分析任务开始执行的时候,去获取当前的金融数据,再调用Deepseek进行分析,将结果存储起来。
  4. 数据分析完,再通过报告生成任务,将分析完的数据生成一个报告或者报表,通过钉钉或者邮件推送给用户,进行投资建议。

总结

通过上面的示例,你是不是觉得在Deepseek的加持下,做金融分析变得如此简单,自己也可以做一个量化交易系统,实现财富自由?实际上真正的量化交易系统是非常复杂的,除了上面示例中的数据收集、数据清洗、数据分析步骤,还有策略回测、风险监控等模块,也可以使用这套架构实现智能化。
除了在金融领域做数据分析,其他任何领域有数据分析的需求,都可以基于这套架构做智能化,我相信 XXL-JOB + Deepseek 一定是你做数据分析的一大利器。

AI中国

AI中国

7932 Articles 1226682 Views 950300 Fans

评论 (11)

用户头像

DeepSeek真厉害,未来金融理财也可能靠它!

用户头像

这玩意儿太厉害了,感觉人类的控制权可能就要被它夺走!

用户头像

别太迷信,但这个想法确实挺有意思的,有想象力!

用户头像

DeepSeek,这名字也太有预感,金融也可能变得更疯狂!

用户头像

未来金融靠AI?说得通吗?感觉像科幻小说情节!

用户头像

这玩意儿太牛了,感觉人类的理财水平都要被它碾压!

用户头像

DeepSeek,这名字听起来就带点诡异,金融也跟着诡异了!

用户头像

感觉未来一切都会被算法操控,有点可怕!

用户头像

未来金融?呵呵,人类的理财都快被它取代了!

用户头像

简直是科技给资本家又多了一双眼睛!

睡觉动画