Codex股票分析实测:用TickDB MCP查A股行情、财报数据和估值
TickDB Research ·
摘要:用Codex分析A股,怎样把行情、财报数据和估值放在一起看?本文以寒武纪为例,实测通过TickDB MCP获取历史行情、单季财务与PE估值,结合公司公告核对期间和口径,再用Python生成事实卡、整理个股研究笔记。附可复制的任务指令、真实输入和可运行代码,适合个人研究者与AI投研产品团队,减少重复查数和整理。
三季报披露期间,看到一只关注的股票利润增长超过一倍,你最想弄清楚的,往往是增长从哪里来、现金回来了多少,以及市场原先已经期待了多少。把新闻标题交给AI,它很快就能写出一段点评;可一旦把“同比增长”顺手写成“超预期”,后面的判断就可能偏了。
先把数字查全,再把问题问准。让Codex通过TickDB取得同一只股票的行情、财报数据和估值,完成必要计算,最后留下一页写清依据与下一步的研究笔记。TickDB提供AI可调用的结构化数据入口,个人研究者可以少重复查数,投研产品团队也能据此设计研究卡片。
这次选寒武纪688256.SH。2026年10月29日,我们通过已连接的TickDB MCP查询股票信息、历史日线、利润表、现金流和估值,再结合公司季度报告核对。下面按一次个股研究的顺序展开:先看拿到了什么,再看这些数字该怎样读,最后把方法交给你。

图1:AI生成概念示意,展示资料整理的关系;卡片上的曲线和图形不表示寒武纪的实际走势。
一、先看实测结果:数字到手后,研究从哪里继续
这次查询得到的几项信息,足够组成一页研究底稿:
| 观察项目 | 本次结果 | 接下来要弄清楚什么 |
|---|---|---|
| 历史行情 | 9月22日至10月27日取得20根前复权日线,首末收盘价1121.00元、912.98元,变化−18.56% | 这段窗口内发生过哪些信息变化 |
| 单季营业收入 | 2026年第三季度约35.31亿元,同比增长104.47% | 增长来自哪些业务或客户变化 |
| 单季归母净利润 | 约14.04亿元,同比增长147.74% | 这是相对去年增长,还是也高于此前预期 |
| 单季经营现金流 | 约−0.84亿元;上年同季约−9.40亿元 | 净流出收窄以后,回款与支出各有什么变化 |
| PE估值 | 10月29日查询返回146.01,返回未附明确的估值业务时点 | 盈利分母采用什么口径,比较基准是否一致 |
财务金额按亿元保留两位。接口整数金额与公告原文有元级差异;接口报告期日期标签为9月29日,公告报告期末为9月30日。本例保留两边原值,季度归属按公告核对。
把这些数字放在一起,最有用的收获是:下一问有了落点。利润增长去查预期和利润构成,现金流去查收付明细,估值去查分母。研究不必停在“公司增长很快”这句话上。
二、利润增长这么快,为什么还要继续查
同比增长,比较的是去年;超预期,要找此前的预期
10月23日晚,IT之家报道了寒武纪第三季度业绩。报道列出的营收、利润数字,可以回到公司报告核对;其“AI解读”还使用了“大幅超出市场预期”的表述。
这正好给我们一个实际的阅读问题:预期基准在哪里?
同比增长147.74%,比较的是本年第三季度和去年第三季度的利润。判断是否超预期,则要找财报披露前、针对同一季度的预测:谁预测的,何时发布,预测的是归母净利润还是其他指标。若采用多家机构的预测,还要交代纳入了哪些机构。
同比增长:本期实际值,与上年同季实际值比较。
是否超预期:本期实际值,与披露前对本期的预测比较。
本篇取回了实际财务数据,没有另行建立机构预测样本,因此笔记保留“同比增长”,把“核查此前预期”列为下一步。读新闻、看AI点评时,也可以用这一问检验它有没有跳过依据。
利润与现金流放在一起看,能问得更具体
本例第三季度单季归母净利润约14.04亿元,经营现金流约−0.84亿元。两者为什么不同?先从账上确认收入与实际收到现金的时间差开始想:有些收入已经确认,款项可能稍后才收;有些经营支出发生在当期,也未必与当期利润一一对应。
江苏证监局的投资者教育资料也解释过,利润表与现金流量表的项目没有简单的一一对应关系,可以借助现金流量补充资料,逐步将净利润调节为经营活动现金流量净额。
因此,查下去的顺序可以很具体:
| 继续查什么 | 想回答的问题 | 需要补哪份资料 |
|---|---|---|
| 销售回款与应收变化 | 收入增长之后,收款情况怎样 | 现金流量表、资产负债表及相关说明 |
| 采购付款与存货变化 | 是否有经营支出先于后续销售发生 | 现金流量表、存货及采购相关说明 |
| 其他经营收付与调整项目 | 利润和现金的差异还有哪些来源 | 报告说明;有补充资料时再核对调节项 |
这些是核查方向,本例还没有把差异归因到某个项目。单季现金流为负,也不能直接推导公司经营恶化:它较上年同季的净流出已经明显收窄,仍要结合累计期间、实际明细和业务节奏读。
一个PE数字,离贵或便宜还差几个条件
估值查询返回PE值146.01,同时带有关于“便宜”和区间位置的自动描述。研究笔记先留下数值,继续核查计算条件。
市盈率把股价与盈利联系起来。用哪个时点的股价,盈利采用上年度、滚动期间还是预测值,都会影响比较。换一家公司的PE来对照,也要先把这些条件对齐。
本次返回没有明确的估值业务时间字段,我们只知道10月29日取回了这条结果。因此不能把它与10月27日的收盘价当作同一天的一组数,进一步推导所谓便宜程度。
三、看股价与财报,先把时间放对
本例最容易混淆的地方,是把一份第三季度报告与一个横跨9月、10月的行情窗口,当成了同一段时间。

