RealPing 的核心主張是「算得對」:把官方含車位、含公設的單價,還原成住宅每坪實際使用成本。 這份文件把計算與清洗方法完整攤開,讓任何人都能稽核、甚至自己重現。所有邏輯都對應 transform/models/marts/fact_transaction.sql(清洗主邏輯)與 transform/models/staging/stg_transactions.sql(正規化)。
資料來源:內政部不動產交易實價查詢服務網(季度批次,110/7 起含主建物/附屬建物面積)。
依其「無償、非專屬、得再授權」授權條款使用,須註明出處。
1. 問題:官方每坪單價不可直接比,也不反映可用空間成本
官方「單價元平方公尺」的分母是建物移轉總面積,含車位與公設坪數。車位動輒十幾坪、 公設常佔 25–35%,而且各案公設比不一——所以官方每坪單價不能直接拿來比較不同房子, 也不等於你每坪可用空間的成本。實坪單價把車位、公設坪數移出分母(公設的成本仍計入, 只是攤回實際能用的坪),給一個可比較的基準與每坪真實使用成本。
2. 面積關係(110/7 起資料)
建物移轉總面積 = 主建物 + 附屬建物(已含陽台) + 共有部分(公設) + 車位面積
由此拆出兩個關鍵面積:
| 名稱 | 定義 | 含義 |
|---|---|---|
| 淨面積 | 建物移轉總面積 − 車位面積 | 去車位,仍含公設 |
| 專有面積(實坪) | 主建物面積 + 附屬建物面積 | 去車位、去公設的實際使用面積 |
⚠️ 陽台已包含在「附屬建物面積」內,不可再另外扣陽台,否則重複扣。
3. 公設比
公設面積 = 淨面積 − 專有面積 (max(…, 0),避免負值)
公設比 = 公設面積 ÷ 淨面積 (佔「去車位後建坪」的比例)
4. 三層單價對照(單位:萬元/坪;1 坪 = 3.305785 ㎡)
每筆都同時回傳三種口徑,讓你看清差在哪:
| 層 | 公式 | 口徑 |
|---|---|---|
| 原始單價 | 官方單價(元/㎡) × 3.305785 ÷ 10000 | 官方:含車位、含公設 |
| 去車位單價 | (總價 − 車位價) ÷ (淨面積 ÷ 3.305785) ÷ 10000 | 扣車位,仍含公設 |
| 實坪單價 ★ | (總價 − 車位價) ÷ (專有面積 ÷ 3.305785) ÷ 10000 | 去車位、去公設 —— 招牌指標 |
其中「淨價 = 總價 − 車位價」用來剝離車位的價格貢獻。
5. 品質旗標:哪些資料不能直接拿來算行情
原始批次過半不適合直接計算行情,RealPing 對每筆標記旗標,預設只回「實坪可用」案件:
| 旗標 | 判定 |
|---|---|
| 是否特殊 | 備註命中特殊交易關鍵字(見 §7)或 交易標的 = 車位 |
| 含車位無價 | 車位面積 > 0 但車位價 = 0(無法剝離車位價格) |
| 多物件 | 交易筆棟數中「土地筆數 > 1」或「建物棟數 > 1」(一筆交易含多物件,單價失真) |
| 單價可用 | 淨面積 > 0 且 非特殊 且 非多物件 且 非含車位無價 |
| 實坪可用 | 在「單價可用」基礎上,再要求專有面積 > 0(有主建物面積能拆公設) |
5a. 樣本代表性與選擇偏誤(誠實邊界)
實坪行情只在「實坪可用」子集上計算,這個子集約佔全體成交的 19%(線上約 58 萬筆中)。 其餘約 81% 因下列旗標被排除(旗標彼此重疊,故不相加):特殊交易約 52%、多物件約 26%、 缺主建物面積約 25%、含車位無價約 7%。這代表我們報的中位數與落差,描述的是 「可完整拆公設、單物件、可剝車位的正常住宅成交」,不是全體實價登錄、也不是整體市場。 因此這是一種選擇樣本(selection on observability + market-normalcy),使用時請留意它帶來的偏誤方向:
- 刻意排除的失真(特殊/多物件/含車位無價):剔除親友交易、法拍、一筆多物件、無法剝離車位價的成交——
這些本就會扭曲每坪單價,排除讓行情更乾淨,但也意味行情不涵蓋這些情境。
- 觀測性造成的型態偏移(缺主建物面積):拆公設需要主建物面積,故**純土地、車位、部分未登記獨立
主建物面積的標的(含多數透天)會落在子集外。實坪行情因此偏向有完整建物面積登記的集合式住宅 (華廈/大樓/公寓),透天、土地不在內**。
- 時間/schema 邊界:主建物面積是 110/7 起的新欄位(見 §2)。現行服務資料的期別均在 110/7 之後,
故此項在當前資料不構成時間偏誤;但若回填 110/7 以前的批次,那些成交會因無此欄位整批落在子集外, 屆時實坪行情會偏向較新的成交,需另行標註。
我們為此做的事(讓偏誤可檢、不外推):①逐筆旗標對外 API 一併帶出,任何人都能用旗標重新切分、 驗證子集;②前端「資料誠信」區塊把各旗標佔比視覺化,明示「為何過半成交不能直接算行情」; ③對外措辭一律限定「實坪可用成交」,不把此中位數外推成全體市場。
6. 跨期去重
raw 依期別分資料夾(raw/<期別>/)。同一筆交易(編號)若跨期出現(後期為更正/重發版), 取最新一期:row_number() over (partition by 編號 order by 來源期別 desc) = 1。
6a. 交易日健全性(未來日期 = 登錄打錯年)
民國年月日轉西元(1120626 → 2023-06-26)是逐字轉換,登錄者把年份打錯(如 112 打成 116) 就會得到不可能的未來日期。判準:一筆批次不可能包含晚於其來源期別(季)末日的成交 (112S4 批次的成交不可能晚於 2023-12-31)。故 交易日 > 期別末日 者視為錯誤資料、 歸 null(見 macros/roc.sql 的 period_end_date)。 這類列不進區×月行情聚合(agg 已濾 交易日 is not null),單價等其他欄位仍保留。 實測佔比極低(7 季約 58 萬筆中 14 筆,約四萬分之一)。
不默默清掉(透明原則):被判定的列會打上 日期異常 = true 旗標,對外 API 回應一併帶出, 消費者查得到、可篩選;每次清洗的 serving 摘要 日誌也記 bad_dates 筆數,運維看得到每批多少髒資料。
7. 「特殊交易」關鍵字(唯一來源)
備註命中以下任一關鍵字即視為非正常市場交易(單一來源: transform/dbt_project.yml 的 vars.special_regex):
親友・親屬・親戚・親等・關係人・員工・股東・特殊・急・債・拍賣・法拍・金拍・點交・
增建・未登記・毛胚・瑕疵・凶宅・事故・合建・分割・分件・解約・更正・政府・公有・
標售・讓與・地上權・持分・贈與・信託
8. 實算範例(可自己重現)
以下用 repo 內附樣本中的一筆真實成交(臺北市內湖區金龍路),任何人都能跑 make sample && make transform 後查到同樣結果。
原始欄位:總價 19,080,000 元、車位價 0、建物移轉總面積 101.89 ㎡、車位面積 0、 主建物 72.69 ㎡、附屬建物 0 ㎡、官方單價 187,261 元/㎡。
逐步計算:
淨面積 = 101.89 − 0 = 101.89 ㎡ → 淨建坪 = 101.89 / 3.305785 = 30.82 坪
專有面積 = 72.69 + 0 = 72.69 ㎡ → 實坪 = 72.69 / 3.305785 = 21.99 坪
公設比 = (101.89 − 72.69) / 101.89 = 28.7%
淨價 = 19,080,000 − 0 = 19,080,000 元
原始單價 = 187,261 × 3.305785 / 10000 ≈ 61.90 萬/坪
去車位單價 = 19,080,000 / 30.82 / 10000 ≈ 61.90 萬/坪 (此筆無車位,故與原始同)
實坪單價 = 19,080,000 / 21.99 / 10000 ≈ 86.77 萬/坪
結論:官方口徑 61.90 萬/坪,去掉 28.7% 公設後的實坪單價 86.77 萬/坪(高約 40%)。 這 40% 不是漲價,而是把公設坪也算進分母、稀釋了官方每坪數字的結果——換成「每坪可用空間的成本」就會看到。
想驗證去車位的效果,挑一筆有車位的成交(車位面積 > 0、車位價 > 0)重算即可:
此時「去車位單價」會明顯高於「原始單價」,「實坪單價」再更高。
9. 刻意不做的事(避免假精確)
- 不臆測缺漏的主建物面積(缺就標記為「實坪不可用」,不硬算)。
- 不對特殊/多物件交易硬給單價(標記後預設排除)。
- 不做地理編碼/社區比對/估價模型 —— 那是 L2/L3,不混進這層乾淨資料的計算。
10. 實坪價格指數(RPI)的編製方法
RealPing 實坪價格指數(RPI)以上述「實坪單價」為口徑,每月編製全台與六都的價格指數 (發布於 realping.tw/rpi/)。逐月中位數會受「這個月剛好豪宅多/透天多」的組成影響, 所以 RPI 不直接拿全體中位數,而是採分層定權中位數比值法(Laspeyres 式定基指數):
- 母體:
實坪可用樣本(與全站招牌指標同口徑,見 §5)。 - 分層(cell):縣市 × 建物型態。每個 cell 各自算「當月中位實坪單價 ÷ 該 cell 基期中位」,
再以基期各 cell 的成交筆數占比加權平均 ×100 —— 逐月組成改變不影響權重。
- 基期:2025-01 至 2025-06 = 100,固定不變。日後歷史資料回填延長序列,也不重訂基期,
已發布的指數水準不會被洗掉。
- 納入門檻(全部固定為常數、變更即為方法修訂):cell 基期樣本 ≥ 60 才納入;
cell 當月樣本 < 5 該月剔除該 cell、權重就地重歸一;全台月樣本 < 1,500 的月份不納入序列 (序列取達標的最長連續段);最新月樣本不足前 6 個月中位數的 60% 視為登錄未完備、整月不納入。
- 標題數字用 3 個月移動平均:月頻中位數型指數天然有 ±2% 左右的樣本雜訊,
原始月值照常發布(資料檔與走勢圖),但標題與月/年變動以 3 個月移動平均計。
- 範圍:全台 + 六都。六都以縣市內建物型態分層;其餘縣市月樣本過薄,寧缺勿發布雜訊。
修正政策(vintage):實價登錄有申報時滯與更正機制,歷史月份的指數會隨每月批次小幅修正。 指數主頁與資料檔(rpi.json / rpi.csv)永遠以最新資料重算全序列; 每期存檔頁(/rpi/資料月)定格發布當時的數字、永不改動,供稽核「當時發布了什麼」。
誠實邊界:RPI v1 的分層只控制縣市×型態的組成偏移,未做逐戶特徵的品質調整 (hedonic/repeat-sales),並繼承 §5a 的樣本代表性限制(僅實坪可用樣本、偏集合式住宅)。 它衡量的是「實坪可用樣本中,每坪實際使用空間價格」的變動, 與含公設口徑的既有指數(信義/國泰)衡量的對象不同,數值不可直接互比。
常見問題
關於去公設實坪的算法與資料判定。