跳到正文

研究指南

股票筛选与候选名单

这只股票为什么被选中:生成逐条件可复查的选股说明

股票筛选说明应来自真正选中它的执行过程。为每条条件保留观测值、阈值、运算符、数据来源及结果,再找到穿过分组规则的有效通过路径。简短说明从这条路径生成,不通过、未知或根本没有执行的条件不能被写成优势。结果正确并不能自动证明给出的入选理由也正确。

本文对三只合成股票生成结构化轨迹,并执行确定性说明检查,不用AI模型理解任意自然语言。CoTrading对应解释界面仍为规划或待核实。先建立这种可检查约定,再接生成式写作,后续作者才知道哪些条件可以写、哪些必须保留未知,以及审阅者应怎样回到数值证据。

先定义什么算充分支持路径

本例规则为正市盈率低于20,并且收入增长至少10%或股息率至少4%两者满足其一。比例存为0.10与0.04。一条有效通过说明必须包含市盈率门槛和至少一个为真的替代条件。只说市盈率符合不够;把所有看起来不错的指标列出来,也可能把没过阈值的项目写成支持理由。

Python表达式参考说明布尔组合与求值行为。普通真假转换不会保留这里所需未知语义,因此样例定义三态助手:OR中任一为真则真,没有真但含未知则未知,两项都假才假。AND中任一必需子项为假则假,没有假但含未知则未知,全部真才真。

这两个助手范围明确,只执行当前声明规则,不是任意表达式解释器,也不是自然语言论证验证器。实际复杂树可以扩展,但每种节点都要有相同明确语义和测试,不能靠最后一段解释反推程序应该如何决定。

写说明前先保存叶节点证据

每股轨迹包含原数值、阈值、比较运算、市盈率正下界、叶结果和来源位置。合成位置形式为fixture-1:股票:字段;真实任务应指向本次运行使用的那条来源记录,而不是一个随时更新、可能已换数值的当前网页。来源与规则版本一起保留,才能重建当时说明。

股票市盈率收入增长股息率最终结果
AAA180.080.05通过股息率路线
BBB19未知0.02未知
CCC240.200.05市盈率阻挡

AAA市盈率和股息率通过,增长失败;BBB市盈率通过、股息率失败、增长缺失,因此替代节点未解决;CCC两条替代都满足,却被共同市盈率挡住。这三条刻意不同的路径,可以检验解释器是否把任何一个好看的指标都当成入选证据。

失败和未知股票也保留轨迹,不能只为入选者生成理由。接近入选的股票需要明确阻挡项,未知字段则继续未知。不能因为模型认为某公司成熟稳健,就把未取得的增长改写成“增长稳定”;这种叙述没有对应本次执行条件,即使常识上听起来合理也不应放行。

从同一叶结果计算分组决定

def tri_or(values):
    return True if True in values else None if None in values else False

def tri_and(values):
    return False if False in values else None if None in values else True

decision = tri_and([leaves["pe"]["result"],
                   tri_or([leaves["growth"]["result"],
                           leaves["yield"]["result"]])])

选中状态直接来自这次分组结果,不应在另一处独立算通过标志,再随便附上当前能找到的叶数据。分组结果与保存入选状态不一致时,停止发布说明,先找到首个不同条件或版本。文案审阅不能补救两份执行事实本身已经冲突的问题。

若正式实现为性能采用短路求值,要记录哪些条件被跳过。跳过不是假、不是缺数未知,也不是已观察优势。本样例完整计算三片叶,因此每个股票都能展示全部状态。要在真实系统保留这种解释能力,应在执行设计阶段决定,不能事后让模型补全没有运行的路径。

先校验结构化理由,再渲染文字

样例接收提议支持条件编号列表,要求它构成当前规则的完整见证:有PE,再有增长或股息率之一。每个编号必须存在且结果为真,股票最终决定也必须为真。因此空理由、只写PE、不相关理由或额外失败理由均不能通过。这里校验的不仅是单句话真假,还包括所列条件是否足够说明当前选择。

witness = "pe" in claims and bool({"growth", "yield"} & set(claims))
accepted = witness and record["decision"] is True and all(
    name in record["leaves"] and record["leaves"][name]["result"] is True
    for name in claims
)

下载完整示例。使用Python 3.12+、标准库与合成记录,运行python R525.py。作者源文件为docs/growth/research/round-5/examples/R525.py。