图2:左侧是数字覆盖的期间,右侧是本次使用的资料记录日期。公告存档页日期为10月24日,10月23日晚已有公开报道;首次披露时点应核对交易所记录。
财报里的单季经营情况属于7月至9月。本文的20根日线覆盖9月22日至10月27日,首末收盘变化为:
(912.98 ÷ 1121.00 − 1)× 100% ≈ −18.56%
这段价格窗口包含报告公开报道之前和之后的记录。因此,把−18.56%直接写成“财报公布后的市场反应”,时间上就对不上。若要研究财报发布后的价格表现,应先核对公告首次公开的具体时间,再单独划定观察窗口,并查看同期其他信息。
同样,今天查到一份财报,也不能默认过去某个交易日已经能看到它。做历史研究时,这一步尤其重要。
数字旁边留下日期和期间,读者就能自己判断哪些可以直接比,哪些还缺条件。原本笼统的“股价为什么不跟业绩走”,也就能拆成更容易查证的问题。
四、TickDB在这项研究里,提供了什么价值
如果只研究一只股票,手工翻行情和报告也能完成。但观察名单需要反复更新,或者要把这套过程放进投研产品时,每次重新找入口、抄数字、整理格式,就会成为持续的工作量。
本例通过TickDB MCP,围绕同一个证券对象取得历史行情、财务和估值输入,再交给Codex整理、交给代码计算。几类数据能接着用,是这条路径的主要价值:行情提出价格问题,财务把问题落到经营指标,估值提供进一步比较的线索。TickDB产品入口
这里也可以分清分工:TickDB提供本篇实际取得的数据,代码计算首末变化和同比,研究者核对公告、寻找预期与经营明细。最后生成的研究笔记由这一整条过程完成。
对行情应用和AI投研产品,值得借鉴的是卡片的设计:在每项数字旁保留期间与来源,在观点后面留出“还要查什么”。用户点开现金流观察,应该知道接下来查哪张表;点开估值,应该能看到计算条件,而不只有一句“偏低”。
本文跑的是MCP按需查询。持续盘中更新属于另一项产品任务,要另行验证相应的行情订阅方式。换证券、换市场时,也要核对可用字段、报告期和账户权限。本例发现的日期标签与元级金额差异,都保留在核对记录中。
五、把这套研究方法带走
先在Codex中接好TickDB MCP,并确认当前账户可以调用所需工具。然后把下面的任务交给它:
为寒武纪688256.SH整理一页研究笔记,数据通过TickDB MCP实际查询。
1. 查询股票身份,确认代码、名称和币种。
2. 查询截至2026-10-27的20根日线,interval=1d,adjust=forward。
end_time按Asia/Shanghai当日23:59:59.999转换为Unix毫秒。
按日期升序排列,保留原始返回。
3. 分别查询利润表IS和现金流CF,period_type=q3,n=2。
保留营业收入、净利润、经营现金流的字段名、年份、期间及原值。
对照公司季度报告,核对单季/累计、归母归属、单位;
披露时间查公告记录,不用第三方存档页日期代替。
4. 查询估值;保留数值及可用时间信息,不直接采用自动描述作结论。
5. 将行情首尾记录与两年同季财务整理为下方JSON格式,
保存research_input.json,运行本页make_note.py生成事实卡。
6. 根据事实卡写一页笔记:价格观察、经营观察、估值待查、下一步。
关键事实注明数据或公告来源;缺项就保留问题,不补造数字。
不把价格与业绩同时出现写成已经找到涨跌原因。
这对应了本篇实际执行的数据查询与整理步骤。你可以先保留同一标的和日期,把整条过程跑一遍,再替换自己的研究对象与窗口。
给技术同事的最小实现
下面的输入取自本次真实返回。价格部分只列计算所需的首尾两条;完整查询取得20条。财务保留接口原值,净利润字段在本例结合公告核对归属。
保存为research_input.json:
{
"symbol": "688256.SH", "currency": "CNY",
"queried_at": "2026-10-29", "adjust": "forward",
"prices": [["2026-09-22", "1121.00"], ["2026-10-27", "912.98"]],
"fiscal_year": 2026, "period": "q3",
"financials": [
{"year": 2026, "period": "q3", "metric": "OperatingRevenue", "value": "3530828295"},
{"year": 2025, "period": "q3", "metric": "OperatingRevenue", "value": "1726780893"},
{"year": 2026, "period": "q3", "metric": "NetProfit", "value": "1403610673"},
{"year": 2025, "period": "q3", "metric": "NetProfit", "value": "566563170"},
{"year": 2026, "period": "q3", "metric": "NetOperateCashFlow", "value": "-83677875"},
{"year": 2025, "period": "q3", "metric": "NetOperateCashFlow", "value": "-940455129"}
]
}
再保存下面的make_note.py。使用Python 3标准库,无需安装第三方依赖:
import json
import sys
from datetime import date
from decimal import Decimal
from pathlib import Path
def number(value):
result = Decimal(str(value))
if not result.is_finite():
raise ValueError("金额或价格必须是有限数值")
return result
def make_note(data):
if data["currency"] != "CNY" or data["adjust"] != "forward":
raise ValueError("本例要求人民币、前复权价格")
prices = sorted(data["prices"], key=lambda row: date.fromisoformat(row[0]))
if len(prices) < 2 or len({row[0] for row in prices}) != len(prices):
raise ValueError("至少需要两个不同日期,且不能重复")
if any(number(row[1]) <= 0 for row in prices):
raise ValueError("价格必须为正数")
fields = {}
for row in data["financials"]:
key = (int(row["year"]), row["period"], row["metric"])
if key in fields:
raise ValueError("财务字段重复,请先核对口径")
fields[key] = number(row["value"])
year, period = int(data["fiscal_year"]), data["period"]
lines = [f'# {data["symbol"]} 研究事实卡',
f'取数日期:{data["queried_at"]};币种:CNY;价格:前复权。']
first, last = prices[0], prices[-1]
change = (number(last[1]) / number(first[1]) - 1) * 100
lines.append(f'价格:{first[0]} {number(first[1]):.2f}元 → '
f'{last[0]} {number(last[1]):.2f}元;首末收盘变化 {change:+.2f}%。')
for metric, label in [("OperatingRevenue", "营业收入"),
("NetProfit", "净利润"),
("NetOperateCashFlow", "经营现金流")]:
current = fields[(year, period, metric)]
previous = fields[(year - 1, period, metric)]
text = f'{label}({year}/{year-1},{period}):'
text += f'{current / 100000000:.2f} / {previous / 100000000:.2f}亿元。'
if previous > 0:
text += f' 同比 {(current / previous - 1) * 100:+.2f}%。'
else:
text += ' 上期为零或负数,保留金额对照,不计算同比百分比。'
lines.append(text)
lines.append('待查问题:请结合公告、现金流明细和估值口径补充。')
return '\n\n'.join(lines) + '\n'
if __name__ == "__main__":
source = Path(sys.argv[1] if len(sys.argv) > 1 else "research_input.json")
try:
data = json.loads(source.read_text(encoding="utf-8"))
Path("research_note.md").write_text(make_note(data), encoding="utf-8")
print("已生成 research_note.md")
except (OSError, ValueError, KeyError, TypeError, ArithmeticError) as error:
raise SystemExit(f"输入需核对:{error}")
在这两个文件所在目录运行:
python3 make_note.py research_input.json
程序生成research_note.md。本次实际输出中的关键结果为:
首末收盘变化:-18.56%
营业收入:35.31 / 17.27亿元;同比 +104.47%
净利润:14.04 / 5.67亿元;同比 +147.74%
经营现金流:-0.84 / -9.40亿元
上期为零或负数,保留金额对照,不计算同比百分比。
这段代码完成本地计算和事实卡生成;新的数据由前面的MCP查询取得。以后替换输入时,币种、价格口径、财务期间与字段含义也要一起核对。事实卡里保留“净利润”字段名称,是否能在笔记中称为归母净利润,要继续核对对应公告。
不写代码,也可以直接使用这个笔记格式
研究对象与取数日期:
价格观察:选定哪个区间,发生了什么变化?
经营观察:对应哪份报告、哪种期间,有哪些实际变化?
估值待查:拿到了什么数值,还缺哪项比较条件?
下一步:最值得回到公告或明细里查的具体问题是什么?
留下一两个能继续核查的问题,通常比把公司所有信息都塞进一页更有用。
六、留下一页,下次能接着研究
一页有用的笔记,应该让你下次打开时知道接着查什么。本例留下的就很明确:查披露前的利润预期,查经营收付明细,查PE的计算条件。发现新资料以后,再回来更新判断。
英国金融行为监管局FCA在2026年7月更新的AI投资研究指引中,也肯定了AI在整理复杂资料方面的用途,并建议用可信来源复核结果,把AI提供的信息作为继续研究的起点。实际做起来,就是让数字能回查、计算能重跑,问题能继续往下问。
第一次用Codex做股票分析,从哪里开始?
选一只自己熟悉的股票、一个已经结束的行情窗口和一份明确的季度报告。先用上面的任务指令取得数据,做出一页笔记,再逐项补上你真正关心的问题。
查询缺数据,或者笔记里的数字对不上怎么办?
保留错误和缺项,先核对证券代码、权限、单位、报告期间与复权口径。财务回到公告查,计算用保存的输入重跑;缺失值不填零。本例的报告期标签与元级金额差异,也按这个办法分别保留和核对。
TickDB还能支持下一步研究什么?
沿着已验证的行情、财务和估值输入,组织自己的固定观察名单,反复生成研究底稿。新增同业或其他市场前,先确认对应数据是否可用;需要现金流逐项明细时,继续补读公司报告。
从TickDB AI工具入口开始,用自己熟悉的一只股票试一次。值得留下来的,是查数之后,你终于知道该把下一步研究放在哪里。
参考资料
- TickDB AI工具页及本篇MCP真实返回:股票信息、历史日线、财务与估值;查询日期2026年10月29日。
- 中科寒武纪科技股份有限公司《2026年第三季度报告》:主要财务数据、期间说明;新浪财经存档PDF,存档页日期2026年10月24日。
- IT之家《寒武纪2026年第三季度归母净利润14.04亿元,同比增长147.74%》:2026年10月23日18时42分;用于对照新闻数据与“AI解读”的判断基准。
- 江苏证监局《读懂上市公司报告之资产负债表、利润表和现金流量表之间的关系如何?》:2023年10月31日,关于净利润与经营现金流的关系。
- FCA《Using AI for investment research》:2025年12月18日首次发布,2026年7月30日更新,关于AI辅助研究与可信来源复核。
- OpenAI官方《Model Context Protocol》说明:外部工具与信息的连接方式;查阅于2026年10月29日。
本文展示数据整理与研究方法,寒武纪用于接口与笔记演示,不构成买卖建议。行情、财务与估值按文中所列时间使用。