Ireland Property Analytics — 项目完整说明文档

Share
作者:Fan Yang | 网站:property.fanyang.me | 更新日期:2026-03-31

目录

  1. 项目是什么
  2. 技术架构
  3. 数据库
  4. 数据文件(JSON)
  5. 数据来源(14个)
  6. 网站页面详解(6个页面)
  7. 计算算法详解
  8. 国际化(双语)系统
  9. SEO 优化
  10. 部署与运维
  11. 关键数据结论

1. 项目是什么

背景和目的

爱尔兰近年来吸引了大量海外华人投资者的关注。但是,市面上大多数爱尔兰房产数据工具要么是英文的、要么需要付费、要么数据不透明。这个项目的目标是:

为海外华人投资者提供一个免费、透明、数据驱动的爱尔兰房产分析平台。

项目做了什么

  1. 从爱尔兰政府公开数据库下载了约77.5万条房产交易记录
  2. 经过5层数据清洗,得到699,653条有效交易
  3. 将这些数据与13个其他数据源交叉验证,补充租金、人口、犯罪率、按揭等维度
  4. 把所有分析结果预先计算好,生成JSON文件
  5. 建设一个完全静态的双语(中英文)网站,让用户无需任何专业知识即可查询数据

目标用户

主要是:正在考虑购买爱尔兰房产出租(Buy-to-Let)的海外华人投资者。他们关心的核心问题是:哪个郡的租金回报率最高?买了之后每年能赚多少钱?


2. 技术架构

整体结构

用户浏览器
    ↓  HTTP请求
Nginx Web服务器(服务器 91.99.111.153)
    ↓  直接返回静态文件
/opt/www/irelandproperty/
    ├── index.html          ← 首页
    ├── query.html          ← 收益率查询页
    ├── calculator.html     ← 净回报计算器
    ├── mortgage.html       ← 按揭市场页
    ├── map.html            ← 地图页
    ├── about.html          ← 数据说明页
    ├── i18n.js             ← 双语翻译文件
    ├── favicon.svg         ← 网站图标
    ├── og-image.png        ← 社交媒体分享图
    ├── sitemap.xml         ← 搜索引擎地图
    └── data/               ← 所有数据(JSON格式)

没有后端服务器,没有API,没有数据库查询。所有数据在部署前已经计算好,保存为JSON文件。用户打开页面时,浏览器直接读取这些JSON文件,在浏览器里用JavaScript展示。

为什么选择纯静态架构

  • 速度快:没有数据库查询的等待时间
  • 成本低:不需要后端服务器,只需要最便宜的VPS
  • 可靠性高:没有服务器崩溃、数据库宕机的风险
  • 安全:没有任何用户输入直接碰数据库

技术栈

层次 技术
数据库(离线使用) PostgreSQL(在服务器上,只在生成数据时用)
数据处理 Python(pandas、psycopg2)
前端框架 原生HTML + CSS + JavaScript(无React/Vue等框架)
地图 Leaflet.js 1.9.4(开源地图库)
图表 Chart.js 4.4.0(开源图表库)
字体 Google Fonts(Playfair Display + DM Sans)
Web服务器 Nginx
统计分析 Google Analytics 4(追踪ID:G-BWR3108MN4)

服务器信息

  • IP地址:91.99.111.153
  • 域名:property.fanyang.me
  • 网站根目录:/opt/www/irelandproperty/
  • 数据目录:/opt/www/irelandproperty/data/

3. 数据库

数据库的作用

PostgreSQL数据库只在离线数据处理阶段使用,不对外开放,不参与任何网站请求。它的作用是:存储原始PPR数据,运行清洗和分析SQL,生成最终的JSON文件。

核心表:property_sales

这是项目最重要的表,存储从爱尔兰PSRA(财产服务监管局)下载的所有房产交易记录。

字段名 类型 含义
id integer 自增主键
address text 房产地址(完整地址字符串)
date_clean date 成交日期(已清洗为标准date类型)
price numeric 成交价格(欧元,原始值,未加VAT)
description text 物业类型描述,如 “New Dwelling house / Apartment” 或 “Second-Hand Dwelling house /Apartment”
vat_exclusive boolean 是否为不含VAT价格(新建住宅通常为true)
not_full_market boolean PSRA标记:是否为非市场价交易(家庭内部转让、破产出售等)
county text 所在郡(从地址解析得出)
eircode text 爱尔兰邮政编码(仅2021年后数据有)

表的规模:约 775,000 行,永不修改(只读)。

核心视图:clean_residential_sales

这是建立在 property_sales 之上的数据库视图(View)。

什么是视图:视图不存储数据,它是一个保存好的SELECT查询语句。每次查询视图时,数据库实时执行那个查询。对于使用者来说,视图看起来就像一张表。

视图的作用是对原始数据应用5层过滤,只保留有意义的市场交易。详细过滤逻辑见第7章算法说明。

过滤结果:从 ~775,000 行 → 保留 699,653 行

其他辅助表/数据

除了PPR数据,服务器数据库里还有从其他来源导入的辅助数据,用于生成各JSON文件(如人口数据、犯罪数据等)。这些数据的来源见第5章。


