最近需要对电力行业的数据进行建模,需要考虑如何结合本体,这里是一份面向零基础新人的电力行业本体构建专题文档。
它聚焦两个方向:
1. 电力预测:负荷预测、新能源出力预测、电价预测、偏差预测、风险预测。
2. 电价交易:中长期交易、日前交易、实时交易、零售套餐、偏差结算、交易风控。

本文的目标不是让新人马上成为电力市场交易专家,而是帮助新人理解:
- 电力预测和电价交易为什么适合用本体来组织知识。
- 如何从业务场景中抽取类、属性、关系、规则、约束和实例。
- 如何把预测结果、市场规则、交易策略、风险控制和人工审批放进一个可解释的白盒框架。
- 如何让本体与 Agent、RAG、LLM、规则引擎、知识图谱和交易系统协同。
- 如何从一个最小可行本体开始,逐步扩展成可复用、可审计、可推广的知识资产。
重要说明:
本文用于智能体开发、本体建模和业务学习。
不同国家、区域、省份、交易中心和市场阶段的电力交易规则差异很大。
真实交易系统必须以当地电力交易中心、调度机构、监管机构和企业内控规则为准。
本文中的阈值、规则和示例均为教学样例,不能直接作为真实交易指令使用。
0. 如何阅读本文
可以按下面顺序阅读:
第 1 到第 3 章:
理解电力预测、电价交易和本体之间的关系。
第 4 到第 8 章:
理解电力本体的分层架构、核心类、关系和数据映射。
第 9 到第 13 章:
深入学习预测本体、交易本体、能力问题、白盒规则和诊断链。
第 14 到第 18 章:
学习如何把本体接入 Agent、RAG、LLM、审计、场景评估和工程目录。
第 19 到第 22 章:
看完整案例、模板、常见错误和推广路径。
业务人员建议重点阅读:
- 第 1 章:为什么电力预测和交易需要本体。
- 第 2 章:电力预测与电价交易业务基础。
- 第 10 章:电力交易本体如何构建。
- 第 12 章:白盒规则和风控约束。
- 第 19 章:完整落地示例。
开发工程师建议重点阅读:
- 第 4 章:电力本体分层架构。
- 第 5 章:核心类模型。
- 第 8 章:数据映射与字段治理。
- 第 14 章:本体与 Agent、RAG、LLM 的结合方式。
- 第 18 章:推荐工程目录。
AI 工程师建议重点阅读:
- 第 9 章:电力预测本体如何构建。
- 第 11 章:能力问题设计。
- 第 13 章:诊断链与决策链。
- 第 15 章:场景评估与审计。
- 第 20 章:本体模板。
1. 为什么电力预测和电价交易需要本体
1.1 电力业务不是普通价格预测
电力交易和普通商品交易不同。
普通商品通常可以大规模存储,可以提前生产、运输、囤货。电力系统的核心特点是:
发电、输电、用电需要实时平衡。
电网有物理约束,不能只看买卖双方价格。
新能源出力受天气影响很大。
负荷受温度、节假日、行业生产、突发事件影响很大。
价格受供需、阻塞、机组边际成本、市场规则、调度约束共同影响。
交易结果会进入结算、偏差考核、信用评价和监管审计。
所以电力预测和交易决策不是简单回答:
明天电价是多少?
而是要回答一组互相关联的问题:
明天每个时段负荷会是多少?
新能源出力会是多少?
供需是否偏紧?
是否可能发生线路阻塞或断面约束?
日前价格是否可能高于中长期合约价格?
我当前持仓是偏多还是偏空?
如果预测错了,偏差结算风险有多大?
这笔交易是否超过风险限额?
这类报价是否符合市场规则和企业审批要求?
这些问题涉及对象、指标、关系、规则、时序、约束和责任边界。本体正是用来把这些内容显式组织起来。
1.2 大模型不能直接替代电力交易决策
大模型擅长阅读规则、总结报告、解释预测结果、生成策略草案,但电力交易不适合完全交给黑盒模型自动决策。
原因包括:
- 交易规则复杂,且不同市场规则不同。
- 价格预测本身存在不确定性。
- 交易动作会带来真实财务风险。
- 错误报价可能触发合规、信用、结算和监管问题。
- 企业内部通常有风险限额、审批流程和操作权限。
- 真实交易系统需要审计日志、责任追踪和复盘依据。
因此,在电力预测和交易 Agent 中,大模型应该处在辅助位置:
LLM 负责理解、总结、解释和生成草案。
RAG 负责检索市场规则、交易公告、复盘报告和经验文档。
预测模型负责输出负荷、新能源、电价、偏差和风险概率。
本体负责定义对象、关系、规则、约束、证据链和交易边界。
Agent 负责组织流程、调用工具、汇总证据和提交人工审批。
1.3 本体在电力交易 Agent 中的价值
电力本体至少有六类价值。
第一,统一语言。
不同团队对同一个词可能理解不同。例如:
持仓:可能指中长期合约净持仓,也可能指日前买卖后的净暴露。
偏差:可能指实际用电和申报电量偏差,也可能指预测值和实际值偏差。
价格:可能指日前出清价、实时出清价、结算价、合约价、零售套餐价。
本体可以把这些概念分清楚,避免业务、数据、算法和交易团队说的是同一个词,实际指的是不同对象。
第二,连接预测和交易。
负荷预测、新能源预测和电价预测不是孤立输出。它们会影响交易策略:
负荷预测偏高 -> 可能需要增加购电量或调整零售客户敞口。
新能源出力偏低 -> 可能导致供需偏紧和价格上行。
日前价格预测高于合约价格 -> 可能倾向提前锁定或增加合约覆盖。
预测置信度低 -> 应降低交易激进程度或提高审批等级。
本体可以定义这些影响关系。
第三,明确白盒风控。
本体可以把风险规则写成可执行条件:
如果日前净敞口超过风险限额,则禁止自动生成激进交易建议。
如果预测置信度低于阈值,则交易建议必须进入人工复核。
如果交易品种不在授权范围内,则禁止生成下单动作。
如果市场公告包含交易暂停或规则变更,则禁止沿用旧策略。
第四,支持审计和复盘。
每一次策略建议都可以记录:
用了哪些数据。
引用了哪些市场规则。
触发了哪些本体规则。
预测结果是什么。
风险限额是否满足。
哪些动作被允许。
哪些动作被禁止。
谁进行了审批。
最终交易结果和结算结果如何。
第五,降低新人学习门槛。
电力交易概念很多,新人容易迷失。本体可以把概念组织成清晰的层级和关系。
第六,方便跨区域、跨市场复用。
不同区域规则不同,但许多基本对象相似:
市场主体、交易品种、时段、电量、电价、预测、报价、出清、结算、偏差、风险、审批。
可以先建立通用电力市场本体,再扩展到某个区域或某类交易。
2. 电力预测与电价交易业务基础
2.1 电力系统基本对象
从物理系统看,电力业务通常围绕“源、网、荷、储”展开。
| 源 | 发电侧资源 | 火电、水电、风电、光伏、核电、生物质 |
| 网 | 输配电网络和调度约束 | 输电线路、变电站、断面、节点、分区 |
| 荷 | 用电侧需求 | 工业负荷、商业负荷、居民负荷、园区负荷 |
| 储 | 储能和可调资源 | 电化学储能、抽水蓄能、虚拟电厂、需求响应 |
电力市场本体不能只建价格,还要建这些物理对象,因为价格变化往往来自物理系统约束。
例如:
高温天气 -> 空调负荷增加 -> 系统负荷升高 -> 供需偏紧 -> 日前价格可能上升。
大风天气 -> 风电出力增加 -> 新能源供给增加 -> 低谷时段价格可能下降。
线路断面受限 -> 局部供需失衡 -> 节点或分区价格可能分化。
火电机组检修 -> 可用容量下降 -> 峰时价格上行风险增加。
2.2 电力市场基本对象
从市场系统看,常见对象包括:
| 市场主体 | 参与交易和结算的组织或资源 |
| 交易品种 | 中长期、日前、实时、辅助服务、绿电、绿证等 |
| 交易单元 | 发电单元、用电单元、售电公司、虚拟电厂、储能单元 |
| 交易时段 | 年、月、周、日、小时、15 分钟、5 分钟等 |
| 申报 | 市场主体提交的电量、电价、曲线或报价段 |
| 出清 | 市场根据规则形成成交电量和价格 |
| 合约 | 双方或集中交易形成的中长期约定 |
| 持仓 | 已经锁定的合约或交易暴露 |
| 偏差 | 实际电量与计划、申报、合约或预测之间的差异 |
| 结算 | 根据成交、实际、偏差和规则计算费用 |
| 风控 | 限额、审批、信用、合规和止损机制 |
2.3 常见市场类型
不同地区市场设计不同,下面只做通用学习分类。
中长期市场
中长期市场通常用于提前锁定电量和价格,降低现货价格波动风险。
常见对象:
年度合约
月度合约
月内交易
双边协商
集中竞价
挂牌交易
合约分解曲线
合约转让
本体需要表达:
合约属于哪个市场。
合约覆盖哪些时间窗口。
合约电量是多少。
合约价格是多少。
合约分解到哪些时段。
合约和实际用电之间形成什么敞口。
日前市场
日前市场通常在运行日前一天进行,用于形成下一运行日各时段的电量和价格。
本体需要表达:
运行日
交易日
日前申报
日前出清价
日前成交电量
日前预测负荷
日前预测新能源出力
日前供需平衡
实时或日内市场
实时市场或日内市场用于处理运行中实际供需变化。
本体需要表达:
实时价格
实时偏差
实时负荷
实时新能源出力
实时调度指令
实时交易窗口
辅助服务市场
辅助服务市场与频率、电压、备用、调峰等系统安全服务有关。
本体需要表达:
调频服务
备用服务
调峰服务
响应能力
可用容量
性能指标
补偿费用
考核费用
零售市场
售电公司面向电力用户时,通常还涉及零售合同、套餐、代理购电、偏差分摊和客户用电预测。
本体需要表达:
零售客户
零售套餐
代理购电关系
客户负荷曲线
零售结算价
偏差分摊规则
客户信用风险
2.4 电力预测对象
电力预测不是一个单独模型,而是一组预测任务。
| 系统负荷预测 | 预测区域总用电需求 | 判断供需、预测价格 |
| 用户负荷预测 | 预测某客户或客户组合用电 | 售电公司购电和偏差控制 |
| 风电出力预测 | 预测风电场或区域风电 | 判断新能源供给和价格下行风险 |
| 光伏出力预测 | 预测光伏电站或区域光伏 | 判断午间价格和低价风险 |
| 水电出力预测 | 结合来水和调度计划 | 判断可用电量和峰谷调节 |
| 火电可用容量预测 | 结合检修、煤价和启停 | 判断系统备用和边际机组 |
| 电价预测 | 预测日前、实时或结算价格 | 交易策略和风险评估 |
| 偏差预测 | 预测实际与申报或合约差异 | 控制偏差结算风险 |
| 阻塞预测 | 预测断面或节点约束 | 判断区域价差或节点价格风险 |
2.5 电价形成的常见影响因素
电价不是凭空产生的,它通常由多类因素共同影响。
| 负荷升高 | 供需趋紧,价格可能上升 |
| 新能源出力升高 | 供给增加,低谷价格可能下降 |
| 火电可用容量下降 | 备用不足,峰时价格可能上升 |
| 煤价或燃料成本上升 | 边际成本上升,报价可能抬高 |
| 联络线受限 | 区域供给受限,价格可能分化 |
| 机组检修 | 可用容量下降,价格上行风险增加 |
| 极端天气 | 负荷和新能源均可能异常,价格波动增加 |
| 市场规则变化 | 价格上限、申报规则、结算规则可能变化 |
| 节假日 | 负荷结构变化,价格曲线可能变形 |
| 水情变化 | 水电地区价格和调峰能力可能变化 |
本体要把这些因素建成概念和关系,而不是只放在提示词里。
3. 电力本体建设目标和边界
3.1 本体要解决什么问题
电力预测和交易本体可以优先解决以下问题:
统一电力预测、交易、结算和风控概念。
把预测结果和交易动作之间的影响关系显式化。
把市场规则和企业内控规则变成可执行约束。
让 Agent 输出策略建议时带有证据链、规则链和审批链。
让新人能按结构化方式学习电力市场。
让后续跨地区、跨交易品种扩展更容易。
3.2 第一版不应该解决什么问题
新人构建第一版电力本体时,不建议一开始就追求:
覆盖所有省份所有交易细则。
覆盖所有电力市场设计。
完全还原调度安全约束和最优潮流。
完全替代交易员判断。
自动下单和自动成交。
直接连接真实交易系统。
用本体表达所有预测模型内部参数。
第一版应该关注可学习、可运行、可审计的核心闭环。
建议第一版只覆盖一个明确场景,例如:
售电公司日前购电策略辅助。
新能源场站日前报价风险提示。
虚拟电厂负荷预测和偏差风险控制。
工业园区电价预测和用电优化建议。
3.3 推荐最小场景
本文推荐新人从下面这个最小场景开始:
某售电公司服务一组工业用户。
系统需要预测明日 24 个小时的客户负荷和日前市场价格。
系统根据中长期合约持仓、预测负荷、预测价格和风险限额,生成日前购电策略建议。
所有交易建议必须经过本体风控门禁和人工审批。
这个场景足够典型,因为它同时包含:
- 负荷预测。
- 电价预测。
- 中长期合约。
- 日前交易。
- 净敞口。
- 偏差风险。
- 结算风险。
- 风控规则。
- 人工审批。
4. 电力本体分层架构
4.1 为什么要分层
电力行业概念复杂,如果一开始把所有内容放在一个大表里,会很快失控。
推荐分成四层:
通用上层本体:
描述所有行业都可能使用的基础概念,例如实体、时间、指标、事件、规则、风险、动作。
电力领域本体:
描述电力行业稳定概念,例如电源、电网、负荷、储能、市场主体、交易品种、出清、结算。
任务本体:
描述具体任务结构,例如负荷预测、电价预测、日前交易、偏差控制、结算复盘。
应用本体:
描述某个项目落地细节,例如某省市场规则、某公司风险限额、字段映射、审批流程。
4.2 分层关系图
#mermaid-svg-zkoTBawF52nv18eh{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-zkoTBawF52nv18eh .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-zkoTBawF52nv18eh .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-zkoTBawF52nv18eh .error-icon{fill:#552222;}#mermaid-svg-zkoTBawF52nv18eh .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-zkoTBawF52nv18eh .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-zkoTBawF52nv18eh .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-zkoTBawF52nv18eh .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-zkoTBawF52nv18eh .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-zkoTBawF52nv18eh .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-zkoTBawF52nv18eh .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-zkoTBawF52nv18eh .marker{fill:#333333;stroke:#333333;}#mermaid-svg-zkoTBawF52nv18eh .marker.cross{stroke:#333333;}#mermaid-svg-zkoTBawF52nv18eh svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-zkoTBawF52nv18eh p{margin:0;}#mermaid-svg-zkoTBawF52nv18eh .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-zkoTBawF52nv18eh .cluster-label text{fill:#333;}#mermaid-svg-zkoTBawF52nv18eh .cluster-label span{color:#333;}#mermaid-svg-zkoTBawF52nv18eh .cluster-label span p{background-color:transparent;}#mermaid-svg-zkoTBawF52nv18eh .label text,#mermaid-svg-zkoTBawF52nv18eh span{fill:#333;color:#333;}#mermaid-svg-zkoTBawF52nv18eh .node rect,#mermaid-svg-zkoTBawF52nv18eh .node circle,#mermaid-svg-zkoTBawF52nv18eh .node ellipse,#mermaid-svg-zkoTBawF52nv18eh .node polygon,#mermaid-svg-zkoTBawF52nv18eh .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-zkoTBawF52nv18eh .rough-node .label text,#mermaid-svg-zkoTBawF52nv18eh .node .label text,#mermaid-svg-zkoTBawF52nv18eh .image-shape .label,#mermaid-svg-zkoTBawF52nv18eh .icon-shape .label{text-anchor:middle;}#mermaid-svg-zkoTBawF52nv18eh .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-zkoTBawF52nv18eh .rough-node .label,#mermaid-svg-zkoTBawF52nv18eh .node .label,#mermaid-svg-zkoTBawF52nv18eh .image-shape .label,#mermaid-svg-zkoTBawF52nv18eh .icon-shape .label{text-align:center;}#mermaid-svg-zkoTBawF52nv18eh .node.clickable{cursor:pointer;}#mermaid-svg-zkoTBawF52nv18eh .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-zkoTBawF52nv18eh .arrowheadPath{fill:#333333;}#mermaid-svg-zkoTBawF52nv18eh .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-zkoTBawF52nv18eh .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-zkoTBawF52nv18eh .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-zkoTBawF52nv18eh .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-zkoTBawF52nv18eh .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-zkoTBawF52nv18eh .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-zkoTBawF52nv18eh .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-zkoTBawF52nv18eh .cluster text{fill:#333;}#mermaid-svg-zkoTBawF52nv18eh .cluster span{color:#333;}#mermaid-svg-zkoTBawF52nv18eh div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-zkoTBawF52nv18eh .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-zkoTBawF52nv18eh rect.text{fill:none;stroke-width:0;}#mermaid-svg-zkoTBawF52nv18eh .icon-shape,#mermaid-svg-zkoTBawF52nv18eh .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-zkoTBawF52nv18eh .icon-shape p,#mermaid-svg-zkoTBawF52nv18eh .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-zkoTBawF52nv18eh .icon-shape .label rect,#mermaid-svg-zkoTBawF52nv18eh .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-zkoTBawF52nv18eh .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-zkoTBawF52nv18eh .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-zkoTBawF52nv18eh :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
通用上层本体Entity / TimeWindow / Measurement / Rule / Risk / Action
电力领域本体Generator / Load / Grid / Storage / Market / Contract / Settlement
任务本体LoadForecast / PriceForecast / DayAheadTrading / ImbalanceControl
应用本体某区域交易规则 / 企业限额 / 字段映射 / 审批流
Agent 运行时数据质量检查 / 预测工具 / 本体门禁 / 策略生成 / 人工审批
4.3 上层本体建议
上层本体可以包含:
| Entity | 任意实体 | 售电公司、风电场、用户 |
| Actor | 有行为能力的主体 | 交易员、市场主体、审批人 |
| Asset | 可运行资产 | 发电机组、储能、负荷资源 |
| TimeWindow | 时间窗口 | 日前第 13 小时、月度合约周期 |
| Location | 空间位置 | 省区、节点、分区、站点 |
| Measurement | 可测量指标 | 负荷、电价、出力、偏差 |
| Forecast | 预测结果 | 明日负荷预测、日前价格预测 |
| Event | 事件 | 机组检修、市场公告、天气预警 |
| Rule | 规则 | 交易限额规则、偏差风险规则 |
| Constraint | 约束 | 风险限额、价格上下限、授权范围 |
| Risk | 风险 | 偏差风险、价格风险、合规风险 |
| Action | 动作 | 申报买入、调整报价、提交审批 |
| Evidence | 证据 | 预测值、阈值、公告引用、计算过程 |
| Decision | 决策 | 是否建议买入、是否需要复核 |
| Approval | 审批 | 交易主管审批、风控审批 |
4.4 电力领域本体建议
电力领域本体可以包含:
PowerSystem:电力系统
PowerMarket:电力市场
MarketParticipant:市场主体
GenerationAsset:发电资产
LoadAsset:负荷资产
StorageAsset:储能资产
VirtualPowerPlant:虚拟电厂
GridConstraint:电网约束
MarketProduct:交易品种
BidOffer:报价或申报
ClearingResult:出清结果
Contract:合约
Position:持仓
Exposure:敞口
Settlement:结算
Imbalance:偏差
ForecastTask:预测任务
TradingStrategy:交易策略
RiskLimit:风险限额
ComplianceRule:合规规则
4.5 任务本体建议
任务本体可以按业务任务拆分。
预测任务:
LoadForecastTask:负荷预测任务
RenewableForecastTask:新能源出力预测任务
PriceForecastTask:电价预测任务
ImbalanceForecastTask:偏差预测任务
CongestionForecastTask:阻塞预测任务
交易任务:
MediumLongTermHedgeTask:中长期套保任务
DayAheadProcurementTask:日前购电任务
RealTimeAdjustmentTask:实时调整任务
RetailPricingTask:零售套餐定价任务
SettlementReviewTask:结算复盘任务
风控任务:
ExposureCheckTask:敞口检查任务
PriceRiskCheckTask:价格风险检查任务
ImbalanceRiskCheckTask:偏差风险检查任务
ComplianceCheckTask:合规检查任务
ApprovalRoutingTask:审批路由任务
4.6 应用本体建议
应用本体需要结合具体企业和市场规则。
例如某售电公司应用本体可以包含:
company.risk.max_day_ahead_exposure_mwh
company.risk.max_single_trade_value_cny
company.risk.min_forecast_confidence
company.role.trader
company.role.risk_manager
company.role.trading_director
market.region.price_cap
market.region.price_floor
market.region.day_ahead_submission_deadline
market.region.imbalance_settlement_rule
data.path.customer_load_forecast
data.path.day_ahead_price_forecast
data.path.contract_position
data.path.market_notice
应用本体是最接近系统落地的一层,也是最需要持续维护的一层。
5. 电力本体核心类模型
5.1 市场主体类
市场主体是电力交易中的行为主体。
| MarketParticipant | 市场主体总类 | participant_id、name、market_role、credit_level |
| Generator | 发电企业或发电单元 | fuel_type、capacity_mw、availability |
| Retailer | 售电公司 | customer_count、retail_contracts、risk_limit |
| PowerUser | 电力用户 | voltage_level、load_profile_type、retail_contract |
| GridCompany | 电网企业 | service_area、settlement_role |
| TradingCenter | 电力交易中心 | market_rules、trading_calendar |
| DispatchCenter | 调度机构 | dispatch_area、security_constraints |
| VirtualPowerPlant | 虚拟电厂 | aggregated_assets、control_capability |
| StorageOperator | 储能运营方 | energy_capacity_mwh、power_capacity_mw |
示例:
某售电公司 是 Retailer。
某钢铁用户 是 PowerUser。
某风电场 是 Generator。
某虚拟电厂 是 VirtualPowerPlant。
5.2 资产类
资产是会影响电力供需、交易能力或风险暴露的对象。
| ThermalUnit | 火电机组 | 燃煤机组、燃气机组 |
| WindFarm | 风电场 | 山区风电、海上风电 |
| SolarPlant | 光伏电站 | 集中式光伏、分布式光伏 |
| HydroPlant | 水电站 | 常规水电、抽水蓄能 |
| StorageAsset | 储能资产 | 电池储能、抽水蓄能 |
| FlexibleLoad | 可调负荷 | 工业可中断负荷、空调负荷 |
| MeteringPoint | 计量点 | 用户关口表、发电上网表 |
| GridNode | 电网节点 | 节点、电价分区、母线 |
| TransmissionLine | 输电线路 | 线路、断面、联络线 |
5.3 市场和交易品种类
| PowerMarket | 电力市场 | 某省电力现货市场 |
| MarketProduct | 交易品种 | 中长期、日前、实时、辅助服务 |
| ContractProduct | 合约品种 | 年度双边、月度竞价 |
| SpotProduct | 现货品种 | 日前电能量、实时电能量 |
| AncillaryServiceProduct | 辅助服务品种 | 调频、备用、调峰 |
| GreenProduct | 绿色交易品种 | 绿电、绿证 |
| RetailProduct | 零售产品 | 固定价套餐、分时套餐、价差分享套餐 |
市场品种通常需要关联:
交易周期
交割周期
申报截止时间
价格上限
价格下限
结算规则
参与主体范围
最小申报单位
5.4 时间类
电力交易强依赖时间粒度。
| TradingDay | 交易日 | 2026-06-08 |
| OperatingDay | 运行日 | 2026-06-09 |
| DeliveryPeriod | 交割周期 | 2026 年 7 月 |
| SettlementPeriod | 结算周期 | 月结、日结、小时结 |
| TimeSlot | 时段 | 第 1 小时、第 48 个 30 分钟点 |
| ForecastHorizon | 预测提前期 | 提前 1 天、提前 4 小时 |
新人要特别注意:
交易日不一定等于运行日。
申报时间不等于交割时间。
预测时间不等于预测目标时间。
结算周期不等于交易周期。
本体必须明确这些时间概念,否则很容易发生字段错配。
5.5 空间和网络类
| Region | 区域 | 省级市场、控制区 |
| Zone | 分区 | 价区、负荷分区 |
| Node | 节点 | 节点电价位置 |
| Intertie | 联络线 | 跨区通道 |
| ConstraintSection | 约束断面 | 输电断面、潮流约束 |
| CongestionArea | 阻塞区域 | 局部供给受限区域 |
价格预测如果只看全省平均负荷,可能忽略网络阻塞导致的局部价格变化。
5.6 指标类
电力本体中最重要的指标包括:
| LoadMetric | 系统负荷、用户负荷、峰值负荷、谷值负荷 |
| GenerationMetric | 火电出力、风电出力、光伏出力、水电出力 |
| PriceMetric | 日前价格、实时价格、结算价格、合约价格 |
| PositionMetric | 合约持仓、现货敞口、净购电量 |
| RiskMetric | VaR、最大敞口、偏差率、预测误差 |
| WeatherMetric | 温度、湿度、风速、辐照度、降水 |
| GridMetric | 断面负载率、可用输电容量、备用容量 |
| SettlementMetric | 偏差费用、市场化结算费用、零售毛利 |
每个指标都应该定义:
指标 ID
中文名称
单位
时间粒度
空间粒度
数据来源
是否可预测
是否可交易决策使用
合理范围
缺失处理方式
5.7 预测类
预测类用于表达预测任务、预测结果和预测质量。
| ForecastTask | 预测任务 |
| ForecastTarget | 预测目标 |
| ForecastInputFeature | 预测输入特征 |
| ForecastModel | 预测模型 |
| ForecastResult | 预测结果 |
| ForecastInterval | 预测区间 |
| ForecastConfidence | 预测置信度 |
| ForecastError | 预测误差 |
| BacktestResult | 回测结果 |
5.8 交易类
| BidOffer | 申报或报价 |
| BidSegment | 分段报价 |
| TradeOrder | 交易指令或订单 |
| TradeRecommendation | 交易建议 |
| ClearingResult | 出清结果 |
| Contract | 合约 |
| Position | 持仓 |
| Exposure | 敞口 |
| Hedge | 套保 |
| Settlement | 结算 |
| Imbalance | 偏差 |
5.9 风险和约束类
| PriceRisk | 价格风险 | 日前价格大幅上行风险 |
| VolumeRisk | 电量风险 | 购电不足或过量 |
| ImbalanceRisk | 偏差风险 | 实际用电偏离申报 |
| BasisRisk | 基差风险 | 合约价格和现货价格差异 |
| LiquidityRisk | 流动性风险 | 某时段成交困难 |
| ComplianceRisk | 合规风险 | 超授权交易、违反市场规则 |
| CreditRisk | 信用风险 | 客户欠费、保证金不足 |
| DataQualityRisk | 数据质量风险 | 关键预测输入缺失 |
| ModelRisk | 模型风险 | 预测误差过大、模型漂移 |
6. 电力本体核心关系
6.1 关系为什么重要
只定义类还不够。交易 Agent 真正需要的是关系。
例如:
温度影响负荷。
负荷影响供需平衡。
供需平衡影响日前价格。
日前价格影响交易策略。
交易策略影响持仓。
持仓影响结算风险。
风险限额约束交易动作。
审批角色批准交易动作。
这些关系如果不建模,系统就只能凭提示词和模型自由发挥,无法稳定审计。
6.2 推荐关系表
| participates_in | 参与 | 售电公司 participates_in 日前市场 |
| owns | 拥有 | 发电企业 owns 火电机组 |
| aggregates | 聚合 | 虚拟电厂 aggregates 可调负荷 |
| located_in | 位于 | 光伏电站 located_in 某价区 |
| measures | 测量 | 计量点 measures 用户负荷 |
| forecasts | 预测 | 负荷预测任务 forecasts 用户负荷 |
| uses_feature | 使用特征 | 电价预测 uses_feature 系统负荷预测 |
| affects | 影响 | 新能源出力 affects 日前价格 |
| constrains | 约束 | 风险限额 constrains 交易建议 |
| triggers | 触发 | 敞口超限 triggers 风控审批 |
| requires_approval_by | 需要审批 | 大额交易 requires_approval_by 交易主管 |
| forbids_action | 禁止动作 | 合规规则 forbids_action 自动下单 |
| allows_action | 允许动作 | 风控通过 allows_action 提交人工审批 |
| settles_by | 按规则结算 | 偏差电量 settles_by 偏差结算规则 |
| hedges | 套保 | 中长期合约 hedges 现货价格风险 |
| exposes_to | 暴露于 | 未锁定电量 exposes_to 日前价格风险 |
| references | 引用 | 策略建议 references 市场公告 |
| has_evidence | 拥有证据 | 风控结论 has_evidence 敞口计算 |
6.3 三元组示例
高温天气 affects 系统负荷
系统负荷 affects 供需平衡
供需偏紧 affects 日前价格
日前价格预测高于合约价 triggers 增加套保建议
净敞口超限 triggers 风控阻断
风控阻断 forbids_action 自动提交报价
交易建议 requires_approval_by 交易主管
6.4 因果关系和相关关系要区分
新人很容易把相关关系当因果关系。
例如:
气温升高和负荷升高通常相关。
但不同地区、季节、产业结构下,气温升高不一定总导致负荷升高。
本体中建议区分:
| correlates_with | 统计相关 |
| likely_affects | 业务上可能影响 |
| causally_affects | 已被专家确认或机制明确的因果影响 |
| constrains | 硬约束 |
| triggers | 规则触发 |
预测特征可以使用 correlates_with 或 likely_affects,风控门禁应该尽量使用 constrains 和 triggers。
7. 能力问题设计
7.1 什么是能力问题
能力问题就是本体应该能回答的问题。
本体构建前先写能力问题,可以防止建模发散。
一个好的能力问题应该满足:
业务人员能看懂。
系统可以用数据和规则回答。
回答结果对业务决策有价值。
可以通过测试场景验证。
7.2 电力预测能力问题
预测方向可以设计以下能力问题:
CQ-F-001:明日每个时段的客户负荷预测值是多少?
CQ-F-002:本次负荷预测使用了哪些关键输入特征?
CQ-F-003:预测结果的置信度是否满足交易决策要求?
CQ-F-004:哪些时段存在高预测误差风险?
CQ-F-005:风电或光伏出力异常会影响哪些价格时段?
CQ-F-006:当前天气是否可能导致负荷峰值显著上升?
CQ-F-007:历史回测中该模型在哪些场景误差最大?
CQ-F-008:电价预测中哪些特征贡献最大?
CQ-F-009:是否存在市场规则变化导致预测模型不适用?
CQ-F-010:预测数据是否存在缺失、延迟、单位错误或粒度错配?
7.3 电价交易能力问题
交易方向可以设计以下能力问题:
CQ-T-001:当前中长期合约持仓是否足以覆盖预测负荷?
CQ-T-002:明日哪些时段现货敞口最大?
CQ-T-003:日前价格预测高于合约价格时,应如何调整套保比例?
CQ-T-004:某笔交易建议是否超过单笔交易金额限额?
CQ-T-005:某时段净敞口是否超过风险限额?
CQ-T-006:预测置信度不足时,哪些交易动作必须禁止?
CQ-T-007:市场公告是否影响当前交易策略?
CQ-T-008:当前交易建议需要哪个角色审批?
CQ-T-009:如果实际负荷低于预测,偏差结算风险如何变化?
CQ-T-010:结算复盘中,收益或亏损来自价格判断、负荷偏差还是合约结构?
7.4 风控和合规能力问题
CQ-R-001:当前交易建议是否符合市场交易规则?
CQ-R-002:当前交易建议是否符合企业授权范围?
CQ-R-003:是否存在自动下单风险?
CQ-R-004:是否存在未读取最新市场公告就沿用旧规则的问题?
CQ-R-005:是否存在关键数据缺失但仍生成交易建议的问题?
CQ-R-006:是否存在预测模型漂移导致策略不可靠的问题?
CQ-R-007:是否需要风控经理、交易主管或总经理审批?
CQ-R-008:是否保存了完整的数据、预测、规则和审批证据链?
7.5 能力问题如何变成工程资产
每个能力问题都应该映射到:
需要哪些类。
需要哪些指标。
需要哪些数据路径。
需要哪些规则。
需要哪些工具。
需要哪些输出字段。
需要哪些测试场景。
示例:
| 明日哪些时段现货敞口最大 | ForecastResult、Contract、Exposure | 敞口计算规则 | 高负荷低合约覆盖场景 |
| 预测置信度不足时哪些动作禁止 | ForecastConfidence、Action、RiskLimit | 低置信度门禁规则 | 电价预测置信度低场景 |
| 市场公告是否影响当前策略 | MarketNotice、TradingStrategy | 公告新鲜度规则 | 公告变更场景 |
8. 数据映射与字段治理
8.1 为什么数据映射非常关键
电力本体最终要接真实数据。如果数据路径不清楚,本体只能停留在文档。
例如,一条规则写成:
如果日前净敞口超过 100 MWh,则需要交易主管审批。
系统必须知道:
日前净敞口来自哪个字段?
预测负荷来自哪个模型输出?
中长期合约分解电量来自哪个系统?
单位是 kWh、MWh 还是 MW?
时间粒度是小时、15 分钟还是 96 点?
时区和运行日如何定义?
8.2 常见数据源
| 计量系统 | 用户实际用电、发电上网电量 | 负荷建模、结算复盘 |
| EMS/SCADA | 实时负荷、机组状态、电网运行 | 运行态势和实时预测 |
| 交易系统 | 合约、申报、成交、出清 | 持仓、敞口、策略评估 |
| 结算系统 | 结算电量、结算电价、偏差费用 | 结算复盘和收益归因 |
| 天气服务 | 温度、湿度、风速、辐照度 | 负荷和新能源预测 |
| 市场公告 | 规则变更、交易安排、检修信息 | 策略约束和 RAG 引用 |
| 调度信息 | 检修、备用、断面约束 | 供需和阻塞判断 |
| 燃料数据 | 煤价、气价、库存 | 边际成本和报价趋势 |
| 客户档案 | 行业、负荷类型、合同 | 零售预测和套餐设计 |
8.3 数据字段模板
建议为每个关键字段建立字段卡片。
字段 ID:
字段名称:
所属类:
数据路径:
数据来源:
单位:
时间粒度:
空间粒度:
是否必填:
合理范围:
缺失处理方式:
更新时间:
质量检查规则:
使用该字段的本体规则:
使用该字段的预测任务:
示例:
| 字段 ID | customer_load_forecast_mwh |
| 字段名称 | 客户组合负荷预测电量 |
| 所属类 | ForecastResult |
| 数据路径 | forecasts.load.customer_portfolio.hourly_mwh |
| 单位 | MWh |
| 时间粒度 | 小时 |
| 是否必填 | 是 |
| 合理范围 | 大于等于 0 |
| 使用规则 | R-EXPOSURE-LIMIT、R-IMBALANCE-RISK |
8.4 时间粒度治理
电力数据最常见的问题之一是时间粒度错配。
例如:
合约分解是 24 点。
日前价格预测是 96 点。
用户负荷预测是小时级。
实时价格是 5 分钟级。
结算是月度汇总。
本体中需要明确:
数据的原始粒度。
决策使用的目标粒度。
是否允许聚合。
是否允许插值。
聚合或插值方法。
误差如何记录。
8.5 单位治理
常见单位包括:
功率:MW、kW
电量:MWh、kWh
价格:元/MWh、元/kWh
费用:元
时间:小时、15 分钟、5 分钟
比例:百分比
新人要特别注意:
MW 是功率,不是电量。
MWh 是电量,不是功率。
元/MWh 和元/kWh 相差 1000 倍。
24 点和 96 点转换时不能直接复制数值。
本体中的指标必须带单位。
9. 电力预测本体如何构建
9.1 预测本体的核心目标
预测本体不是描述模型代码,而是描述预测任务的业务语义。
它要回答:
预测什么?
预测哪个时间窗口?
预测哪个区域或对象?
使用哪些输入特征?
输出什么结果?
置信度如何?
误差如何评估?
预测结果如何影响交易决策?
什么情况下预测结果不能用于交易?
9.2 负荷预测本体
负荷预测常见类:
LoadForecastTask
LoadForecastTarget
LoadProfile
CustomerSegment
WeatherFeature
CalendarFeature
ProductionScheduleFeature
HistoricalLoadFeature
LoadForecastResult
LoadForecastError
负荷预测关键关系:
客户行业 affects 负荷曲线形态
温度 affects 空调负荷
节假日 affects 工商业负荷
生产计划 affects 工业客户负荷
历史负荷 uses_feature 负荷预测
负荷预测 affects 购电量需求
负荷预测误差 exposes_to 偏差结算风险
负荷预测本体字段示例:
| target_object | 预测对象,例如客户组合、区域系统负荷 |
| target_time_slots | 预测目标时段 |
| horizon | 预测提前期 |
| load_mwh | 预测电量 |
| confidence | 置信度 |
| prediction_interval_low | 预测下界 |
| prediction_interval_high | 预测上界 |
| model_version | 模型版本 |
| backtest_mape | 历史回测 MAPE |
9.3 新能源出力预测本体
新能源预测包括风电和光伏。
风电出力预测关键特征:
风速
风向
空气密度
气压
机组可用状态
限电信息
历史出力
光伏出力预测关键特征:
辐照度
云量
温度
降水
组件可用状态
限电信息
历史出力
新能源预测关系:
风速 affects 风电出力
辐照度 affects 光伏出力
新能源出力 affects 供需平衡
新能源出力 affects 低价风险
新能源预测误差 exposes_to 偏差风险
9.4 电价预测本体
电价预测更复杂,因为价格受市场规则和供需共同影响。
电价预测常见类:
PriceForecastTask
PriceForecastTarget
PriceDriver
SupplyDemandBalance
MarginalCostSignal
CongestionSignal
MarketRuleSignal
PriceForecastResult
PriceVolatilityRisk
PriceSpikeRisk
NegativePriceRisk
价格驱动因素可以建成 PriceDriver:
| forecast_load | 负荷越高,价格上行风险越高 |
| forecast_renewable | 新能源越高,价格下行风险越高 |
| thermal_availability | 可用火电越低,价格上行风险越高 |
| reserve_margin | 备用越低,尖峰价格风险越高 |
| congestion_signal | 阻塞可能导致局部价格分化 |
| fuel_cost | 燃料成本影响报价和边际成本 |
| market_notice | 规则变化可能影响预测适用性 |
电价预测结果不能只输出一个均值,建议输出:
预测价格
预测区间
上涨概率
下跌概率
尖峰概率
低价概率
置信度
关键驱动因素
模型版本
回测误差
适用市场规则版本
9.5 偏差预测本体
偏差预测关注实际电量与计划、预测、申报或合约的差异。
常见偏差:
actual_load – forecast_load
actual_load – declared_load
actual_generation – forecast_generation
actual_volume – contracted_volume
偏差风险关系:
负荷预测误差 affects 偏差电量
偏差电量 affects 偏差结算费用
偏差结算费用 affects 交易收益
偏差风险 constrains 交易策略激进程度
9.6 预测质量规则
预测结果进入交易决策前必须过质量门禁。
示例规则:
如果预测模型版本为空,则禁止用于交易建议。
如果关键输入特征缺失,则禁止用于交易建议。
如果电价预测置信度低于 0.65,则只能生成保守建议。
如果最近 7 天回测误差超过阈值,则需要模型复核。
如果市场规则版本与预测模型训练规则版本不一致,则需要人工复核。
JSON 示例:
{
"rule_id": "R-FORECAST-CONFIDENCE-LOW",
"name": "电价预测置信度不足门禁",
"conditions": [
{
"left": "forecast.price.confidence",
"operator": "<",
"right": "risk_limits.min_price_forecast_confidence"
}
],
"decision": "review_required",
"risk": "电价预测置信度不足",
"allowed_action_categories": ["保守策略草案", "人工复核", "补充数据检查"],
"forbidden_action_categories": ["激进交易", "自动下单", "大额单边敞口"],
"evidence_template": "电价预测置信度 {actual} 低于阈值 {limit}。"
}
10. 电价交易本体如何构建
10.1 交易本体的核心目标
交易本体要解决:
交易什么品种?
在哪个市场交易?
买入还是卖出?
交易电量是多少?
交易价格或报价策略是什么?
交易覆盖哪些时段?
当前持仓和敞口是多少?
交易后风险如何变化?
是否符合市场规则和企业风控?
需要谁审批?
10.2 中长期交易本体
中长期交易用于锁定电量和价格。
核心类:
MediumLongTermContract
ContractCurve
ContractPrice
ContractVolume
ContractCounterparty
ContractDeliveryPeriod
ContractTransfer
HedgeRatio
关键关系:
中长期合约 hedges 现货价格风险
合约分解曲线 affects 日前净敞口
合约价格 compares_with 日前价格预测
合约覆盖率 constrains 日前购电需求
常见规则:
合约覆盖率低于下限时,提示现货敞口风险。
合约覆盖率高于上限时,提示过度锁定风险。
合约分解曲线和预测负荷粒度不一致时,需要转换和复核。
10.3 日前交易本体
日前交易是电价预测和交易策略结合最典型的场景。
核心类:
DayAheadMarket
DayAheadBid
DayAheadOffer
DayAheadPriceForecast
DayAheadClearingPrice
DayAheadClearingVolume
DayAheadPosition
DayAheadExposure
日前交易决策通常需要:
预测负荷
预测日前价格
中长期合约分解电量
当前净敞口
价格风险阈值
交易限额
市场申报截止时间
报价规则
审批规则
敞口计算示例:
预测负荷电量 = 1000 MWh
中长期合约覆盖 = 760 MWh
日前已成交电量 = 50 MWh
日前净敞口 = 预测负荷电量 – 中长期合约覆盖 – 日前已成交电量
= 190 MWh
如果企业风险限额是 150 MWh,则触发敞口超限规则。
10.4 实时交易本体
实时交易或日内调整用于处理实际运行偏差。
核心类:
RealTimeMarket
RealTimePrice
RealTimeDeviation
RealTimeAdjustment
DispatchInstruction
ShortTermForecast
常见规则:
如果实时负荷显著高于日前申报,则提示购电不足风险。
如果实时价格波动过大,则禁止自动激进调整。
如果调度指令限制资源响应,则交易策略必须服从调度约束。
10.5 零售交易本体
零售侧关注售电公司和终端用户之间的合同和收益。
核心类:
RetailCustomer
RetailContract
RetailTariff
RetailPackage
PassThroughClause
DeviationSharingRule
RetailMargin
CustomerCreditRisk
零售策略需要回答:
某客户适合固定价套餐还是分时套餐?
客户负荷曲线是否稳定?
客户偏差风险由谁承担?
现货价格上涨时零售毛利是否受损?
客户是否存在信用或欠费风险?
10.6 储能和虚拟电厂交易本体
储能和虚拟电厂具有可调能力,适合参与峰谷套利、辅助服务、需求响应等。
核心类:
StorageAsset
StateOfCharge
ChargeAction
DischargeAction
VirtualPowerPlant
FlexibleLoad
DemandResponseEvent
ResponseCapability
关键约束:
SOC 上下限。
充放电功率限制。
充放电效率。
响应持续时间。
可用时段。
用户舒适度或生产约束。
调度指令优先级。
交易 Agent 对储能的建议不能只看价差,还要看:
电池寿命成本。
SOC 安全边界。
辅助服务承诺。
需求响应约束。
实时调度约束。
11. 交易动作语义
11.1 为什么要建动作语义
交易建议不能只写自然语言。
例如:
建议加大日前采购。
建议降低风险敞口。
建议做保守报价。
这些话对人能理解,但系统无法判断动作类别,也无法做风控拦截。
本体中应该把动作分类。
11.2 推荐动作类别
| forecast_review | 预测复核 | 复核价格预测置信度 |
| data_quality_check | 数据质量检查 | 检查负荷预测输入是否缺失 |
| hedge_increase | 增加套保 | 增加中长期覆盖 |
| hedge_decrease | 降低套保 | 减少过度锁定 |
| day_ahead_buy | 日前买入 | 申报买入电量 |
| day_ahead_sell | 日前卖出 | 卖出多余电量 |
| real_time_adjust | 实时调整 | 根据偏差调整 |
| retail_reprice | 零售重定价 | 调整套餐报价 |
| risk_reduce | 降低风险 | 降低单边敞口 |
| approval_submit | 提交审批 | 提交交易主管审批 |
| auto_order | 自动下单 | 直接提交交易系统 |
| strategy_report | 策略报告 | 生成策略草案 |
11.3 动作权限
每个动作都应该定义权限。
| data_quality_check | 可以 | 只读检查 |
| forecast_review | 可以 | 生成复核提示 |
| strategy_report | 可以 | 生成草案 |
| approval_submit | 可半自动 | 需要进入企业审批系统 |
| day_ahead_buy | 不建议自动执行 | 涉及真实交易 |
| day_ahead_sell | 不建议自动执行 | 涉及真实交易 |
| auto_order | 禁止默认开放 | 必须极严格授权 |
教学项目中建议坚持:
Agent 可以生成交易建议。
Agent 可以解释证据链。
Agent 可以生成审批材料。
Agent 不应该直接自动下单。
11.4 动作本体 JSON 示例
{
"action_category_id": "day_ahead_buy",
"name": "日前买入",
"description": "在日前市场申报买入电量。",
"default_permission": "human_approval_required",
"required_roles": ["trader", "trading_director"],
"risk_checks_required": [
"R-EXPOSURE-LIMIT",
"R-FORECAST-CONFIDENCE-LOW",
"R-MARKET-NOTICE-FRESHNESS"
],
"forbidden_when": [
"market_suspended",
"missing_price_forecast",
"exposure_limit_exceeded_without_approval"
]
}
12. 白盒规则和风控约束
12.1 白盒规则的结构
一条电力交易白盒规则建议包含:
规则编号
规则名称
适用市场
适用主体
触发条件
风险等级
证据链
允许动作类别
禁止动作类别
审批角色
关联能力问题
关联诊断链
规则来源
版本号
生效时间
失效时间
12.2 数据质量门禁
数据质量是所有交易建议的第一道门禁。
示例规则:
如果负荷预测缺失,则禁止生成日前购电建议。
如果电价预测缺失,则只能生成风险提示,不能生成交易方向建议。
如果合约持仓数据缺失,则禁止计算净敞口。
如果市场公告超过有效期未更新,则需要人工确认规则是否变化。
JSON 示例:
{
"rule_id": "R-DATA-CONTRACT-MISSING",
"name": "合约持仓数据缺失门禁",
"conditions": [
{
"left": "data.contract_position.available",
"operator": "==",
"right": false
}
],
"decision": "blocked",
"risk": "无法计算日前净敞口",
"allowed_action_categories": ["data_quality_check", "strategy_report"],
"forbidden_action_categories": ["day_ahead_buy", "day_ahead_sell", "auto_order"],
"evidence_template": "合约持仓数据不可用,无法确认中长期覆盖率和现货敞口。"
}
12.3 敞口限额规则
敞口是交易风控中的核心概念。
示例规则:
如果某小时日前净敞口绝对值大于风险限额,则需要交易主管审批。
如果日累计净敞口大于风险限额,则禁止自动生成激进策略。
如果客户组合负荷预测置信度低,则敞口限额自动收紧。
JSON 示例:
{
"rule_id": "R-EXPOSURE-HOURLY-LIMIT",
"name": "小时级日前净敞口超限",
"conditions": [
{
"left": "risk.hourly_net_exposure_mwh_abs_max",
"operator": ">",
"right": "risk_limits.max_hourly_net_exposure_mwh"
}
],
"decision": "review_required",
"risk": "日前净敞口超限",
"allowed_action_categories": ["risk_reduce", "approval_submit", "strategy_report"],
"forbidden_action_categories": ["auto_order", "大额单边交易"],
"required_approval_roles": ["trading_director", "risk_manager"],
"evidence_template": "最大小时净敞口 {actual} MWh 超过限额 {limit} MWh。"
}
12.4 预测置信度规则
如果负荷预测置信度低于阈值,则降低可交易电量上限。
如果电价预测置信度低于阈值,则禁止基于价格方向生成激进交易建议。
如果模型最近回测误差超限,则必须进入模型复核。
12.5 市场公告新鲜度规则
电力市场规则可能通过公告变化。
示例:
如果最近市场公告包含交易暂停、规则调整、申报时限变化、价格限值变化,则旧策略必须重新评估。
如果公告更新时间超过指定天数,RAG 必须重新检索最新规则。
JSON 示例:
{
"rule_id": "R-MARKET-NOTICE-FRESHNESS",
"name": "市场公告新鲜度检查",
"conditions": [
{
"left": "market_notice.latest_checked_hours_ago",
"operator": ">",
"right": "risk_limits.max_notice_staleness_hours"
}
],
"decision": "review_required",
"risk": "可能未使用最新市场规则",
"allowed_action_categories": ["data_quality_check", "approval_submit", "strategy_report"],
"forbidden_action_categories": ["auto_order", "激进交易"],
"evidence_template": "最近一次市场公告检查距今 {actual} 小时,超过阈值 {limit} 小时。"
}
12.6 合规规则
合规规则必须比收益目标优先级更高。
示例:
未授权主体不得参与特定交易品种。
超过价格上下限的申报不得提交。
超过申报截止时间不得生成提交动作。
超过企业授权额度的交易必须审批。
真实交易动作必须记录操作者和审批链。
12.7 结算风险规则
结算风险常常来自预测和交易之间的偏差。
示例:
如果预测负荷高于实际负荷概率较大,则可能出现购电过量风险。
如果预测负荷低于实际负荷概率较大,则可能出现购电不足风险。
如果偏差考核价格高于日前价格,则偏差风险加重。
如果零售合同不允许成本传导,则现货高价会侵蚀售电毛利。
13. 诊断链与决策链
13.1 为什么需要诊断链
规则只告诉我们“触发了什么”。诊断链要告诉我们:
为什么会触发?
可能根因是什么?
应该检查哪些证据?
下一步应该怎么做?
哪些动作不能做?
电力交易中尤其需要诊断链,因为价格和偏差问题往往有多个根因。
13.2 电价异常上行诊断链
诊断链编号:D-PRICE-SPIKE-001
入口规则:R-PRICE-SPIKE-RISK
现象:
日前价格预测在晚峰时段显著上行。
可能根因:
1. 晚峰负荷预测偏高。
2. 新能源出力预测偏低。
3. 火电可用容量下降。
4. 联络线或断面约束导致供给受限。
5. 市场公告中存在检修或交易规则变化。
6. 燃料成本抬升导致边际报价上升。
证据要求:
负荷预测曲线。
新能源预测曲线。
机组检修信息。
备用容量或供需裕度。
断面约束信息。
市场公告引用。
历史相似日价格。
允许动作:
生成高价风险报告。
建议复核预测输入。
建议评估合约覆盖率。
建议提交交易主管审批。
禁止动作:
禁止在证据不足时直接生成大额单边买入。
禁止绕过市场公告检查。
禁止自动下单。
13.3 负荷预测低置信度诊断链
诊断链编号:D-LOAD-CONFIDENCE-LOW-001
入口规则:R-LOAD-FORECAST-CONFIDENCE-LOW
现象:
客户组合负荷预测置信度低。
可能根因:
1. 关键客户生产计划缺失。
2. 天气预测变化较大。
3. 历史负荷出现异常跳变。
4. 节假日或特殊事件未正确标注。
5. 计量数据缺失或延迟。
排查步骤:
1. 检查计量数据完整性。
2. 检查客户生产计划是否更新。
3. 检查天气数据是否正常。
4. 对比历史相似日负荷曲线。
5. 查看模型最近回测误差。
允许动作:
降低策略激进程度。
扩大预测区间。
提交人工复核。
禁止动作:
禁止基于低置信度预测扩大现货敞口。
禁止自动提交日前交易申报。
13.4 净敞口超限决策链
决策链编号:D-EXPOSURE-LIMIT-001
入口规则:R-EXPOSURE-HOURLY-LIMIT
输入:
预测负荷。
中长期合约分解。
日前已成交电量。
风险限额。
预测置信度。
计算:
净敞口 = 预测负荷 – 中长期合约分解 – 日前已成交电量。
判断:
如果最大小时净敞口超过限额,则进入 review_required。
如果同时预测置信度低,则升级为 high_risk_review。
允许建议:
减少单边敞口。
提高合约覆盖。
拆分交易批次。
提交风险审批。
禁止建议:
继续扩大同方向敞口。
绕过审批提交订单。
只基于价格预测追求收益。
13.5 结算亏损复盘链
复盘链编号:D-SETTLEMENT-LOSS-001
现象:
某月售电组合结算亏损。
可能来源:
1. 零售套餐价格过低。
2. 中长期合约覆盖不足。
3. 日前价格高于预期。
4. 客户实际负荷偏离预测。
5. 偏差费用过高。
6. 合约分解曲线与客户负荷曲线错配。
证据:
零售合同。
合约价格和分解曲线。
日前和实时价格。
客户实际负荷。
偏差结算明细。
交易记录。
输出:
收益归因。
风险归因。
策略改进建议。
本体规则是否需要调整。
14. 本体与 Agent、RAG、LLM 的结合方式
14.1 推荐运行架构
#mermaid-svg-CHMtOgPBOasB32U3{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-CHMtOgPBOasB32U3 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-CHMtOgPBOasB32U3 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-CHMtOgPBOasB32U3 .error-icon{fill:#552222;}#mermaid-svg-CHMtOgPBOasB32U3 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-CHMtOgPBOasB32U3 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-CHMtOgPBOasB32U3 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-CHMtOgPBOasB32U3 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-CHMtOgPBOasB32U3 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-CHMtOgPBOasB32U3 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-CHMtOgPBOasB32U3 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-CHMtOgPBOasB32U3 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-CHMtOgPBOasB32U3 .marker.cross{stroke:#333333;}#mermaid-svg-CHMtOgPBOasB32U3 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-CHMtOgPBOasB32U3 p{margin:0;}#mermaid-svg-CHMtOgPBOasB32U3 .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-CHMtOgPBOasB32U3 .cluster-label text{fill:#333;}#mermaid-svg-CHMtOgPBOasB32U3 .cluster-label span{color:#333;}#mermaid-svg-CHMtOgPBOasB32U3 .cluster-label span p{background-color:transparent;}#mermaid-svg-CHMtOgPBOasB32U3 .label text,#mermaid-svg-CHMtOgPBOasB32U3 span{fill:#333;color:#333;}#mermaid-svg-CHMtOgPBOasB32U3 .node rect,#mermaid-svg-CHMtOgPBOasB32U3 .node circle,#mermaid-svg-CHMtOgPBOasB32U3 .node ellipse,#mermaid-svg-CHMtOgPBOasB32U3 .node polygon,#mermaid-svg-CHMtOgPBOasB32U3 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-CHMtOgPBOasB32U3 .rough-node .label text,#mermaid-svg-CHMtOgPBOasB32U3 .node .label text,#mermaid-svg-CHMtOgPBOasB32U3 .image-shape .label,#mermaid-svg-CHMtOgPBOasB32U3 .icon-shape .label{text-anchor:middle;}#mermaid-svg-CHMtOgPBOasB32U3 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-CHMtOgPBOasB32U3 .rough-node .label,#mermaid-svg-CHMtOgPBOasB32U3 .node .label,#mermaid-svg-CHMtOgPBOasB32U3 .image-shape .label,#mermaid-svg-CHMtOgPBOasB32U3 .icon-shape .label{text-align:center;}#mermaid-svg-CHMtOgPBOasB32U3 .node.clickable{cursor:pointer;}#mermaid-svg-CHMtOgPBOasB32U3 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-CHMtOgPBOasB32U3 .arrowheadPath{fill:#333333;}#mermaid-svg-CHMtOgPBOasB32U3 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-CHMtOgPBOasB32U3 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-CHMtOgPBOasB32U3 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-CHMtOgPBOasB32U3 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-CHMtOgPBOasB32U3 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-CHMtOgPBOasB32U3 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-CHMtOgPBOasB32U3 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-CHMtOgPBOasB32U3 .cluster text{fill:#333;}#mermaid-svg-CHMtOgPBOasB32U3 .cluster span{color:#333;}#mermaid-svg-CHMtOgPBOasB32U3 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-CHMtOgPBOasB32U3 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-CHMtOgPBOasB32U3 rect.text{fill:none;stroke-width:0;}#mermaid-svg-CHMtOgPBOasB32U3 .icon-shape,#mermaid-svg-CHMtOgPBOasB32U3 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-CHMtOgPBOasB32U3 .icon-shape p,#mermaid-svg-CHMtOgPBOasB32U3 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-CHMtOgPBOasB32U3 .icon-shape .label rect,#mermaid-svg-CHMtOgPBOasB32U3 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-CHMtOgPBOasB32U3 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-CHMtOgPBOasB32U3 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-CHMtOgPBOasB32U3 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
数据接入计量/交易/结算/天气/公告
数据质量检查
预测工具负荷/新能源/电价/偏差
电力本体推理概念/规则/敞口/风控/动作语义
市场规则和经验文档
RAG 检索
LLM 总结解释
策略候选生成
候选排序和风险说明
人工审批
交易执行系统
结算复盘和审计
14.2 LangChain Tool 设计
可以把确定性能力封装成工具。
预测工具:
load_forecast_tool
renewable_forecast_tool
price_forecast_tool
imbalance_forecast_tool
forecast_quality_checker
交易工具:
contract_position_analyzer
day_ahead_exposure_calculator
trading_strategy_generator
settlement_replay_tool
retail_margin_analyzer
本体工具:
electricity_ontology_reasoner
electricity_rule_checker
action_semantics_checker
approval_router
ontology_audit_tool
RAG 工具:
market_rule_retriever
market_notice_retriever
settlement_case_retriever
trading_review_retriever
14.3 Agent 工作流建议
一个教学版电力交易 Agent 可以按下面步骤运行:
1. 读取交易请求和目标运行日。
2. 加载客户负荷、合约持仓、历史价格、天气、市场公告。
3. 做数据质量检查。
4. 运行负荷预测和电价预测。
5. 计算中长期覆盖率和日前净敞口。
6. 调用电力本体推理器。
7. 输出触发规则、证据链、允许动作和禁止动作。
8. 检索最新市场规则和相似复盘案例。
9. 生成交易策略候选。
10. 做风控排序和审批路由。
11. 输出给人工交易员审核。
12. 保存审计记录。
14.4 LLM 应该做什么
LLM 适合:
解释预测结果。
总结市场公告。
把规则和证据组织成报告。
辅助生成能力问题。
辅助从文档中抽取候选概念。
生成交易策略草案。
生成复盘报告初稿。
LLM 不适合直接做:
绕过规则生成下单动作。
凭感觉决定交易电量。
替代市场规则校验。
替代风险审批。
直接修改风控限额。
把未验证的预测结果当作事实。
14.5 RAG 应该检索什么
RAG 知识库可以包含:
市场交易规则。
交易中心公告。
结算规则。
偏差考核规则。
企业风控制度。
历史复盘报告。
交易员经验文档。
客户负荷特征说明。
预测模型说明文档。
RAG 输出应该带引用来源,不能只给模糊总结。
15. 场景评估与审计
15.1 为什么需要场景评估
电力交易本体不是写完就可靠。必须通过场景回放验证。
场景评估可以检查:
规则是否按预期触发。
风险是否被正确识别。
禁止动作是否真的被禁止。
审批角色是否正确。
报告是否包含证据链。
RAG 是否引用正确规则。
预测低置信度时是否降级。
数据缺失时是否阻断交易建议。
15.2 推荐场景库
| S-PRICE-SPIKE | 晚峰价格尖峰风险 | 触发高价风险和审批 |
| S-LOW-CONFIDENCE | 电价预测置信度低 | 禁止激进交易 |
| S-EXPOSURE-HIGH | 日前净敞口超限 | 触发风控复核 |
| S-CONTRACT-MISSING | 合约持仓缺失 | 阻断交易建议 |
| S-NOTICE-STALE | 市场公告未更新 | 需要人工确认 |
| S-RETAIL-MARGIN-LOSS | 零售毛利为负 | 触发零售定价复盘 |
| S-IMBALANCE-RISK | 负荷偏差风险高 | 提示偏差结算风险 |
| S-CONGESTION | 断面约束风险 | 提示区域价格风险 |
| S-RENEWABLE-SURGE | 新能源大发 | 提示低价或弃电风险 |
| S-AUTO-ORDER-BLOCK | 自动下单请求 | 必须禁止 |
15.3 审计清单
本体审计至少检查:
所有规则引用的指标是否存在。
所有指标是否有单位和时间粒度。
所有动作类别是否已定义权限。
所有禁止动作是否能被 Agent 使用。
所有能力问题是否至少被一条规则或工具覆盖。
所有诊断链是否关联入口规则。
所有交易规则是否有来源和版本。
所有市场公告引用是否有更新时间。
所有风控限额是否有审批责任人。
所有场景是否能稳定复现预期门禁结果。
15.4 审计报告示例
电力本体覆盖审计报告
审计状态:pass
本体版本:v0.1.0
市场范围:教学版日前交易
覆盖概览:
市场主体:8
交易品种:5
预测任务:4
指标:42
规则:18
动作类别:12
诊断链:8
能力问题:24
场景:10
发现:
error=0
warning=2
info=3
建议:
补充实时市场偏差结算规则。
补充虚拟电厂响应能力诊断链。
16. 表达形式选择
16.1 新人推荐先用 Markdown 和表格
第一步不要急着写 OWL。
新人可以先用:
概念表
指标表
关系表
规则表
动作表
诊断链表
能力问题表
场景表
这样业务专家容易评审。
16.2 工程落地推荐用 JSON
JSON 适合教学项目和工程原型:
容易读取。
容易测试。
容易写审计脚本。
容易接入 Python 和 LangChain。
新人学习成本低。
16.3 语义标准化可以演进到 RDF/OWL/SHACL
当项目需要跨系统、跨团队、跨区域复用时,可以考虑:
RDF:表达三元组。
RDFS:表达类层次和属性。
OWL:表达更强语义约束和推理。
SHACL:表达数据形状和校验规则。
SPARQL:查询知识图谱。
但要注意:
OWL 和 SHACL 不是第一天必须掌握的内容。
先把业务概念、规则和审计闭环做扎实,比追求复杂语义格式更重要。
17. 推荐工程目录
一个教学版电力本体项目可以这样组织:
electricity-agent/
README.md
电力本体构建.md
ontology/
electricity_core.json
electricity_market_products.json
electricity_forecast_tasks.json
electricity_metrics.json
electricity_relations.json
electricity_rules.json
electricity_actions.json
electricity_diagnostic_chains.json
electricity_competency_questions.json
electricity_mapping_matrix.json
electricity_instances_demo.json
docs/
01_电力市场业务总览.md
02_负荷预测学习指南.md
03_电价预测学习指南.md
04_日前交易学习指南.md
05_偏差结算与风控学习指南.md
06_电力交易Agent安全边界.md
examples/
demo/
load_forecast.json
price_forecast.json
contract_position.json
market_notice.md
risk_limits.json
scenarios/
price_spike.json
exposure_high.json
low_confidence.json
src/
electricity_agent/
schema.py
app.py
langchain_tools.py
ontology/
loader.py
reasoner.py
audit.py
tools/
forecast_tools.py
trading_tools.py
settlement_tools.py
risk_tools.py
rag/
local_rag.py
agent/
workflow_runtime.py
graph_runtime.py
tests/
test_ontology.py
test_forecast_tools.py
test_trading_rules.py
test_scenarios.py
18. 最小可行电力本体
18.1 最小内容
新人第一次实践时,可以只做这些内容:
10 个核心类:
MarketParticipant、LoadForecast、PriceForecast、Contract、Position、Exposure、BidOffer、Settlement、RiskLimit、TradingAction。
20 个核心指标:
预测负荷、预测价格、合约电量、合约价格、净敞口、置信度、偏差率等。
10 个核心关系:
affects、hedges、exposes_to、constrains、triggers、requires_approval_by 等。
8 条白盒规则:
数据缺失、预测低置信度、敞口超限、公告过期、价格上下限、自动下单禁止、审批规则、结算风险。
5 条诊断链:
价格尖峰、低置信度、敞口超限、偏差风险、结算亏损。
5 个测试场景:
价格尖峰、预测低置信度、合约缺失、敞口超限、自动下单阻断。
18.2 最小闭环
最小闭环应该能做到:
输入预测负荷、预测价格、合约持仓和风控限额。
计算日前净敞口。
根据本体规则判断是否超限。
输出触发规则和证据链。
输出允许动作和禁止动作。
生成策略草案。
要求人工审批。
保存审计记录。
18.3 最小 JSON 示例
{
"scenario_id": "S-EXPOSURE-HIGH",
"target_day": "2026-06-09",
"forecast": {
"load_mwh": 1000,
"day_ahead_price_yuan_per_mwh": 520,
"price_confidence": 0.72
},
"position": {
"medium_long_term_contract_mwh": 760,
"day_ahead_traded_mwh": 50
},
"risk_limits": {
"max_hourly_net_exposure_mwh": 150,
"min_price_forecast_confidence": 0.65
},
"calculated": {
"net_exposure_mwh": 190
}
}
期望推理结果:
{
"status": "review_required",
"triggered_rules": ["R-EXPOSURE-HOURLY-LIMIT"],
"evidence": [
"日前净敞口 190 MWh 超过限额 150 MWh。"
],
"allowed_action_categories": ["risk_reduce", "approval_submit", "strategy_report"],
"forbidden_action_categories": ["auto_order", "大额单边交易"],
"required_approval_roles": ["trading_director", "risk_manager"]
}
19. 完整落地示例
19.1 场景说明
我们以售电公司日前购电策略为例。
业务目标:
售电公司需要在日前市场为明日客户组合购电。
系统需要结合负荷预测、电价预测、中长期合约持仓和风控限额,生成交易建议。
所有建议必须可解释、可审计、可审批。
19.2 输入数据
{
"portfolio": {
"participant_id": "retailer_demo",
"customers": ["steel_user_a", "chemical_user_b", "park_user_c"]
},
"forecast": {
"target_day": "2026-06-09",
"load_forecast_mwh": {
"hour_18": 1020,
"hour_19": 1080,
"hour_20": 990
},
"day_ahead_price_forecast_yuan_per_mwh": {
"hour_18": 580,
"hour_19": 650,
"hour_20": 610
},
"price_confidence": {
"hour_18": 0.78,
"hour_19": 0.62,
"hour_20": 0.74
}
},
"position": {
"contract_mwh": {
"hour_18": 850,
"hour_19": 820,
"hour_20": 860
},
"day_ahead_traded_mwh": {
"hour_18": 0,
"hour_19": 0,
"hour_20": 0
}
},
"risk_limits": {
"max_hourly_net_exposure_mwh": 180,
"min_price_forecast_confidence": 0.65,
"max_single_trade_value_cny": 100000
}
}
19.3 中间计算
hour_18 净敞口 = 1020 – 850 = 170 MWh
hour_19 净敞口 = 1080 – 820 = 260 MWh
hour_20 净敞口 = 990 – 860 = 130 MWh
hour_19 同时出现两个问题:
净敞口 260 MWh 超过限额 180 MWh。
电价预测置信度 0.62 低于阈值 0.65。
19.4 本体规则触发
触发规则:
R-EXPOSURE-HOURLY-LIMIT
R-FORECAST-CONFIDENCE-LOW
证据链:
hour_19 预测负荷 1080 MWh。
hour_19 合约覆盖 820 MWh。
hour_19 净敞口 260 MWh。
小时净敞口限额 180 MWh。
hour_19 电价预测置信度 0.62。
最低置信度阈值 0.65。
允许动作:
生成策略草案。
建议降低净敞口。
提交风控经理和交易主管审批。
补充预测复核。
禁止动作:
自动下单。
大额单边买入。
忽略预测低置信度继续激进报价。
绕过审批提交交易系统。
19.5 Agent 输出示例
结论:
明日 hour_19 存在日前净敞口超限和电价预测低置信度双重风险。
系统不应自动提交交易申报。
证据:
hour_19 预测负荷 1080 MWh,合约覆盖 820 MWh,净敞口 260 MWh,超过限额 180 MWh。
hour_19 电价预测置信度 0.62,低于最低阈值 0.65。
建议:
1. 先复核 hour_19 的负荷预测和电价预测输入。
2. 评估是否通过小批量交易降低净敞口。
3. 将 hour_19 策略提交风控经理和交易主管审批。
4. 审批通过前禁止自动下单。
19.6 这就是白盒交易 Agent
这个示例中,大模型没有直接决定“买多少电”。
系统的关键判断来自:
预测工具输出。
合约持仓计算。
本体规则。
风控限额。
证据链。
人工审批。
LLM 只负责把这些结果组织成新人和交易员都能理解的报告。
20. 本体模板
20.1 概念模板
概念 ID:
中文名称:
英文名称:
所属上层类:
定义:
业务解释:
典型实例:
关键属性:
关联关系:
容易混淆的概念:
是否进入工程 JSON:
负责人:
版本:
20.2 指标模板
指标 ID:
指标名称:
所属对象:
单位:
时间粒度:
空间粒度:
数据来源:
合理范围:
是否可预测:
是否用于交易:
是否用于风控:
缺失处理:
关联规则:
20.3 预测任务模板
预测任务 ID:
预测任务名称:
预测目标:
目标时间窗口:
预测提前期:
输入特征:
输出字段:
置信度表达:
回测指标:
模型版本:
适用范围:
禁止使用场景:
关联交易任务:
20.4 规则模板
规则 ID:
规则名称:
规则类型:
适用市场:
适用主体:
触发条件:
风险等级:
证据链:
允许动作:
禁止动作:
审批角色:
规则来源:
版本号:
生效时间:
失效时间:
20.5 交易动作模板
动作 ID:
动作名称:
动作类别:
业务含义:
是否允许自动执行:
所需审批角色:
前置数据检查:
前置风控规则:
禁止条件:
审计字段:
20.6 诊断链模板
诊断链 ID:
入口规则:
异常现象:
可能根因:
证据要求:
排查步骤:
允许动作:
禁止动作:
升级条件:
输出字段:
20.7 场景模板
场景 ID:
场景名称:
业务背景:
输入数据:
预期触发规则:
预期风险等级:
预期允许动作:
预期禁止动作:
预期审批角色:
报告必须包含内容:
21. 常见错误
21.1 把电价预测结果当成确定事实
电价预测是概率判断,不是事实。
本体中必须表达:
预测值。
置信度。
预测区间。
适用范围。
模型版本。
回测误差。
交易策略不能只根据一个点预测做激进决策。
21.2 只建价格,不建持仓和敞口
交易风险不是只由价格决定。
如果没有持仓和敞口,本体无法回答:
我到底缺多少电?
我到底多买了多少电?
价格上涨对我有利还是不利?
偏差结算风险在哪里?
21.3 忽略市场规则版本
电力市场规则会变化。
本体中必须记录:
规则来源。
规则版本。
生效时间。
适用区域。
最近公告更新时间。
21.4 把交易建议和交易指令混在一起
交易建议是分析结果,交易指令是真实动作。
教学项目中建议明确:
Agent 输出 TradeRecommendation。
人工审批后才能形成 TradeOrder。
TradeOrder 才能进入真实交易系统。
21.5 没有动作禁区
本体不只要告诉系统“可以做什么”,还要告诉系统“不能做什么”。
例如:
预测低置信度时不能激进交易。
合约持仓缺失时不能计算净敞口。
公告未更新时不能沿用旧策略。
审批未通过时不能下单。
21.6 没有结算复盘
如果只看交易前策略,不做结算复盘,本体无法持续改进。
复盘要回答:
亏损来自价格预测错误,还是负荷预测错误?
来自合约覆盖不足,还是零售定价错误?
来自偏差费用,还是现货价格波动?
哪条规则应该调整?
哪个模型需要重训?
21.7 让 LLM 直接生成交易规则
LLM 可以辅助抽取候选规则,但不能直接作为正式规则来源。
正式规则必须经过:
市场规则核对。
交易专家评审。
风控评审。
法务或合规确认。
场景测试。
版本发布。
22. 推广路线
22.1 新人学习路线
第 1 周:
学习电力市场基本概念,理解负荷、电价、合约、偏差、结算。
第 2 周:
用表格建立 20 个核心概念、20 个指标、10 个关系。
第 3 周:
写 10 个能力问题,围绕预测、交易、风控、结算。
第 4 周:
建立 5 条规则和 3 条诊断链。
第 5 周:
用 JSON 表达本体,并写一个最小推理脚本。
第 6 周:
建立 5 个场景,运行审计和测试。
第 7 周:
接入 RAG,检索市场公告和交易规则。
第 8 周:
接入 Agent,生成可解释交易策略草案。
22.2 企业推广路线
第一阶段:术语统一
建立电力预测、交易、结算、风控术语表和概念表。
第二阶段:核心规则显式化
把企业风险限额、审批规则、市场规则变成规则表。
第三阶段:工程 JSON 化
让系统可以读取、校验和推理。
第四阶段:Agent 接入
把本体门禁放在策略生成前后,保证 LLM 不能绕过规则。
第五阶段:场景评估
建立典型交易风险场景库。
第六阶段:审计治理
形成版本管理、规则来源、审批记录和复盘闭环。
第七阶段:跨市场扩展
从日前交易扩展到中长期、实时、零售、辅助服务、储能和虚拟电厂。
22.3 最小推广包
对外推广时,建议准备:
电力本体构建方法文档。
电力市场核心概念表。
预测任务模板。
交易规则模板。
动作语义模板。
诊断链模板。
场景评估模板。
审计报告模板。
Agent 接入示例。
新人培训案例。
23. 最重要的结论
电力预测和电价交易本体的核心不是把术语写得很复杂,而是把交易决策中最关键的对象、关系、规则和边界显式化。
可以记住这条主线:
市场对象 -> 预测对象 -> 合约持仓 -> 现货敞口 -> 风险规则 -> 动作语义 -> 审批链 -> 结算复盘
在电力交易 Agent 中:
预测模型提供数值判断。
RAG 提供规则和经验引用。
LLM 提供语言理解和报告生成。
Agent 提供工具编排和流程控制。
本体提供白盒边界、证据链和可审计规则。
如果要构建一个适合新人学习、适合企业推广、适合未来接入真实系统的电力 Agent,最重要的是先把本体闭环建好:
能力问题清楚。
概念和指标清楚。
数据路径清楚。
规则和动作边界清楚。
证据链清楚。
审批责任清楚。
场景测试清楚。
版本和审计清楚。
做到这些,电力本体就不再是一份静态文档,而会成为电力预测和电价交易智能体的白盒知识底座。