实际渲染输出AAA passes via pe=18 and yield=0.05,即AAA通过PE18和股息率0.05路线。断言验证AAA真、BBB未知、CCC假;拒绝AAA增长理由、凭空的管理层理由、BBB未知增长及CCC入选说明。尝试以PE加失败增长渲染AAA,会抛出unsupported_explanation,不会继续输出一段误导性理由。

这不是任意自然语言语义理解。后续AI作者应保留接受的条件编号与数字,最终段落对结构外的主张仍需审阅。样例证明的是模板渲染与结构门槛能够执行,不证明一个模型永远不会在别处添加上涨预测或不相关形容词。把能力范围说清楚,才能为真实集成设计下一道检查。

检查结果正确但理由错误的反例

诱人的说明是“AAA因低估值和强增长入选”。PE有支持,增长0.08却低于0.10。AAA走的是股息率路线,不是增长路线。最终入选状态为真,不能挽救错误理由。拒绝这段说明,保护的是公司听起来有吸引力与它实际满足哪条筛选之间的区别。

CCC则说明真叶也未必能支持入选。它增长0.20、股息率0.05都满足,但PE24让根节点失败。只挑增长解释它被选中,会漏掉共同硬门槛。说明必须沿整条分组规则,而不是从记录里挑几个正确但不充分的数值拼成故事。

BBB缺增长不能描述为弱点或优势。应说明替代分支目前算不完,指出字段及来源状态,并转到数据队列。补观测可以改变执行结果,改写说明文字不能。对未知股票给出下一步,比把它勉强归入优质或劣质类别更符合证据。

输入修订后让轨迹与说明一起更新

给说明附规则版本、输入快照和轨迹编号。输入变化先重算受影响叶与分组结果,再渲染替代说明;旧文字保留在旧运行中,不能新表旁边继续显示旧理由。若旧结果失效,就明确标记待更新,而不是只在后台保存了一份新数字。

规则改变时,旧支持路径也可能不再充分。增加共同排除,或把OR替代改成必需,都会改变见证要求。即使旧说明每句数值仍真,也要重新验证是否解释了新规则。结构化理由编号能够帮助定位重审范围,却不允许忽略规则本身变化。

交接包括逐条件轨迹、最终分组结果、接受理由编号、生成说明和拒绝理由测试。让审阅者直接从表还原AAA股息率路径与CCC失败门槛,并核对说明数字来自同次来源。规则通过只说明符合这项筛选,不推出买入建议、上涨概率或完整投资论点;解释也应保持同样具体的范围。

将说明作为带版本产物审阅

即使用户只看一句短说明,也保留背后的条件编号。审阅者才能区分只是措辞变化,还是支持路径已经改变。AAA以后若从增长路线而非股息率路线通过,应重新生成见证并连接新轨迹,不是给旧文换几个形容词。旧文字仍保存原运行,防止后来读者误以为当时已经具备新依据。

展示阈值时核对严格性与单位。“低于”不能改成“不超过”,存储比例也不能输出错误百分数。样例模板有意朴素,真实界面可以把同一接受数值格式化,但不能顺势添加“显著低估”“增长强劲”等超出已执行条件的判断。数值超过某阈值,只支持该比较,不自动支持更广的公司评价。

失败与未知应采用不同模板,并附实际阻挡项。未知不是测得失败,替代路线为真也不能覆盖必需门槛为假。保留这些路径,可以避免解释生成又变成第二套不一致选股器。它负责呈现已经接受的执行证据,不用没有声明的偏好重新决定哪些公司听起来值得入选。

还应检查说明是否遗漏关键限定。例如本例以特定增长期间和股息率定义为前提,最终文字至少能连接字段字典,而不让读者以为所有口径都满足。若来源状态后来失效,说明同样进入待更新,不能因为一句话本身仍通顺就继续展示为当前结论。

解释验收最好保留一条最终结果正确却理由错误的回归样例。未来加入更自然写作时仍重放AAA增长反例,确保语言质量提升没有削弱结构约束。更多文字不应带来更多未经执行的支持条件。

常见问题

一条真实条件足够解释入选吗?

未必,还要构成实际规则的充分通过路径,包含共同必需门槛。

检查器能验证任意AI段落吗?

不能。它校验结构化条件编号和确定性模板,自由文字仍需额外审阅。

相关阅读