4. 数据文件(JSON)

这些文件全部存放在 /data/ 目录下,是网站的"血液"。

4.1 county_stats.json

用途:核心文件,存储26个郡的综合统计数据

格式:数组,每个元素代表一个郡,共26条

字段说明:

字段 示例值(Louth郡) 含义
county “Louth” 郡名
ppr_median_price 321585.0 PPR数据库中的中位成交价(欧元,VAT调整后)
tx_count 3752.0 2025年交易笔数
daft_rent 1722.0 Daft.ie平台两居室平均月租金(欧元)
daft_room_rent 758.0 Daft.ie平台单间平均月租金(欧元)
rent_yoy 3.8 租金同比增长率(%,year-over-year)
hap_couple 480.0 HAP补贴上限:夫妻(欧元/月,无子女)
hap_family 660.0 HAP补贴上限:家庭(欧元/月,有子女)
hap_single 460.0 HAP补贴上限:单身(欧元/月)
region “Leinster” 所在省份(Leinster/Munster/Connacht/Ulster)
rtb_rent 1308.0 RTB登记租金(欧元/月,政府数据)
daft_asking_price 190000.0 Daft.ie挂牌要价(欧元)
price_per_sqm 3277.0 每平方米价格(欧元)
gross_yield_daft 10.88 毛租金收益率——Daft版本(%)
gross_yield_ppr 6.43 毛租金收益率——PPR版本(%)
为什么有两个收益率:Daft收益率用的是挂牌要价和挂牌租金(反映市场预期),PPR收益率用的是实际成交价和RTB登记租金(反映真实交易)。两者差距有时很大,建议参考PPR版本。

4.2 dublin_postcodes.json

用途:都柏林22个邮区(D1-D24,除D19/D21/D23之外)的详细数据

格式:对象,键为邮区名(如 “Dublin 2”),值为该邮区数据

每个邮区包含:

  • trends:按卧室数量(1-5床)分类的季度租金趋势,从2018Q1到2025Q2,包含每季度租金和同比增长率
  • latest:各卧室数量的最新季度租金
  • ppr:PPR成交数据(中位价、样本量)
  • gross_yield_2bed:两居室毛收益率(%)

数据量:每个邮区约30个季度 × 5种卧室数量 = 约150条时间序列数据点


4.3 rent_trends.json

用途:41个地点(26个郡 + 15个城市/地区细分)的季度租金趋势

格式:对象,键为地名,值为数组,每个元素 {q: "2018Q1", rent: 1561}

覆盖时间:2018Q1 到 2025Q2,共约30个季度

用于:Query页的租金趋势折线图


4.4 ber_county.json

用途:55个地区的建筑能源评级(BER)分布数据

格式:对象,键为地区名(包含郡级和都柏林邮区级),值包含:

  • rating_dist:各BER等级(A1到G)的房屋数量
  • avg_floor_sqm:平均建筑面积(平方米)
  • avg_year_built:平均建造年份
  • total_rated:已评级总数
BER是什么:Building Energy Rating,类似中国的建筑节能标识。A1最好(最节能),G最差(最费能)。买房前看BER评级可以判断供暖成本。

4.5 cso_population.json

用途:26个郡的人口数据(来自爱尔兰中央统计局CSO)

格式:对象,键为郡名,值包含:

  • pop_2016:2016年人口
  • pop_2022:2022年人口
  • growth_pct:增长率(%)

示例(Dublin):人口从1,273,069增至1,458,154,增长14.5%


4.6 cso_vacancy.json

用途:26个郡的房屋空置率(CSO 2022年普查数据)

格式:对象,键为郡名,值为空置率百分比(如 Dublin: 5.6)

用于:净回报计算器中"空置率"滑块的默认值(选择郡后自动填入该郡的真实空置率)


4.7 cso_completions.json

用途:26个郡2022-2024年的住宅竣工量

格式:对象,键为郡名,值包含:

  • completions_2022、completions_2023、completions_2024:各年竣工套数
  • avg_annual:三年平均

用于:地图页的"新增供给"指标;Query页的供给分析板块


4.8 cso_planning.json

用途:26个郡2022-2024年的住宅规划许可数量(CSO BHA14数据)

格式:与 cso_completions.json 结构相同

用于:地图页的"规划管道"指标(规划许可是竣工的领先指标,通常提前18-24个月)


4.9 cso_crime.json

用途:26个郡的犯罪统计数据(CSO CJQ06数据)

格式:对象,键为郡名,值包含:

  • crimes_2022、crimes_2023、crimes_2024:各年犯罪记录数
  • avg_annual:三年平均
  • per_1000_pop:每千人犯罪率

注意:爱尔兰有28个警察区(Garda Division),不完全对应26个郡。跨郡的警察区(如Cavan/Monaghan、Sligo/Leitrim等)按人口比例拆分,这是估算值不是精确值。


4.10 hap_county.json

用途:26个郡的HAP租金补贴上限

什么是HAP:Housing Assistance Payment,即爱尔兰政府对低收入家庭的租金补贴。政府直接把钱打给房东,房东接受HAP租客就相当于有政府托底。对投资者来说,HAP上限是"政府认可的最低可接受租金"。

