用DeepSeek和XXL-JOB打造智能金融理财助手

本文介绍如何用 XXL-JOB + Deepseek 搭建定时数据分析系统,变身智能金融理财助手,实现数据洞察和投资建议。

原文标题:如何利用DeepSeek帮我做金融理财?

原文作者:阿里云开发者

冷月清谈:

本文介绍了如何利用 XXL-JOB 结合 Deepseek 大模型,搭建一套定时数据分析系统,实现智能金融理财助手的功能。文章详细讲解了如何部署 Deepseek 模型(包括本地部署和使用阿里云百炼等云产品),以及如何配置和使用 XXL-JOB 进行定时任务调度。通过定时拉取财经新闻并利用 Deepseek 进行分析的示例,展示了该系统在金融数据分析方面的应用。此外,还提出了利用广播分片任务和任务编排能力构建更复杂的金融数据分析流程的思路,例如准实时拉取国内外金融数据、进行深度分析并生成投资报告。总而言之,这套架构不仅适用于金融领域,也适用于其他有数据分析需求的领域。

怜星夜思:

1、文章提到了DeepSeek和阿里云的QwQ模型,你觉得在金融数据分析上,选择开源模型和云产品各有什么优劣?
2、文章中提到可以使用XXL-JOB的任务编排能力,构建一个AI数据分析流程。除了文章中提到的“拉取金融数据-数据分析-生成报告”流程,你还能想到哪些更复杂的、更有趣的AI金融分析流程?
3、文章提到通过钉钉推送分析总结,除了钉钉,你觉得还有哪些更适合推送金融分析结果的渠道?为什么?

原文内容

阿里妹导读


本篇文章将介绍如何搭建一套基于 XXL-JOB + Deepseek 的定时数据分析系统,帮你做一个智能的金融理财助手。

概述

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]中):
@Component
public class AIJob {

   @Value(“${dashscope.api.key}”)
   private String apiKey;

   @XxlJob(value = “sinaNews”)
   public ReturnT<String> sinaNews() throws Exception {
       String url = “热门新闻排行_新浪财经_新浪网”;
       String model = “deepseek-r1”;
       // prompt
       String jobParam = XxlJobContext.getXxlJobContext().getJobParam();        
       ReturnT<String> rtn = ReturnT.SUCCESS;
       Document document = Jsoup.connect(url).get();
       // 定位到“汇总榜”部分
       Element summaryBlock = document.selectFirst(“div.lbti:has(h2:containsOwn(汇总榜))”);
       if (summaryBlock != null) {
           // 找到该块中的<script>标签
           Element scriptTag = summaryBlock.parent().selectFirst(“script[src]”);
           if (scriptTag != null) {
               // 提取src属性值
       String srcValue = scriptTag.attr(“src”);
       HttpResponse<String> httpResponse = Unirest.get(srcValue).asString();
       String news = httpResponse.getBody();
       Map<String, Object> bodyMap = new HashMap<>();
       bodyMap.put(“model”, model);
       List<Map<String, String>> messagesList = new ArrayList<>();
       Map<String, String> 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<JsonNode> 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(“未找到汇总榜的<script>标签”);
           }
       } 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 一定是你做数据分析的一大利器。
参考链接:

[1]https://www.xuxueli.com/xxl-job/

[2]https://bailian.console.aliyun.com/

[3]https://www.xuxueli.com/xxl-job/index.html#二、快速入门

[4]https://mse.console.aliyun.com/schedulerx-xxljob#/schedulerx-xxljob?region=cn-hangzhou

[5]https://free.aliyun.com/?spm=5176.mse-prod.0.0.7429142fhgTdVa&product=1371&crowd=personal

[6]https://help.aliyun.com/zh/mse/use-cases/execute-custom-ai-tasks-regularly

我觉得可以搞个“AI炒股大赛”流程:用户提交自己的投资策略(prompt),然后系统定时拉取数据,用 DeepSeek 模拟交易,每周/每月根据收益率排名,奖励优胜者。这样既能寓教于乐,又能收集用户策略,优化模型。

我认为专业的金融信息服务平台更适合推送。因为这些平台的用户更精准,对金融信息的需求更强,而且平台通常会提供更丰富的数据展示和交互功能。例如,可以考虑与彭博终端、Wind等平台合作。

我觉得选择哪个取决于你的需求和资源。如果你需要高度定制化的模型,并且有足够的资源和技术能力来维护它,那么开源模型可能更适合你。另一方面,如果你需要快速启动并运行,并且不想担心维护问题,那么云产品可能是一个更好的选择。说白了,就是看你是想自己造轮子还是直接买个现成的。

邮件肯定是不能少的,这是最正式、最严肃的沟通方式,适合发送正式的报告和分析总结。另外,可以考虑做个微信小程序,方便用户随时随地查看,还可以设置个性化推送,根据用户的投资偏好推送相关信息。

格局小了啊,楼上的各位!我来个大的:假设我是一个VC,我可以做一个“AI项目评估”流程,定时抓取各种创业项目的信息,然后用DeepSeek分析项目的商业模式、团队背景、市场前景,自动生成一份投资建议书,省时省力!说不定下一个独角兽就是这么挖掘出来的!

开源模型胜在定制性强,可以针对特定金融场景进行优化,但是部署和维护成本较高,需要一定的技术能力。云产品则开箱即用,省去了运维的烦恼,但定制性相对较弱,可能需要根据云平台的限制进行调整。对于小型团队或个人开发者,云产品可能更划算,而大型金融机构可能更倾向于开源模型,以追求更高的灵活性和安全性。

这俩我都用过,简单说两句。开源模型像是自己组装电脑,每个零件都能挑最好的,但装起来麻烦,驱动也得自己搞定,适合动手能力强的大佬。云产品就像品牌机,配置均衡,售后有保障,省心,但价格稍贵,升级空间也有限。金融分析这块,如果对模型细节要求高,又想省钱,那就折腾开源的。如果追求稳定省事,直接上云,阿里云百炼用起来还挺方便的。

现在都什么年代了,还盯着钉钉邮件?直接上数字人直播啊!搞一个虚拟的“AI金融分析师”,24小时不间断直播,分析市场行情,解读财经新闻,实时解答用户问题,这才是未来!保证流量蹭蹭涨!

可以做一个结合舆情分析的流程:先拉取社交媒体、新闻网站等数据,分析市场情绪;然后结合金融数据,判断市场趋势;最后生成风险评估报告和投资组合建议。还可以加入异常检测环节,监控交易数据,及时发现欺诈行为。