首页 文章 精选 留言 我的

精选列表

搜索[api],共10000篇文章
优秀的个人博客,低调大师

用本地数据构建 ETF 折溢价实时监控 Agent,工程实践分享 IG50免费开源股票数据API接口

# 用本地数据构建 ETF 折溢价实时监控 Agent,工程实践分享 做 ETF 套利这几年,我越来越觉得"看折价就买"的时代已经过去了。真正能稳定套利的人,靠的不是盯盘,是**一套能自动识别真折溢价信号的 Agent 系统**。这篇把基于本地股票数据的 ETF 折溢价实时监控 Agent 完整分享。 整套系统在单机上跑,单只 ETF 信号识别 0 else -1 ``` 特征 Agent 是一个纯计算型 Agent,不依赖任何外部服务。**每个特征的计算都在 1ms 以内完成,3000 只 ETF 的特征计算单机 3 秒搞定。** 特征 Agent 的输出是 5 维向量 + 元数据(ETF 代码、名称、类型)。 **Agent 3 - 决策 Agent** 决策 Agent 是核心。它基于特征打分,输出建仓信号: ```python class DecisionAgent: def __init__(self): self.weights = { 'premium_size': 0.25, 'reversion_speed': 0.30, 'shen_shu_state': 0.20, 'liquidity': 0.15, 'zl_direction': 0.10 } def decide(self, features, etf_type): """决策打分""" score = 0 # 折溢价大小(0-100 分) ps = features['premium_size'] if 0.0015 0.01: score += 30 * self.weights['premium_size'] # 过大反而不可信 # 回归速度(0-100 分) rs = features['reversion_speed'] if rs and rs > 0.0005: score += 100 * self.weights['reversion_speed'] elif rs and rs > 0.0002: score += 70 * self.weights['reversion_speed'] else: score += 30 * self.weights['reversion_speed'] # 申赎状态 if features['shen_shu_state'] == 0: return {'action': 'DROP', 'reason': '申赎关闭'} # 流动性 if features['liquidity'] 80: return {'action': 'EXECUTE', 'score': score} elif score > 70: return {'action': 'OBSERVE', 'score': score} else: return {'action': 'DROP', 'score': score} ``` **决策 Agent 输出的 3 类信号:** - `EXECUTE`:总分 > 80,进入执行队列 - `OBSERVE`:总分 70-80,进入观察池 - `DROP`:总分 30: self.close_position(code, current_data, '超时') # 平仓条件 3:14:50 强制平仓 if current_data['timestamp'].endswith('14:50:00'): self.close_position(code, current_data, '尾盘平仓') # 平仓条件 4:申赎关闭 if current_data['shenShuState'] == 0: self.close_position(code, current_data, '申赎关闭') ``` 执行 Agent 维护当前持仓列表,每个 tick 检查平仓条件。 **Agent 协作流程** ``` [本地数据接口] ↓ (每 3 秒) [数据 Agent] → Redis Queue ↓ [特征 Agent] → Redis Queue ↓ [决策 Agent] ↓ (EXECUTE 信号) [执行 Agent] ↓ [Redis Hash 持仓状态] ``` 整个流水线 3 秒一个周期。3000 只 ETF 的全市场扫描耗时 < 5 秒。 **踩过的 3 个坑** 第一个坑是**消息队列的可靠性**。我一开始用 Redis 做消息队列,但 Redis 重启会丢消息。改成 RabbitMQ 持久化队列之后稳定了。 第二个坑是**特征计算的时间窗口**。折溢价回归速度需要 30 分钟历史数据,但每只 ETF 的窗口起点不一样。改成按 `cjsj` 时间戳对齐后,特征计算准确度提升 12%。 第三个坑是**跨境 ETF 的海外市场状态**。跨境 ETF 的折溢价与海外市场强相关。我一开始没考虑这个,胜率只有 62%。加入海外交易日判断后,胜率提升到 71%。 **实盘运行数据** 这套系统我从 2024 年 1 月开始跑,到现在已经稳定运行 8 个月。每天交易 50-80 笔。 实盘数据: - 总信号数:287,432 - EXECUTE 信号数:31,247 - 实际成交笔数:28,341 - 胜率:76.2% - 平均单笔收益:+0.08% - 最大单笔亏损:-0.38% - 最大单日回撤:-1.1% **为什么用 Agent 架构** Agent 协作在金融数据处理里有两个核心价值: 第一个是**容错性**。单体脚本一个失败全盘崩溃,多 Agent 单点失败不影响全局。 第二个是**可扩展性**。新增一个数据源只需要加一个数据 Agent,不用改其他模块。 但 Agent 架构也有缺点:**复杂度高**。如果你的数据规模不大(< 100 只 ETF),单体脚本就够了。Agent 架构适合全市场级别的场景。 **未来优化方向** 下一步我想把决策 Agent 的规则引擎替换成本地微调的小模型。现在用的规则引擎准确率 76%,响应延迟 5ms。如果能微调一个 7B 的本地模型专门做 ETF 套利决策,理论上可以把准确率提升到 82%。 这个方向上的关键挑战是数据标注——需要积累大量"已发生交易决策"的数据集来训练模型。短期看规则引擎还是最实用的方案。 **总结** Agent 协作的本质是把"复杂业务"拆成"独立单元"。每个 Agent 只关心自己的输入输出,不需要知道其他 Agent 的实现细节。这种松耦合设计让整个系统可维护性大大提升。 ETF 折溢价监控是 Agent 架构最适合的场景之一——数据维度多、决策规则清晰、需要 7x24 不间断运行。**把数据搬本地、把决策拆 Agent**,这是 ETF 套利系统从"手动盯盘"到"自动运行"的必经之路。 资料参考:ig50 [gitee开源地址](https://gitee.com/igtrade/ighub) [github开源地址](https://github.com/ig50-service/ig50-official)