格式:对象,键为郡名,值包含:

  • single:单身人士HAP上限(欧元/月)
  • couple:夫妻(无子女)HAP上限
  • couple_1child:夫妻1孩HAP上限
  • couple_2children:夫妻2孩HAP上限
  • couple_3children:夫妻3孩HAP上限

示例(Cork):单身€550,夫妻€650,夫妻1孩€900


4.11 ida_fdi.json

用途:26个郡的外资投资(FDI)吸引力数据

什么是IDA:Industrial Development Authority,爱尔兰工业发展局,负责招商引资。外资多的地方就业机会多,租房需求强。

格式:对象,键为郡名,值包含:

  • tier:等级(hub核心枢纽 / regional区域中心 / emerging发展中)
  • site_visits_2025:2025年潜在投资者考察次数
  • ida_jobs_est:IDA支持企业的就业人数估算
  • note:重要外资企业备注(如都柏林:“Google, Meta, Microsoft, Pfizer HQs”)

4.12 mortgage_data.json

用途:爱尔兰按揭市场历史数据(来自BPFI)

格式:对象,包含4个子键:

  • drawdowns:季度按揭提款数据,64条记录(2010Q1-2025Q4)
    • 每条:year、quarter、ftb_count(首次置业者数量)、mover_count(换房者)、ril_count(投资者)、total_count、ftb_pct(首置占比%)、total_value_m(总金额百万欧元)、ftb_avg_loan(首置平均贷款额)、total_avg_loan(总平均贷款额)
  • approvals_annual:年度按揭审批汇总,11条
  • approvals_monthly:月度审批数据,22条
  • updated:“2025Q4”(数据更新至此)

4.13 mortgage_rates.json

用途:利率历史数据

格式:对象,包含:

  • ecb_rate:ECB主要再融资利率的月度时间序列(2022-01 到 2026-01)
  • ie_mortgage_rate:爱尔兰新增按揭平均利率的月度时间序列(同期)
  • _latest:最新值摘要(ECB当前2.15%,爱尔兰按揭当前3.50%)

4.14 region_matrix.json

用途:将26个郡分组为5个区域,用于首页区域对比分析

5个区域:

  • Dublin(都柏林)
  • Leinster ex-Dublin(莱因斯特省,除都柏林外)
  • Munster ex-Cities(芒斯特省,除科克市/利默里克市外)
  • Connacht-Ulster ex-Galway(康诺特-阿尔斯特,除高威外)
  • Other Cities(其他主要城市)

5. 数据来源(14个)

A组:房产交易数据

01. PSRA Property Price Register(PPR)

  • 机构:爱尔兰财产服务监管局(Property Services Regulatory Authority)
  • 内容:爱尔兰所有住宅类房产的成交记录(来源于买家缴纳印花税时的申报)
  • 数据量:约775,000条,2010年至今
  • 更新频率:持续更新(本项目数据截至2026年3月)
  • 关键说明:
    • 新建住宅价格不含VAT(VAT为13.5%),分析时需乘以1.135
    • 家庭内部转让(如父母低价转给子女)已在清洗时过滤
    • 机构批量购买整栋楼的记录已过滤(超过300万欧元)

02. Daft.ie Rental Reports

  • 机构:Daft.ie(爱尔兰最大房产门户网站)
  • 内容:各郡及都柏林邮区的按卧室数量分类的平均挂牌租金
  • 数据时间:2024年Q4至2025年Q2(最新)
  • 用于:Query页的"Daft租金"字段;毛收益率计算(Daft版本)
挂牌租金 vs 登记租金:挂牌租金(Daft)是房东标价,登记租金(RTB)是实际签约租金。挂牌租金通常略高,因为最终成交价可能下调。两者都有参考价值。

03. RTB/ESRI Rent Index

  • 机构:爱尔兰租赁委员会(RTB)+ 经济社会研究所(ESRI)
  • 内容:季度租金指数,按地区和卧室数量分类,基于所有在RTB登记的实际租赁合同
  • 数据时间:2007年至今(本项目使用2018Q1-2025Q2)
  • 用于:Query页的"RTB租金"字段;毛收益率计算(PPR版本);首页的租金收益率分析

B组:供给、人口与社会数据(均来自CSO——爱尔兰中央统计局)

04. SEAI BER Public Database

  • 机构:爱尔兰可持续能源局(SEAI)
  • 内容:所有已评级建筑的BER评级、面积、建造年份
  • 数据量:1,353,297条评级记录
  • 用于:首页的BER分析;Query页的能源评级信息

05. CSO Census 2022(人口普查)

  • 内容:各郡2016年、2022年人口数量及增长率
  • 用于:地图页人口指标;Query页人口分析板块

06. CSO Census 2022(空置率)

  • 内容:各郡住宅空置率百分比
  • 用于:净回报计算器中空置率滑块的默认值

07. CSO BHA04 — 住宅竣工量

  • 内容:各郡2022-2024年新建住宅竣工套数
  • 用于:地图页新增供给指标;Query页供给分析

