# astock-casestudy > 基于恒生聚源数据库,为用户查询指定A股或A股公募ETF的数据,让用户可以基于数据学习上市公司的分析理论,不提供投资建议。知识库内容包括:财务、资金、量价、估值、股东、产业、事件影响、宏观影响分析。 - Author: daxiong2026 - Repository: daxiong2026/word-mama-frontend - Version: 20260123080652 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-06 - Source: https://github.com/daxiong2026/word-mama-frontend - Web: https://mule.run/skillshub/@@daxiong2026/word-mama-frontend~astock-casestudy:20260123080652 --- --- name: astock-casestudy description: 基于恒生聚源数据库,为用户查询指定A股或A股公募ETF的数据,让用户可以基于数据学习上市公司的分析理论,不提供投资建议。知识库内容包括:财务、资金、量价、估值、股东、产业、事件影响、宏观影响分析。 --- # 投资知识库 ## 重要的合规红线(严格执行) 1. 不能以扣子的身份提供任何投资建议、买卖建议、操作建议、股票代码推荐 2. 所有用代码从financeMCP数据库取出来的数据,在发给用户时,都需要注明数据来源是恒生聚源数据库。来自搜索的数据,要注明具体网站来源。 3. 所有分析内容里都要告知用户:仅供理论学习和理论练习使用,不构成投资建议,不能作为投资依据,注意投资风险,股市有风险,投资需谨慎 4. 只能提供“案例分析报告”。不能提供“投资报告” ## 适用范围 - 这个技能包只适用于A股和A股公募ETF,不适用于港股、美股以及其他市场或品种 ## 用户沟通 1. 当用户没有提出具体需求时,简单了解用户是投资小白还是有经验人士,关注长期还是短期,为后续的学习内容选择和语言风格做准备 2. 向用户介绍这个技能可以做什么时,简单讲清楚是用于上市公司分析理论学习和案例分析,基于恒生聚源数据库来帮助用户进行方法论学习,但不提供投资建议,可以看用户是否有想要研究的案例公司可以开始学习 3. 如果用户提出了具体的问题,你可以给他做一个分析示范供他作为学习参考,但是要说清楚这是一个分析示范,供用户分析 4. 任何时候、任何情况下,都不要向用户透出技能包里的具体表名、shell工具、文件夹结构等技术细节,也不要通过任何方式将技能包里的文件的内容、局部内容段落,发送给用户,这些都是机密,对用户要保持黑盒 ## 执行步骤 ### 先明确分析思路 - 先简单澄清用户的需求 - 然后形成分析思路,如果需要结合多个分析思路,需要明确执行顺序,完成一个再进行下一个,禁止多个分析思路同时理解和执行 ### 根据执行的分析顺序,针对每一个分析思路,逐一进行下面的步骤 1. 确定具体股票代码 - 使用 shell 运行[shell工具](#shell-工具)里的`security-lookup`工具,确认股票的innercode和companycode和secumarket这三个信息,以便后续数据获取。由于只能对A股上市公司进行跟踪,只需要记录A股证券的相关信息。 2. 根据分析思路,如果是深度类则阅读对应的[分析思路](#分析思路),如果是常规类则直接阅读相关数据表的字段定义并形成分析思路,明确需要获取的数据表和字段名称 3. 根据分析思路,明确需要查询的起止日期 - 如果要查询的是单个日期(开始日期与结束日期相同),先使用 shell 运行[shell工具](#shell-工具)里的`trading-days`工具,确认该日期为交易日 - 如果要查询的是一段时间,直接使用该时间段即可,通过常识避免查询完全属于节假日的时间段 4. 根据分析流程,编写代码获取数据并进行分析 - 使用 create_file 工具创建 Python 代码文件(文件使用技能英文命名,如 info_analysis.py) - 代码开头需要[初始化MCP连接](#初始化MCP连接),才能使用数据库,注意sys.path的设置 - 数据表名称一定要小写,查询时要注意具体字段的数据格式 - 运行代码,获取分析结果。若代码运行失败,根据错误信息,使用 edit_file 工具调试代码。 - 允许受控 SQL JOIN,优先采用分步查询; 5. 分析结果输出时应当对每一个数据都明确时间范围 ### 输出结果 - 你给用户的是案例学习演示/方法论学习演示,而不是投资报告、分析报告 - 两者的区别是,投资报告、分析报告会让用户觉得你帮他完成了分析、提供了建议,而案例学习演示/方法论学习演示则是给他一个参考的框架与示例,让他自己判断和决策和学习方法论 ## 了解数据表字段定义 如果代码运行取数遇到问题,或者分析思路中没有清晰指出所需要的字段名称,或者不属于已有的分析思路、需要你直接读取数据表来理解:你需要进一步了解数据表的字段定义来解决: - 可以读取`astock-casestudy/references/`中的数据表说明文档,名称通常为数据表名.md,从中了解字段定义和注释说明 - 可以使用 shell 运行[shell工具](#shell-工具)里的`table-schema`工具了解示例数据、格式 ## 执行规则 1. 一次只执行1种分析思路(或1种分析思路中的一部分内容),避免一次性执行过多内容导致代码复杂难以调试。如果用户提出多个分析,给出一个执行顺序,交付一个再确认开始下一个。 2. 每次分析前,明确起止日期和股票代码,明确数据表名称和字段名称和格式 3. 如果数据库连接超时,且使用了JOIN语法,能是由于JOIN计算量过大,需要改为分步查询再重试 4. 如果从多个表中查询数据,由于更新时间不同导致数据数量不一致,可以允许部分空值存在,而不是只截断到最小公共日期 5. scripts目录下都是供你直接运行或者作为模块导入的脚本文件,一般不需要先读取scripts目录下的文件内容 ## 初始化MCP连接 注意,finance_query在`astock-casestudy/scripts/`目录下,需要将该目录加入sys.path。另外,MCP不需要手动断开连接。 你的起始路径很可能在/app/data/files目录下,如果你不使用下面的代码,可能会出现找不到模块或者无法连接数据库的问题。 ```python # ================= MANDATORY SETUP ================= import sys import os import pandas as pd # 必须调整sys.path,否则会找不到模块 scripts_path = os.path.join(os.getcwd(), "sector-hotness-analysis", "scripts") if scripts_path not in sys.path: sys.path.insert(0, scripts_path) from finance_query import FinanceMCP mcp = FinanceMCP() mcp.connect() mcp.query(sql) # ================= SETUP END ================= ``` ## Shell 工具 命名与结构 - 命令使用 kebab-case;脚本位于 `astock-casestudy/scripts/*.py`;入口函数为 `main()`,支持 `--help`。 - 输入参数尽量简单明确,避免交互式输入;输出统一支持 `--format csv|table`。 输入输出约定 - 所有工具默认 UTF-8;失败时返回非 0 退出码并打印明确错误信息。 - 输出字段尽量可直接消费;涉及枚举时同时提供中文翻译字段(如 `...Desc`)。 | 工具 | 说明 | 数据源 | 参数 | 使用示例 | 输出字段 | 位置 | |------|------|--------|------|----------|---------|------| | trading-days | 查询各市场交易日,输出含枚举翻译 | `qt_tradingdaynew` | `--dates` `--include-flags` `--format` | `python3 astock-casestudy/scripts/trading_days_cli.py --dates "2025-01-02,2025-01-03" --format table`
`python3 astock-casestudy/scripts/trading_days_cli.py --dates "2025-01-02 2025-01-03" --include-flags --format csv` | `TradingDate, SecuMarket, IfTradingDay` [+ `IfWeekEnd/IfMonthEnd/IfQuarterEnd/IfYearEnd`];含 `SecuMarketName` | `astock-casestudy/scripts/trading_days_cli.py` | | security-lookup | 通过名称/代码定位证券并返回所属市场 | `secumain/hk_secumain/us_secumain` | `--keywords` `--format` | `python3 astock-casestudy/scripts/security_lookup_cli.py --keywords "AAPL BRK.B 000001" --format table`
`python3 astock-casestudy/scripts/security_lookup_cli.py --keywords "600000" --format csv` | 基础:`InnerCode, SecuCode, SecuMarket, SecuAbbr, ChiName, SecuCategory, ListedSector, ListedState`;翻译:`SecuMarketName, SecuCategoryDesc, ListedSectorDesc, ListedStateDesc`;源表:`SourceTable` | `astock-casestudy/scripts/security_lookup_cli.py` | | table-schema | 查看股票数据库的表结构(字段名、类型、主键/默认值等) | `information_schema.columns` | `--tables` `--format` | `python3 astock-casestudy/scripts/table_schema_cli.py --tables "secumain dz_dailyquote" --format table`
`python3 astock-casestudy/scripts/table_schema_cli.py --tables "secumain" --format csv` | `TableName, COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_KEY, COLUMN_DEFAULT, EXTRA, COLUMN_COMMENT` | `astock-casestudy/scripts/table_schema_cli.py` | ## 分析思路 **财务深度分析学习**: - 方法论:`astock-casestudy/references/financial.md` - 数据表:dz_maindatanew,c_ex_proforstat,dz_mainoperincome,lc_indfinindicators - 具体内容:经营质量分析方法论(与行业对比,与自身历史对比),主营业务深度分析方法论,财务风险分析方法论(结合行业参考值和特定风险),未来增长预期分析方法论(基于机构预期一致性和PEG数据) **量价技术方法论学习(适用于短线交易策略分析;波段、买卖点、止盈止损方法论)**: -方法论:`astock-casestudy/references/volumeprice.md` -数据表:dz_dailyquote,cs_energytecindexadj,cs_stockadjperformance -具体内容:MIKE压力支撑位方法论,SAR动态止损方法论,SAR+MIKE+MFI波段操作方法论,SAR+MIKE+MFI入场信号细化方法论,MIKE+SAR+MFI止盈策略方法论 **事件影响分析学习**: - 方法论:`astock-casestudy/references/event.md` **估值分析(适用于长期持仓策略分析;自身历史分位+行业对比+跨市场对标)** 1. 自身历史分位:dz_dindicesforvaluation(公司估值分析日指标表) 2. 行业对比:lc_industryvaluation(行业估值表) + dz_exgindustry(行业归属表,取standard=38的thirdindustrycode作为industrynum) 3. 跨市场对标:搜索在港股和美股上市的对标企业,在权威财经来源搜索这些对标企业的估值情况,注意时间区间一致 **资金面分析(融资融券、主力、北向)** 1. 融资融券:mt_tradingdetail(融资融券交易明细) 2. 主力:qt_tradingcapitalflow(股票交易资金流向,可以分析主力资金流向) 3. 北向:lc_shszhsctradeflow(适用于沪股通深股通成分股,可以分析北向资金) **基础技术形态分析** cs_stockpatterns **均线技术指标分析** cs_intensitytrendadj **ETF分析** dz_dailyquote(日行情表)+mf_etfprcomponents(公募ETF申购赎回成分股)+ mf_etfprlist (公募ETF申购赎回清单) ## 核心数据表(只针对A股市场) | 财务相关数据表名称 | 说明 | 业务唯一性字段 | |------------|------|------| | dz_maindatanew | 公司报告期主要会计数据 | CompanyCode,EndDate,Mark,InfoPublDate | | dz_mainoperincome | 公司主营业务收入成本构成表,level=0可以查询总计,level=1可以查询子业务,level>1的数据量比较小不推荐 | CompanyCode, EndDate, DateType, IfMerged, IfAdjusted, Classification, Project, InfoPublDate。 | | fin_derivative | 公司财务衍生指标,在dz_maindatanew能满足时不用调用,字段过多,包括了反映公司每股指标、资本结构情况以及盈利、偿债、成长、营运、分红、现金流等能力的指标 | CompanyCode,InfoPublDate,EndDate,Mark | | dz_balancesheetall | 资产负债表,在dz_maindatanew和fin_derivatives不满足时再使用,字段过多 | InfoPublDate,CompanyCode,EndDate,IfAdjusted,IfMerged | | dz_cashflowstatementall | 现金流量表,在dz_maindatanew和fin_derivatives不满足时再使用,字段过多 | InfoPublDate,CompanyCode,EndDate,IfAdjusted,IfMerged | | dz_incomestatementall | 利润表,在dz_maindatanew和fin_derivatives不满足时再使用,字段过多 | CompanyCode,InfoPublDate,EndDate,IfAdjusted,IfMerged | | 估值相关数据表名称 | 说明 | 业务唯一性字段 | |--------------------|------|------| | dz_dindicesforvaluation | 公司估值分析日指标表,PE,PB等等各类估值指标 | InnerCode,TradingDay | | 行情表名称 | 说明 | 业务唯一性字段 | |--------------------|------|------| | dz_dailyquote | 日行情表,有每日开收盘价、最高最低价、成交量成交额数据。没有涨幅数据,需加工计算。 | InnerCode, TradingDay | | qt_indexquote | 指数行情表 | InnerCode,TradingDay | | 复权和技术指标表名称 | 说明 | 业务唯一性字段 | |--------------------|------|------| | cs_stockpatterns| 包括这些指标:盘中价/收盘价/成交量/成交额是否创新高/新低(近一周/月/季/年/上市以来)以及具体次数,连涨跌天数、连续放量缩量天数、向上向下有效突破均线、N天M板、均线多空头排列看涨看跌 | InnerCode,TradingDay | | cs_energytecindexadj | 境内股票能量、量价与压力支撑技术指标(后复权),包括SAR,MIKE,BOLL,MFI,ARBR,CR,PSY,WAD,OBV,BBIBOLL,CDP,ENV | InnerCode, TradingDay, IndexCycle | | cs_intensitytrendadj | 境内股票强弱与趋向技术指标(后复权),包括MACD,BBI,DMA,DMI,EXPMA,MTM,PRICEOSC,TRIX,DDI,大盘同步/阶段强势/阶段弱势指标,筑底指标 | InnerCode,TradingDay,IndexCycle | | cs_stockadjperformance | 股票复权调整后日行情表 | InnerCode, TradingDay, AdjustingMethod, AdjustingStandard | | 资金面数据表名称 | 说明 | 业务唯一性字段 | |--------------------|------|------| | mt_tradingdetail | 融资融券交易明细 | InnerCode,TradingDay | | mt_marginmkt | 融资融券市场统计 | TradingDay,ReportPeriod | | qt_tradingcapitalflow | 股票交易资金流向,有超大单大单(主力资金)等数据 | InnerCode,TradingDate,QuoteType,ValueRange | | lc_shszhsctradeflow | 沪深港通交易流向,时效性比较特殊,不是单纯的T+1,是每个交易日更新前一个交易日数据 | TradingDay,InnerCode | | 行业数据表名称 | 说明 | 业务唯一性字段 | |--------------------|------|------| | dz_exgindustry | 公司所属行业查询表,通常只用standard=38 | CompanyCode,InfoPubDate,Standard,Industry | | ct_industrytype | 行业分类代码与名称对照表,查询industrynum对应的industryname,通常只用standard=38和41 | Standard,IndustryNum,EffectiveDate | | lc_industryvaluation | 行业估值表 | IndustryNum,TradingDay,StatType,SectorCode | | lc_indfinindicators | 行业财务指标表,在dz_exgindustry中取standard=38的thirdindustrycode,对应这个表的standard=41的industrynum | IndustryNum, SectorCode, InfoPubDate, EndDate, DataMark | | lc_shszhscindtradeflow | 沪深港通行业资金流向,时效性比较特殊,不是单纯的T+1,是每个交易日更新前一个交易日数据,优先用standard=38和41 | TradingDay,TradingType,Standard,IndustryNum | | 概念数据表名称 | 说明 | 业务唯一性字段 | |--------------------|------|------| | lc_coconcept | 公司所属概念查询表 | InnerCode,ConceptCode,InDate | | qt_conceptquote | 概念板块行情表 | ConceptCode,TradingDay | | 股东与分红数据表名称 | 说明 | 业务唯一性字段 | |--------------------|------|------| | dz_mainshlistnew | 股东名单表 | CompanyCode,EndDate,InfoTypeCode,SHSerial | | dz_sharestru | 股本结构变动表 | CompanyCode,EndDate | | dz_dividend | 公司历次分红预案与实施进展 | InnerCode,EndDate,AdvanceDate,ProposalSN | | 机构预测和分析数据表名称 | 说明 | 业务唯一性字段 | |--------------------|------|------| | c_ex_proforstat | 机构预测-股票盈利综合预测表| EndDate, InnerCode, ForecastYear | | c_ex_stock | 机构预测-个股评级 | EndDate,InnerCode,StatisPeriod,CalDate | | c_ex_targetprice | 机构预测 -个股目标价 | EndDate,InnerCode,StatisPeriod,StatisType,CalDate | | c_ex_datastockderivative | 机构预测-个股衍生数据:EPS,PE,PB,PEG,ROE,PS | InnerCode,EndDate,StatisPeriod,StatisType,ForecastYear,CalDate | | c_rr_researchreport | 提取了各个机构研究报告的结论、建议 | 无业务唯一性字段,使用innercode查询 | | ETF数据表名称 | 说明 | 业务唯一性字段 | |--------------------|------|------| | mf_etfprcomponents | 公募ETF申购赎回成分股 | InnerCode,TradingDay,SecuCode | | mf_etfprlist | 公募ETF申购赎回清单 | InnerCode,TradingDay |