尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

A股上市公司土地交易数据整理实战:从公告清洗到分析落地

A股上市公司土地交易数据整理实战:从公告清洗到分析落地 把A股上市公司的土地交易数据单独立项起因是我复盘一家公司年报时发现了一个挺尴尬的事这家公司在报表里讲了不少新项目但从公开渠道找它的土储信息不同来源的数据互相打架——有的是认购口径有的是签约口径有的报含税价有的报不含税价。那之后我干脆自己做了一个相对完整的数据整理项目把数据源、字段设计和清洗逻辑系统跑了一遍。这篇文章就是那次实操的完整记录送给做股票研究、不动产数据分析和财务尽调的朋友也适合刚接触土地数据但不知道从哪下手的新手。1. 为什么把土地交易数据做成一个专项很多做上市公司研究的人最先看的是营收、利润、现金流这些财务科目土地交易数据容易被当成“行业新闻”看待。但实际做下来会发现它属于典型的高价值事件型数据单笔金额大、披露节奏不规律、对后续经营影响时间长。一笔几十亿的土地成交不只是当天的新闻它会改变一家公司未来两三年的可结算货值、资金占用情况和毛利率中枢。把这些数据从零散的公告和交易公示里捞出来整理成结构化数据表能解决很多靠财务报告回答不了的问题。1.1 土地数据研究的三个核心价值第一是交叉验证财报质量。土地交易通常伴随着真实的现金流出存续到一定阶段后又会进入存货科目。把年度拿地总额和现金流量表中“购建固定资产、无形资产和其他长期资产支付的现金”或“支付的其他与投资活动有关的现金”做对比能快速发现土储扩张和报表披露之间是否有明显背离。之前我处理过一家公司年报里写着新增土地储备很少但现金流量表里投出去的钱远超披露口径追溯后发现是因为大量土地通过联合竞得、未列入合并范围的方式持有这种信息差在纯财务分析框架下很容易漏掉。第二是判断布局结构和未来货值。土地比订单更接近一家房企或制造企业的“原材料池”。通过逐年、逐城市汇总拿地面积和成交金额可以大致估算出未来可供开发或转让的资源盘子。比如一家公司连续两年只在三四线城市拿地那它的销售均价上限就很难被拉高反过来如果重仓一梯队城市的优质地块未来结转的利润率就更有保障。这些结论放在普通数据表里很难被直观感知但按土地口径汇总后会非常清楚。第三是支撑行业比较和单公司风险排查。土地市场是一个相对公开的竞争市场把同行的拿地放到一起能看出扩张策略的差异。有的公司偏好底价成交有的愿意为高溢价地块下重注。在一个标准化的土地数据表里加一个“溢价率”字段基本就能还原出这家公司的投资风格。更关键的是连续高溢价拿地往往意味着未来毛利率承压这种风险前置信号对投资决策非常有价值。1.2 项目边界与目标用户这个项目我圈定的范围是A股上市公司及其控股、参股主体参与的境内土地交易。为什么限定A股A股的信息披露要求相对统一临时公告、定期报告和董事会决议都能从公开渠道获取数据可追溯性比非上市公司好很多。“土地交易”我定义为通过招拍挂、协议出让等公开方式获取国有建设用地使用权的行为不包括公司在自有存量土地上新建厂房这类内部调整也不包括矿业权、海域使用权等其他资产。适合参考这个方案的人有三类做股票研究和企业信用分析的人可以用它生成土储快照产业地产、物流园区、数据中心等需要重资产布点的行业分析师可以用它看竞争对手的选址趋势做数据产品或者风控系统的人则需要关注里面清洗和去重逻辑。项目不追求覆盖每一块土地的微观信息重点是把“公司-地块-金额-时间”这条主线打通再向外扩展区域、用途、容积率等辅助字段。2. 数据从哪里来公开源与口径统一土地交易信息在公开市场上并不是没有而是太分散。同一块地政府公示、上市公司公告、媒体新闻和第三方数据库里都可能出现金额口径甚至名称都不一样。数据采集阶段最重要的事不是“找到数据”而是“固定一个主源再用其他源做校验”。我建议以政府公示信息加上市公司公告为双主源第三方数据只做补充。2.1 核心数据源怎么找先列一下我实际用过的数据源和它们的定位数据源覆盖范围主要用途说明巨潮资讯网A股上市公司临时公告及定期报告确认交易主体、成交金额、关联方关系权威性最高适合作为基准源各地公共资源交易中心国有建设用地招拍挂公示获取成交公示、地块编号、规划指标覆盖实时成交情况土地市场动态监测与监管系统全国土地供应和成交公示补充历史和批量数据数据更新存在一定延迟第三方金融终端公告摘要、土地成交汇总快速初筛和交叉验证便于检索但不能替代原始公告实际处理时有一个顺序先用第三方终端或搜索工具按公司简称做初筛找到可能相关的公告编号再回巨潮资讯网下载公告原文逐条核对交易要素最后对重点地块去土地市场或公共资源交易中心核对规划指标和成交日期。这样做的原因是第三方终端里的土地数据经常把母公司披露和项目公司拿地混在一起直接拿过来用容易重复计算。2.2 字段设计与记录粒度字段设计直接决定后面能做哪些分析。我的经验是一条土地交易记录不应该一次性塞进所有信息而是按“公告信息-地块信息-交易信息-财务信息”四层拆开每条记录对应到一个“上市公司主体地块”的组合。核心字段如下公告信息公告编号、公告日期、公告标题、相关文件链接上市公司信息公司简称、股票代码、统一社会信用代码、所属行业地块信息地块编号、宗地位置、出让面积平方米、容积率、规划建筑面积、土地用途、出让年限交易信息成交日期、成交金额、起始价格、溢价率、出让方式、受让方名称、权益比例财务信息本期权益金额、是否纳入合并报表、支付进度、资金来源一个容易踩坑的地方是联合拿地。很多土地是几家开发商合作拍下的公告里会写“公司与X公司联合竞得”。这时如果只记一个成交金额后续统计权益土储时就会严重高估。我习惯把一条联合竞得记录拆成若干条子记录每一条记录对应一家上市公司同时保留“权益比例”字段。如果公告里没写比例就取工商信息里项目公司的持股比例作为默认值并在备注里标注“根据工商信息推断”。3. 结构化处理清洗、关联与校验数据源确定后接下来的重头戏就是把非结构化文本变成一张能直接查询的表。这个环节最耗时间也最能体现项目质量差异。公告原文里经常出现“约12万平”“成交价约人民币2.3亿元”“宗地面积为87,654.32平方米”这类表述机器直接读会出错人工一条条看又太慢。所以实际处理时我走的是“批量抽取人工复核”的路线。3.1 从公告到结构化记录的清洗链路清洗链路大致分成四步第一步文本筛选。先用股票代码和公司简称抓取全部临时公告再按关键词过滤出与土地相关的部分。我常用的关键词组合包括“竞得”“宗地”“国有建设用地使用权”“土地出让”“成交价”。这样能把范围从几百条公告缩小到几十条。第二步正则抽取。对筛选后的公告用正则表达式抽金额、面积、地名和公司名。比如成交金额在原文里通常是“成交价人民币X万元”或“总价X亿元”可以写两个规则分别处理。示例代码如下import re import pandas as pd text 近日公司通过挂牌方式竞得位于某市某地块的国有建设用地使用权出让面积为45,678.90平方米容积率不高于2.0成交价为人民币23,456万元。 # 抽取面积 area_pattern r出让面积[约为]*([\d,]\.?\d*)[平方米平] area re.search(area_pattern, text).group(1).replace(,, ) # 抽取成交价 price_pattern r成交价[(]?(?:人民币)?[约为]*([\d,]\.?\d*)[万元亿] price re.search(price_pattern, text).group(1).replace(,, ) print(f面积: {area} 平方米) print(f成交价: {price} 万元)这里要注意单位。公告里面积常用平方米偶尔用亩或公顷金额常用万元偶尔用亿元。我统一换算成“平方米”和“万元”亩换算平方米乘666.67公顷乘10000亿元换成万元乘10000。这样后续比较楼面价时不会出错。第三步字段补全。地块编号、容积率、规划用地性质经常不在上市公司公告里写全需要去土地成交公示里补。规划建筑面积如果缺失就用出让面积乘以容积率上限。如果容积率给的是一个区间我取上限这样算出来的楼面价偏保守更接近真实可售情况。第四步人工复核。批量抽取后我一般会按金额排序先从最大金额的记录开始逐条核对因为大额交易对分析结果影响最大也更值得花时间。3.2 上市公司与地块的关联匹配关联匹配是另一个大工程。A股上市公司很少直接以自身名义拿地更多是设立项目公司来完成有时还会和合作方共同成立一个平台公司。如果只按“公告中是否提到上市公司名称”来判断会漏掉相当一部分真实土储。我的做法是三重匹配叠加第一重公告主体匹配。只要公告中明确写了上市公司或其控股子公司名称就直接挂上对应的股票代码。第二重工商穿透匹配。拿到受让方名称后去工商信息平台查它的股东结构。如果股东中有上市公司体系内的主体就把这块地归属到上市公司下并按上市公司最终穿透持股比例折算权益面积。第三重董事会决议匹配。有些交易不会单独发土地公告但会出现在董事会决议或对外投资公告里比如“公司拟出资X万元参与X地块的开发”。这类记录也要入表只是交易状态上标记为“协议/拟参与”。整个过程中我额外加了一个字段叫“关联方式”用来标记是直接竞得、通过子公司竞得还是参股公司竞得。分析的时候可以随时过滤避免把参股公司土地和并表范围内土地混在一起。3.3 三个关键校验指标清洗完后先别急着分析拿数据做三个校验第一个是金额校验。把整理出来的全口径拿地金额和上市公司年报附注里“新增土地储备”或“投资支付的现金”做对比差异超过20%就要回头看是否有漏记或重复。差异的来源通常是当年支付的多年前土地款、联合体出资比例确认方式不同、统计区间用的是成交日而不是支付日。第二个是面积校验。把规划建筑面积按公司汇总和年报存货里“开发产品/开发成本”下面的土地储备面积做比对。注意年报披露的往往是并表范围如果分析时把参股公司也纳入统计差异大是正常的关键看逻辑是否一致。第三个是价格校验。把计算出来的楼面价和同城市、同用途的地块成交样本做横向比较。如果某块地楼面价远低于周围同类地块要回去检查是不是容积率填错了如果远高于周围地块要确认是不是公告里记录了其他费用。4. 分析落地从土地数据到可用的洞察数据整理最终要服务于应用场景。我做这个项目后的第一版分析报告输出物是一张公司级土地数据看板、一个城市分布图和三个核心指标。这三个指标分别是拿地强度、楼面价和地货比实际操作下来最稳定也最容易对外解释。4.1 拿地强度、区域结构与成本测算拿地强度的计算逻辑是拿地强度 年度全口径拿地金额 / 同期签约销售额如果大于1说明公司处于快速扩张期如果连续两年明显小于1且在手土储也在下降那意味着未来可结转收入可能会收缩。算这个指标的时候特别注意全口径和权益口径的选择。对外宣传里很多公司拿地金额是权益数加少数股东部分容易虚高我建议统一用权益口径再算一次两个口径都保留分析时按需选用。区域结构的分析不需要太复杂。把地块按城市做聚合再对城市做层级标签就能得到一张“某公司近年重点布局在哪里”的图景。配合规划建筑面积和成交金额还可以计算各城市的“平均容积率”判断公司拿的是高层还是低密度地块这对产品定位判断有辅助意义。楼面价和地货比则是判断毛利空间的重要依据。楼面价公式如下楼面价 成交金额 / 规划建筑面积假设一个项目成交金额是2亿元规划建筑面积5万平方米楼面价就是4000元/平方米。如果当地同类项目销售均价8000元/平方米地货比大约50%如果销售均价只有6000元那这个项目几乎没有多少利润空间。地货比超过60%的项目在后续市场下行时抵御风险的能力会比较弱这类地块会在分析中被单独标记。4.2 图层可视化与报告输出分析结果我最常用三种呈现方式第一种是城市维度的柱状图和气泡图。横轴是城市名称纵轴是拿地金额气泡大小代表规划建筑面积。这种方式用来做同行对比最直观。第二种是地块落点地图。把每一块地的文字位置描述转成经纬度在地图上以点状呈现。点的颜色按土地用途分类点的大小按成交金额分级。这样能一眼看出公司在某城市是集中拿一块区域还是多点散布。第三种是时间序列趋势。按季度汇总拿地金额叠加溢价率折线能看到公司在土地市场冷热周期里的行为变化。比如之前处理过一家公司土地市场最热的时候反而没有出手等市场冷却后开始频繁拿地这种节奏信息只靠年报是看不出来的。报告输出我一般会生成一页公司概览和若干页城市明细。公司概览放拿地总览、权益占比、结构分布和同比增速城市明细每页放一个重点城市的连续年份数据。这样不管是内部讨论还是发给合作方看都不需要二次解释。5. 常见问题与排查实录整个项目做下来最花时间的其实不是写代码而是排查各种数据不一致。这里记录几个高频坑直接可以当排查清单用。5.1 公告滞后与重复统计上市公司的土地公告并不都在成交当天发出很多时候会集中到月底统一披露甚至等土地证办下来才发。如果不统一口径分析“单季度拿地”时会看到明显的前置或后置抖动。我遇到过一种情况某公司12月底拍了一块地但公告在次年1月中旬才发布。按公告日期统计前一年年报里没有土地记录次年一季报里却多了一块地趋势线会突然异常。解决方案是统计时以“地块成交信息公示中的成交日期”为准公告日期只作为披露追踪字段。重复统计也很常见。一块地会同时出现在成交公示、发行人公告、券商研报和公司年报大事记里。去重时我用“股票代码地块编号成交日期”拼一个唯一键如果有重复就保留公告原文里数据最全的那条。5.2 面积和单位、坐标口径不一致土地公示里经常出现“亩”和“平方米”混用。比如挂牌文件写“出让面积为120亩”成交公告又写“出让面积为80000平方米”其实就是同一块地。如果处理时代码只认平方米就会漏掉前面的记录。我的做法是在清洗数据时固定一列原始面积和原始单位再根据单位自动换算并保留换算后的标准面积这样随时能回查原始值。坐标问题出现在做地图可视化时。各地块位置文本描述格式差异很大有的精确到路名有的只给“XX区XX镇”。我使用地理编码接口将文本转为经纬度时经常遇到地址模糊返回空值的情况。应对的办法是先对地址做标准化比如把“市辖区”“高新区”这类常见后缀统一再批量解析对解析不了的关键地块再人工打点。宁可少一个点也不要乱加错误坐标进地图否则视觉上会产生误导。5.3 项目公司名称对不上上市公司名称这是最隐蔽的一个问题。受让方是一家名字和上市公司完全不同的项目公司但穿透后其实100%是上市公司全资控股。如果只靠名称匹配这一块地就彻底丢失了。实际处理时我建立了一个“公司别名库”把上市公司及其控股子公司、重要参股公司的全称、简称、曾用名都维护起来。新来的地块受让方先查别名库查不到再去工商信息平台做股东穿透。穿透时特别注意“全资控股”和“实际控制”的区别。有些项目公司持股比例只有33%但上市公司有实际经营管理权在是否纳入土地储备统计上我会按“有控制权则纳入无控制权则只做信息披露”的规则处理并在数据表里注明方便不同口径使用者自行调整。下面把这个环节的问题和解决方法整理成一个速查表问题现场具体表现排查方法预防措施公告日期滞后成交日与公告日跨季度以土地公示成交日为准保留成交日原始字段同一地块重复入表成交公示、年报、研报各记一次用“股票代码地块编号成交日”去重入库前先查唯一键单位不一致亩、公顷、平方米混用记录原始单位并自动换算建立单位换算函数统一处理地址解析失败地图落点缺失或偏差人工补点地址标准化后再批量解析项目公司穿透失败受让主体与上市公司无同名查股东结构和实际控制权维护公司别名库结尾这个项目从第一张手工表到现在相对完整的流程中间反复调整过很多次。我最深的体会是土地交易数据真正价值不在于“数量多”而在于把事件和公司行为串起来形成一条可验证、可交叉审计的证据链。数据清洗本身不产生洞察但如果连口径都没对齐后面所有分析都是建立在一盘散沙上的。做这类数据项目宁可慢一点先把源数据结构和校验规则定清楚再谈分析和可视化。后面我准备再加上土地二级市场的转让数据进一步跟踪上市公司之间的资产流转那会对区域性风险识别更有帮助。
返回列表