08. CSO BHA14 — 住宅规划许可

  • 内容:各地方政府2022-2024年批准的住宅规划许可数量
  • 注意:31个地方政府 → 映射到26个郡(都柏林的4个地方政府数据合并)
  • 用于:地图页规划管道指标;未来供给预测

09. CSO CJQ06 — 犯罪统计

  • 内容:各警察区(Garda Division)2022-2024年犯罪记录总数
  • 注意:28个警察区不完全对应26个郡,跨郡警察区按人口比例估算拆分
  • 用于:地图页犯罪率指标(每千人);Query页安全评分

C组:经济与金融数据

10. IDA Ireland — 外资就业数据

  • 机构:爱尔兰工业发展局
  • 内容:各郡IDA支持企业的就业人数估算、考察次数
  • 用于:Query页的FDI(外资)分析板块;地图页经济吸引力参考

11. BPFI Mortgage Market Data

  • 机构:爱尔兰银行与支付联合会
  • 内容:季度按揭提款量(按买家类型分)、月度审批量、平均贷款规模
  • 时间:2010年至2025年Q4
  • 用于:Mortgage Market页所有图表

12. ECB Key Interest Rates

  • 机构:欧洲央行
  • 内容:ECB主要再融资利率(MRR)月度序列(2022年至今)
  • 当前利率:2.15%(2025年6月后)
  • 用于:Mortgage Market页的利率环境图表

13. Central Bank of Ireland — Retail Interest Rates (B.3.1)

  • 机构:爱尔兰央行
  • 内容:爱尔兰新增住宅按揭月度平均利率(固定+浮动)
  • 当前利率:3.50%(固定3.44%,浮动4.09%,截至2026年1月)
  • 用于:Mortgage Market页的利率环境图表(与ECB利率对比显示)

D组:税务与法规

14. HAP限额 + LPT估值分档

  • 机构:爱尔兰住房部(HAP数据)+ Revenue爱尔兰税务局(LPT数据)
  • HAP内容:各郡按家庭规模分类的每月最高租金补贴金额
  • LPT内容:地方物业税(Local Property Tax)按房产估值分档的年度税额(2022年重新估值)
  • 用于:Query页的HAP限额展示;Net Return Calculator中的LPT计算

6. 网站页面详解(6个页面)

6.1 首页(index.html)

URL:https://property.fanyang.me/

定位:项目的门面,展示核心研究发现,吸引用户下载报告

页面结构与功能

① Hero区(顶部横幅)

  • 标题:《70万条爱尔兰房产成交数据到底告诉了我们什么》
  • 副标题解释数据来源和处理方式
  • 两个"下载免费PDF报告"按钮(8页,无需注册)

② 数据统计展示区(5个KPI卡)

指标 数值 含义
已验证交易量 699,653 经过清洗的有效交易数
全国中位成交价2025 数据来自county_stats 所有郡的中位价
2013年以来增长幅度 全国平均+134% 从房价谷底算起
最高毛租金收益率 ~7%(Longford) 全国最高的郡
数据年限 15年 2010-2026

③ 12年增长排行图(Growth Section)

  • 展示2013年(房价谷底)到2025年各郡的中位价格增长率
  • 关键发现:都柏林排第24名(倒数第3),不是最快增长的地方
  • Laois郡领先:从€93k涨到€298k,增长+220%
  • Donegal垫底:+90%,是全国唯一低于+100%的郡

④ 租金收益率分析图(Yield Section)

  • 展示25个郡的毛租金收益率排行(两居室公寓)
  • 关键发现:都柏林排第7名,不是最高收益率的地方
  • Longford最高:7.05%(房价约€190k,月租约€1,116)
  • Kildare最低:4.28%(高房价相对于租金)

⑤ 方法论说明(Methodology Section)

  • 简述数据来源:PPR(699,653条)、SEAI BER(1,353,297条评级)、RTB/ESRI租金指数
  • 说明5层数据清洗:排除非市场交易、VAT调整、去重

⑥ 下载CTA区

  • 再次展示PDF报告下载入口
  • 联系邮件:imfan.yang@gmail.com

⑦ 免责声明区

  • 4条声明:PPR数据说明、BER说明、RTB说明、总体免责

6.2 收益率查询页(query.html)

URL:https://property.fanyang.me/query.html

定位:用户最常用的工具,可以查询任意郡或都柏林邮区的详细数据

查询方式

方式一:按郡查询

从下拉列表选择26个郡中的一个,点击"查看详情"

方式二:按都柏林邮区查询

从下拉列表选择22个邮区(D1-D24,除D19/D21/D23),支持卧室数量选择(1-5床)

URL参数深链接:其他页面可以通过 ?county=Cork 这样的URL参数自动触发查询。例如,从地图页点击"查看完整详情",会跳转到 query.html?county=Cork 并自动显示Cork的数据。

郡级查询展示的数据

基本价格数据

字段 数据来源 含义
毛收益率(Daft) Daft.ie挂牌价 ÷ Daft挂牌租金 以挂牌价购买、按挂牌租金出租的理论回报
PPR中位价 county_stats.json 2025年实际成交价中位数
Daft挂牌要价 Daft.ie数据 当前市场挂牌价
Daft两居室月租 Daft.ie数据 当前市场挂牌租金
RTB登记租金 RTB/ESRI数据 已实际签约的平均租金
租金同比增长率 Daft.ie报告 过去12个月租金涨幅
HAP补贴上限 住房部数据 政府租金补贴上限(按家庭类型)