优秀的个人博客,低调大师

车辆里程数据查询 API 接入教程:VIN 查询维保年检里程,识别二手车调表风险

二手车交易过程中,车辆行驶里程是评估车辆残值的核心指标。 - 低里程车辆:零部件磨损更小,剩余使用寿命更长,交易价格更高; - 高里程车辆:部件老化速度更快,后续维修成本更高,车辆折价更明显。 部分不良商家会进行**调表操作**,修改车辆仪表盘里程,人为压低表显里程抬高售价,给买家、汽车金融机构带来经济损失。 ## 一、接口基础信息 输入 VIN 车架号,可以查询车辆的综合精准里程情况及车辆信息,如里程情况、里程状态、存在调表风险等详细参数。 - 请求方式:GET / POST 请求参数 |参数|是否必填|说明| |:-:|:-:|:-:| |key|是|接口访问密钥| |vin|是|17 位车辆 VIN 车架号| |img_url|否|行驶证图片地址,可选参数| 返回示例 ``` { "code": 1, "msg": "操作成功", "data": { "vin": "WBA56666666661797", "brand_name": "宝马", "manufacturer_date": "2023", "last_driving_date": "2026-06-01", "display_mileage_by_actual": "58500", "driving_date_by_actual": "2026-06-01", "suspected_adjust": "0", "suspected_mileage_before_adjust": "", "suspected_before_adjust_month": "", "suspected_mileage_after_adjust": "", "suspected_after_adjust_month": "", "history_display_mileage_list": "[{\"displayMileage\":58500,\"hasErr\":false,\"month\":\"2026-06\",\"remark\":\"正常数据\"}]", "check_display_mileage_attention": "[\"车辆存在调表风险\"]" } } ``` ## 二、核心返回参数解读 1. **`display_mileage_by_actual`** 最近一条维保 / 年检档案登记的表显里程。**不等于车辆当前仪表盘里程**,属于历史业务存档快照。 2. **`suspected_adjust`** 系统自动检测里程是否倒退,判断是否疑似调表。`0=否`,`1=是`。 当该值为 0 时,4 个`suspected_xxx`调表相关字段为空,代表未检测到里程倒减记录。 >⚠️仅依靠此字段不足以完整评估风险,必须结合下面这条历史里程列表综合判断。 3. **`history_display_mileage_list`** 历史里程明细数组(JSON 字符串格式),是判断调表的核心原始数据,保存历次维保 / 年检里程与时间线。 - 正常车辆:时间越靠后,里程持续递增; - 疑似调表特征:后一次存档里程 < 前一次存档里程,里程反向下降。 >如果列表只有单条记录,缺少前后对比数据,无法验证里程变化趋势。 4. **`check_display_mileage_attention`** 风险备注数组,存放提示文案,可直接在前端展示。如示例中`["车辆存在调表风险"]`,含义是**历史记录不足,无法排除调表可能性**,不等于已经确认车辆调表。 ## 三、业务应用场景 1. **二手车交易** 核验车辆历史里程,筛查调表嫌疑车辆,辅助二手车估价;平台车源上架前置风控,减少交易纠纷。 2. **汽车金融贷前风控** 车贷、车辆抵押业务,核验客户申报里程真实性,防止虚报车况;评估抵押车辆残值,高风险车辆可下调估值或拒贷。 3. **保险定损** 承保前评估车辆损耗程度;车辆发生重大事故推定全损时,依托存档里程核算车辆剩余残值。 ## 四、Python如何接入 ```import requests import json key = "你的key" vin = "WBA5xxxxxxxxx21797" url = "https://www.tanshuapi.com/market/detail-163"#接口地址 params = { "key": key, "vin": vin } resp = requests.get(url, params=params) result = resp.json() print(json.dumps(result, ensure_ascii=False, indent=2)) ``` ## 五、开发注意事项 1. `history_display_mileage_list`、`check_display_mileage_attention`为 JSON 字符串,业务代码需要二次 JSON 解析; 2. 字段存在空字符串,转换数值前必须增加判空逻辑,避免程序异常; 3. 风控判断优先级:优先读取历史里程列表,不能仅依赖`suspected_adjust`标签; 4. 数据局限性:仅能识别**两次存档记录之间**发生的调表;如果调表发生在第一条存档记录之前,接口无法检出。

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册