欢迎光临
我们一直在努力

电力行业领域本体构建思考

最近需要对电力行业的数据进行建模,需要考虑如何结合本体,这里是一份面向零基础新人的电力行业本体构建专题文档。

它聚焦两个方向:

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 推荐场景库

场景 ID场景期望
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,最重要的是先把本体闭环建好:

能力问题清楚。
概念和指标清楚。
数据路径清楚。
规则和动作边界清楚。
证据链清楚。
审批责任清楚。
场景测试清楚。
版本和审计清楚。

做到这些,电力本体就不再是一份静态文档,而会成为电力预测和电价交易智能体的白盒知识底座。

赞(0)
未经允许不得转载:171主机测评 » 电力行业领域本体构建思考
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址