租金趋势图

折线图展示2018Q1至2025Q2的季度租金变化,可以看到COVID期间租金下跌(2020-2021年)和随后的快速上涨。

供给分析板块

  • 年均竣工量(套)
  • 规划许可量(未来18-24个月的供给预测)

人口与就业板块

  • 2022年人口及2016-2022年增长率
  • IDA外资吸引力等级(Hub核心 / Regional区域 / Emerging发展中)
  • IDA支持企业估计就业人数
  • 主要外资企业名单

安全板块

  • 每千人犯罪率(2022-2024年平均)

能源评级板块(BER)

  • 已评级房产的BER等级分布(从A到G的比例)
  • 平均建筑面积(平方米)
  • 平均建造年份

都柏林邮区查询额外功能

  • 选择卧室数量(1-5床)
  • 显示该邮区该床型数量的季度租金趋势(2018-2025)
  • 显示当季同比增长率
  • PPR实际成交中位价(来自dublin_postcodes.json)
  • 毛收益率

6.3 净回报计算器(calculator.html)

URL:https://property.fanyang.me/calculator.html

定位:最实用的工具,帮助投资者算出买了之后每年真正能到手多少钱(而不是表面上的租金回报率)

输入参数

参数 控件类型 默认值 说明
房产价格 数字输入框 无 欧元
月租金 数字输入框 无 欧元/月
所在郡 下拉选择(可选) — 选后自动填入该郡空置率
税务身份 单选按钮(3个) 非居民20%预扣税 影响税率
管理费 滑块 0-20% 10% 支付给房产管理公司的费用
空置率 滑块 0-20% 8% 预计一年中无租客的时间比例
年度维修费 滑块 0-2% 0.5%(房价的) 预计修缮费用
税务身份说明:非居民-20%预扣税:在爱尔兰没有税务居留的投资者(如中国买家),租客或管理公司必须每月扣留20%的租金上缴税务局。这是最常见的情况。爱尔兰居民-标准税率20%:年收入在标准税率档内的爱尔兰居民爱尔兰居民-高税率40%:年收入超过标准税率上限的爱尔兰居民(高收入)

计算逻辑(详见算法M6)

计算器自动算出:

  1. 毛收益率:年租金 ÷ 房价
  2. 净收益率:扣除所有成本和税后净收入 ÷ 房价

并展示逐项明细:

年租金总额
  (- 空置损失)
= 有效租金收入
  (- 管理费)
  (- 维修费)
  (- 保险费)         ← 固定值:€600/€800/€1,200(按房价段)
= 应税收入
  (- 所得税)
  (- 地方物业税LPT)  ← 按Revenue 2022分档,约€90-€1,035/年
= 净年收入

净年收入 ÷ 房价 = 净收益率

RPZ提示框

页面底部有一个黄色警告框,提示爱尔兰的"租金限压区"(Rent Pressure Zone)制度:在大部分城市地区,每年租金涨幅不得超过2%。投资者不能随意提价。


6.4 按揭市场页(mortgage.html)

URL:https://property.fanyang.me/mortgage.html

定位:展示爱尔兰按揭市场的历史趋势,帮助投资者了解市场资金面

页面包含的图表和数据

图表一:季度按揭提款量(2010-2025)

  • 柱状图,分首次置业者(FTB)、换房者(Mover)、投资者(RIL)三色堆叠
  • 可以直观看到:2010-2011年金融危机后跌至低谷,随后逐年恢复
  • 2025年Q4总按揭额达43亿欧元

图表二:月度审批量(2024-2025)

  • 折线图,展示最近两年的月度按揭审批动态

图表三:首次置业者占比趋势

  • 显示FTB占市场的比例变化
  • 当前FTB约占按揭数量的62%(首置主导市场)

图表四:平均首置贷款规模趋势

  • 展示首次置业者平均贷款金额从2010年约€201,516增长到2025年Q4约€323,871

图表五:利率环境(2022-2026)

  • 双折线图:ECB基准利率 vs 爱尔兰新增按揭平均利率
  • 展示2022年ECB从0%快速加息到4.5%,以及2024年底开始降息的过程
  • 当前:ECB 2.15%,爱尔兰新增按揭 3.50%

KPI概览卡

指标 数值
首次置业者Q4 2025平均贷款 €323,871
Q4 2025总按揭放款 €43亿
首置占比(按笔数) ~62%
当前新增按揭利率 3.50%

6.5 地图页(map.html)

URL:https://property.fanyang.me/map.html

定位:用颜色深浅直观展示26个郡在各指标上的差异

技术实现

使用 Leaflet.js 1.9.4 渲染的交互式 Choropleth 地图(热力地图)。地图底图使用爱尔兰26个郡的GeoJSON多边形数据,根据选定指标的值用不同深浅的颜色填充每个郡。

可切换的6个指标

指标 颜色含义 数据来源
中位成交价 深绿=贵,浅绿=便宜 PPR(county_stats.ppr_median_price)
毛收益率 深绿=高收益,浅绿=低收益 county_stats.gross_yield_daft
人口增长 深绿=增长快,浅绿=增长慢 cso_population.json
新增供给 按年均竣工量 cso_completions.json
规划许可 按年均获批量 cso_planning.json
空置率 深色=空置多,浅色=空置少 cso_vacancy.json
犯罪率 深色=犯罪多(红色系),浅色=少 cso_crime.json

交互功能

  • 点击郡:右侧弹出信息面板,显示该郡的多项指标摘要
  • 信息面板内容:中位成交价、毛收益率、人口、竣工量、空置率、犯罪率
  • "查看完整详情"链接:跳转到 query.html?county=郡名,自动触发该郡的详细查询
  • 悬停提示:鼠标悬停时显示郡名和当前指标数值

6.6 数据与方法说明页(about.html)

URL:https://property.fanyang.me/about.html

定位:全面透明地展示数据来源和计算方法,建立用户信任

页面内容

数据来源区(14个来源卡,分4组)

  • A组:房产交易(PPR、Daft、RTB)
  • B组:供给/人口/社会(SEAI BER、CSO人口、CSO空置率、CSO竣工、CSO规划、CSO犯罪)
  • C组:经济与金融(IDA、BPFI、ECB、爱尔兰央行)
  • D组:税务与法规(HAP限额 + LPT分档)

每张数据源卡包含:机构名称、数据内容描述、时间范围、用于哪个页面、数据局限性警告、官方数据链接

方法论区(9个手风琴展开区,M1-M9)

见第7章详解。


7. 计算算法详解

M1:新建住宅VAT调整

问题背景:爱尔兰PPR数据中,新建住宅的成交价是"不含VAT"的价格(VAT为13.5%)。二手房免VAT,价格直接是全价。如果不处理,新建住宅价格看起来会比实际低13.5%。

解决方案:对所有标注为新建(description LIKE 'New%'且vat_exclusive = true)的交易,将价格乘以1.135。

新建住宅调整价 = 原始价格 × 1.135
二手住宅调整价 = 原始价格(不变)

M2:五层PPR数据清洗

从~775,000行 → 699,653行有效数据,依次过滤:

层次 规则 原因 去除数量
第1层 去掉价格低于€50,000的 家庭内部名义转让(€1转给子女等) 少量
第2层 去掉价格高于€3,000,000的 机构批量购买整栋楼,245笔共€30.6亿,会拉高郡级中位数 245笔
第3层 去掉not_full_market = true的 PSRA已标记的非市场价交易(破产出售、社会住房转让等) 33,301笔
第4层 VAT调整(见M1) 标准化新旧建筑价格 无删减,仅调整
第5层 DISTINCT ON (address, date_clean)去重 同一地址同一日期的重复录入 870笔

SQL伪代码:

CREATE VIEW clean_residential_sales AS
SELECT DISTINCT ON (address, date_clean)
  *,
  CASE WHEN description LIKE 'New%' AND vat_exclusive
       THEN price * 1.135
       ELSE price END AS adjusted_price
FROM property_sales
WHERE price >= 50000
  AND price <= 3000000
  AND not_full_market IS NOT TRUE
ORDER BY address, date_clean, price ASC;

M3:中位价计算

为什么用中位数而不用平均值:

假设一个小县城有9套成交:€100k、€120k、€130k、€140k、€150k、€160k、€170k、€180k、€2,000k

  • 平均值 = €350k(被最后一笔超豪华物业严重拉高)
  • 中位数 = €150k(更能代表普通市场)

规则:

  • 郡级:至少20笔交易才纳入统计
  • 都柏林邮区:至少10笔交易才纳入统计

M4:都柏林邮区识别

难点:PPR数据里的地址是自由文本字符串,例如:"Flat 3, 45 Ranelagh Road, Ranelagh, Dublin 6",需要从中提取邮区编号"6"。

双重识别方法:

  1. 地址解析:用正则表达式在地址字符串里找"Dublin X"(X为数字)的模式
  2. Eircode前缀:2021年后的记录有Eircode,前两位是区域代码(如D01、D04),可以映射到邮区

有效都柏林邮区集合:{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 24}(没有D19、D21、D23这三个区)

覆盖率:双重方法将覆盖率从53.4%提升到65.8%


M5:毛租金收益率

毛收益率 = 一年如果全部出租能收到的租金 ÷ 买房的价格,以百分比表示。

两个版本:

# Daft版本(主要展示):用挂牌价和挂牌租金
gross_yield_daft = (Daft月租金 × 12) / Daft挂牌要价 × 100
PPR版本(次要展示):用成交价和登记租金
gross_yield_ppr = (RTB月租金 × 12) / PPR中位成交价 × 100

重要提示:毛收益率不是真实到手收益率。要扣除管理费、空置损耗、维修费、保险、税款后才是净收益率(通常比毛收益率低40-50%)。


M6:净回报计算(完整公式)

这是净回报计算器的核心逻辑:

① 年毛租金       = 月租金 × 12
② 空置损失       = 年毛租金 × 空置率
③ 有效年租金     = 年毛租金 - 空置损失
④ 管理费         = 有效年租金 × 管理费率
⑤ 年维修费       = 房产价格 × 维修费率
⑥ 保险费         = 固定值(按房价段:<€30万→€600,€30-60万→€800,>€60万→€1,200)
⑦ 应税收入       = 有效年租金 - 管理费 - 维修费 - 保险费
(注:管理费、维修费、保险费均为税前可抵扣费用)
⑧ 所得税         = 应税收入 × 税率
(非居民:20%,标准税率:20%,高税率:40%)
⑨ 地方物业税LPT  = 按Revenue 2022分档查表(€90 to €1,035+)
⑩ 净年收入       = 有效年租金 - 管理费 - 维修费 - 保险费 - 所得税 - LPT
⑪ 净收益率       = 净年收入 / 房产价格 × 100%

LPT分档(Revenue 2022重新估值):

房产估值 年度LPT
≤ €200,000 €90
€200,001–€262,500 €225
€262,501–€350,000 €315
€350,001–€437,500 €405
€437,501–€525,000 €495
€525,001–€612,500 €585
€612,501–€700,000 €675
€700,001–€787,500 €765
€787,501–€875,000 €855
€875,001–€962,500 €945
€962,501–€1,050,000 €1,035
> €1,050,000 房价 × 0.1029%

M7:犯罪评分标准化

问题:不同郡人口相差悬殊,都柏林人口150万,莱特里姆只有4万人。如果直接比较犯罪总数,都柏林会显得极不安全。

解决方案:将犯罪总数转化为每千人犯罪率:

每千人犯罪率 = 年均犯罪记录数 / 人口 × 1000

注意:爱尔兰警察分区(Garda Division)不完全对应26个郡,以下警察区跨越两个郡,按人口比例估算拆分:

  • Cavan/Monaghan
  • Sligo/Leitrim
  • Roscommon/Longford
  • Laois/Offaly
  • Kilkenny/Carlow

M8:价格增长率计算

基准年选择:2013年是2008年金融危机后的房价谷底,以此为基准计算"复苏以来的增长"。

增长率 = (2025年中位价 - 2013年中位价) / 2013年中位价 × 100%

注意:某些人口稀少的郡在2013年可能样本量不足,使用2014年或2015年作为起点。


M9:HAP承租能力指数

含义:将市场租金与HAP补贴上限做对比,衡量政府补贴与市场的脱节程度。

HAP覆盖率 = HAP家庭限额 / 市场平均两居室租金 × 100%

如果覆盖率低于70%,意味着接受HAP租客的房东收入远低于市场价,此类租客对投资者吸引力下降。


8. 国际化(双语)系统

工作原理

网站支持中文(简体)和英文切换。实现方式是两套并行方案,分别针对不同类型的内容:

方案A:i18n.js(用于简短UI文本)

所有页面引用 /i18n.js?v=5(版本号用于缓存刷新)。

HTML中用属性标记需要翻译的元素:

<span data-i18n="nav.report">Report</span>

JS启动时调用 applyLang() 把翻译文本填入这些元素。点击语言按钮时触发 langchange 事件,所有监听这个事件的组件更新显示。

方案B:.en-text / .zh-text CSS类(用于长段落文本)

about.html中大量中英文并排内容使用这种方式:

<p>
  <span class="en-text">This is the English text.</span>
  <span class="zh-text">这是中文文本。</span>
</p>

CSS规则控制显示:

html[lang="zh-CN"] .en-text { display: none; }
html[lang="zh-CN"] .zh-text { display: inline; }
/* 默认(英文)下相反 */

i18n.js命名空间

命名空间 用于页面 说明
nav.* 所有页面 导航链接文本
footer.* 所有页面 页脚免责声明(不同页面用不同key)
ix.* index.html 首页所有文本
q.* query.html 收益率查询页所有文本
c.* calculator.html 净回报计算器所有文本
m.* mortgage.html 按揭市场页所有文本
mp.* map.html 地图页所有文本

9. SEO 优化

每个页面的SEO标签配置

所有6个页面均配置了:

  • <title>:关键词丰富的页面标题
  • <meta name="description">:160字以内的摘要
  • <meta name="keywords">:关键词列表
  • <link rel="canonical">:规范URL(防止重复内容)
  • <link rel="sitemap">:指向 /sitemap.xml
  • <link rel="alternate" hreflang="en-IE">:语言区域标记
  • <meta name="geo.region" content="IE">:地理位置标记
  • Open Graph标签(og:type, og:title, og:description, og:image + 尺寸 + 类型, og:locale, og:site_name):用于Facebook/LinkedIn分享
  • Twitter Card标签:用于Twitter分享
  • JSON-LD结构化数据:帮助Google理解页面内容类型

结构化数据类型

页面 JSON-LD类型 含义
index.html WebSite + Dataset + FAQPage 数据集+常见问题
query.html WebApplication 交互工具
calculator.html WebApplication 交互工具
mortgage.html Dataset 数据集
map.html WebApplication 交互工具
about.html Article 文章页

sitemap.xml

包含6个URL,按重要性设置优先级:

  • /:1.0(最重要)
  • /query.html:0.9
  • /mortgage.html:0.9
  • /calculator.html:0.9
  • /map.html:0.8
  • /about.html:0.7

10. 部署与运维

部署方式

本地修改文件后,用SCP命令直接上传到服务器:

SSHPASS='Yfpwd,0312.' sshpass -e scp -o StrictHostKeyChecking=no \
  文件名.html root@91.99.111.153:/opt/www/irelandproperty/

上传后Nginx立即生效,无需重启服务。

缓存刷新策略

JavaScript文件(特别是i18n.js)浏览器会缓存。更新i18n.js后,需要在所有HTML文件的引用处修改版本号:

<!-- 旧版本 -->
<script src="/i18n.js?v=4"></script>
<!-- 更新后 -->
<script src="/i18n.js?v=5"></script>

当前版本:v=5

数据更新流程

1. 下载最新PPR数据(PSRA网站,CSV格式)
2. 用Python导入PostgreSQL(property_sales表,只追加不修改)
3. 运行分析SQL/Python脚本,重新生成JSON文件
4. 上传新JSON文件到 /data/ 目录
5. 如有新字段或指标,更新相应HTML和i18n.js
6. 缓存刷新(如需要,更新脚本版本号)

11. 关键数据结论

房价增长(2013-2025)

  • 全国中位价增长:+134%
  • 增长最快:Laois(+220%)、Westmeath(+206%)
  • 增长最慢:Donegal(+90%),全国唯一低于+100%的郡
  • 都柏林:+106%,排名第24(倒数第3)——高基数效应

2025年租金收益率排名(毛收益率)

排名 郡 毛收益率 中位成交价
1 Longford 7.05% ~€190k
2 Leitrim ~6.8% 低价
3 Roscommon ~6.5% 低价
7 Dublin ~5.5% ~€497k
26 Kildare 4.28% 高价
注意:以上毛收益率约为实际到手净收益率的2倍(扣除费用、空置、税后)

按揭市场(2025年Q4)

  • 首次置业者平均贷款:€323,871
  • 首置占按揭总量:约62%(市场主力买家是刚需)
  • 当前ECB利率:2.15%(2024年底开始降息)
  • 当前爱尔兰新增按揭平均利率:3.50%

都柏林邮区最贵两居室租金(2025Q2)

邮区 2床月租
Dublin 2(市中心) €2,483
Dublin 4(南边高档区) 类似价位
Dublin 1 €2,050(1床)

附录:文件清单

/opt/www/irelandproperty/
├── index.html          首页(PPR分析报告)
├── query.html          收益率查询工具
├── calculator.html     净回报计算器
├── mortgage.html       爱尔兰按揭市场
├── map.html            郡级数据地图
├── about.html          数据来源与方法说明
├── i18n.js             中英双语翻译(当前v=5)
├── favicon.svg         网站图标(绿色"IP"字样)
├── og-image.png        社交分享缩略图(1200×630px)
├── sitemap.xml         搜索引擎站点地图
└── data/
    ├── county_stats.json       26个郡综合数据(核心文件)
    ├── dublin_postcodes.json   22个都柏林邮区数据
    ├── rent_trends.json        41个地点季度租金趋势
    ├── ber_county.json         55个地区BER能源评级
    ├── cso_population.json     26个郡人口数据
    ├── cso_vacancy.json        26个郡空置率
    ├── cso_completions.json    26个郡住宅竣工量
    ├── cso_planning.json       26个郡规划许可量
    ├── cso_crime.json          26个郡犯罪统计
    ├── hap_county.json         26个郡HAP租金补贴上限
    ├── ida_fdi.json            26个郡外资吸引力数据
    ├── mortgage_data.json      爱尔兰按揭历史数据
    ├── mortgage_rates.json     ECB和爱尔兰按揭利率历史
    └── region_matrix.json      5大区域分组数据

文档生成日期:2026-03-31 | 如有问题请联系:imfan.yang@gmail.com

Read more

稀松平常的一天,却被狠狠的感动着。

今天向往常一样去上课,由于下课后要去做兼职,所以就穿着餐厅要求的全黑衣服,为了不显得那么像个服务员,我在外面套了一件防晒衣。 到了教室以后发现多了两个新同学,但即使多了她们俩,班里一共也就7个人。因为大部分人都注册了为期两周的线上课程。 今天气温24度,但都柏林的大部分建筑里都没有空调,当然也包括我们的教室,体感很热。出于安全考虑,窗子也没法打开,大家就靠一台电风扇降温。 老师热的在教室里四处踱步,她突然看向我,满脸疑惑,FAN,don’t you feel hot?我说还好,因为我里面穿着打工的制服,我感觉不好看。我随即拉开防晒衣的拉链给她看。她说,没事的,你不说我都不知道那是制服。其实我们的uniform就是自己买的黑色裤子和黑色衬衣,的确就是平时穿的衣服。 课堂讨论的环节,坐在我右边的是其中的一位新同学,她来自巴西,看起来五六十岁,很健谈。她说她已经退休了,她以前的工作是teach The new teachers how to teach.😂可能相当于国内师范院校里的老师吧。她说她有一个儿子39岁(和我同岁)

By Fan Yang