陳帆的手指還停在鍵盤上,屏幕裡的爬蟲日誌剛歸檔完畢,測試環境的數據庫連接狀態顯示為“空閒”。他正準備重啟本地服務,手機震動起來。來電顯示是市科委項目辦。
“陳帆,驗收會提前了。”對方語氣急促,“專家組明天上午九點到,材料必須今晚提交。”
他沒問原因。這類臨時變動在政府項目裡並不罕見,但來得這麼緊,顯然是衝著施壓來的。他看了眼時間,晚上七點四十二分。距離截止不到三個小時。
他迅速打包最新版係統演示包,將核心模塊壓縮加密,拷入U盤。服務器還在運行日常任務,他順手點了關機序列,等風扇徹底停轉,拔下電源線,把筆記本夾在腋下出了門。設備外殼還帶著餘溫,貼著手臂微微發燙。
會議室已經坐了人。
長桌一側坐著三位專家,對麵是項目組預留的兩個座位。林悅已經在場,見他進來,輕輕點頭。她麵前攤開的是數據采集流程圖,筆尖停在某個節點上,像是剛寫完備注。
會議準時開始。
專家組組長翻開文件:“我們今天主要看風險評估模塊的實際表現。你這個係統號稱能預測市場波動,那就要經得起推敲。”
陳帆打開筆記本,接入投影。界麵加載出風險模型的主控麵板,曲線圖實時跳動。
“目前模型基於1995到1997年的曆史數據訓練,”他簡明陳述,“采用移動平均和波動率加權算法,對政策滯後效應做了平滑處理。”
專家A翻了兩頁報告,抬頭:“1998年一季度央行降準一個百分點,財政部增發特彆國債三千億。你的模型有沒有把這些納入?”
陳帆頓了一下:“當前版本尚未動態接入政策變量。”
“那就是沒納進去。”專家A合上文件,“用三年前的數據預測現在的市場,等於拿舊地圖走新路。這不叫預測,叫推測。”
會議室安靜了一瞬。
專家B接過話:“更嚴重的是杠杆問題。”他指著屏幕上的一段回測結果,“你計算個股風險敞口時,隻用了價格標準差。可現在券商已經開始試點融資業務,資金放大效應明顯。忽略杠杆,相當於低估實際波動至少三成。”
“比如這隻股票。”專家B點出案例,“你在三月十八號判定其風險等級為中等,但實際上當天融資買入占比已達百分之二十二。真實波動比你算的高出四十七個百分點。這種偏差,一旦用於實盤決策,後果是什麼?”
沒人回答。
陳帆盯著那條被標紅的曲線,手指無意識地在觸控板邊緣劃動。他知道問題在哪——模型太依賴靜態統計,而現實正在加速變化。政策頻出,工具創新,市場結構已經不同。
林悅忽然動了。
她沒說話,隻是從筆記本上撕下一頁紙,快速寫下四個字:加入政策變量。然後輕輕舉起,朝他方向遞過去。
紙頁不大,字跡清晰。
陳帆眼神一凝。
他當即切換窗口,打開代碼編輯器。光標在“RiskFactorPool.cs”文件中定位到權重數組。新建兩個浮點型參數:
&nulusindex`
&nonetaryloosenessindex`
下麵一行行敲入初始化邏輯。財政刺激強度以國債發行量、基建投資增速為基礎打分;貨幣寬鬆程度則參考準備金率調整幅度、公開市場操作頻率,做歸一化處理。
“你現在做什麼?”專家A皺眉。
“重構模型因子。”陳帆頭也沒抬,“從現在開始計入政策影響。”
“現場改代碼?你知道這有多不專業嗎?”
“我知道。”陳帆敲下回車,“但我更知道,一個不能進化的模型,根本不配叫係統。”
他調出央行和財政部近三個月的公開數據,手動錄入初始值。然後修改回測引擎,讓新參數參與風險評分計算。編譯通過後,重新加載四月份全部樣本數據。
進度條緩緩推進。
所有人盯著屏幕。
二十秒後,結果刷新。
原模型對四月市場異常波動的捕捉率為78%。新版上升至85.3%,尤其在政策發布後的三個交易日內,預警準確率提升明顯。
專家B湊近了些:“你這個指數……是怎麼賦權的?”
“按政策落地節奏分階段加權。”陳帆調出計算過程,“比如降準,不是一次性計入,而是模擬資金逐步釋放的過程,影響周期設為六周。”
專家A沉默片刻:“那你之前為什麼不這麼做?”
“因為數據源沒打通。”陳帆如實答,“我們剛完成多源采集係統的部署,政策文本的結構化提取模塊還在開發。目前靠人工錄入,更新頻率有限。”
“但這說明係統有擴展能力。”林悅第一次開口,“它不是死的模型,而是可以隨著環境變化不斷加載新規則。”
專家組交換了一個眼神。
組長低頭看了看表:“還有十分鐘。我問最後一個問題——你說能提升到85%,那最終目標是多少?”
“90%以上。”陳帆合上代碼窗口,調出係統架構圖,“下一步我會把政策文本解析自動化,加入語義識彆,讓係統自己判斷調控力度。同時補全杠杆監測模塊,接入融資融券試點數據。”
“也就是說,現在還不完整?”
“所有係統都有起點。”他說,“但它已經在進化。”
會議室再次安靜。
良久,組長合上記錄本:“今天的評審結論——中期驗收,有條件通過。最終驗收時,風險模塊準確率必須達到90%,並且實現全流程自動更新。做不到,項目終止。”
“明白。”陳帆點頭。
散會後,其他人陸續離開。陳帆沒動。他把修改後的參數導出備份,保存到U盤。桌麵便簽上多了條待辦事項:“政策變量需每日更新”。
林悅走過來,遞給他一杯水。杯壁溫熱,應該是剛泡好不久。
“他們差點就斃了項目。”她說。
“差一點。”他接過杯子,指尖碰到杯沿,“但也隻是差一點。”
窗外天色已暗,樓下的路燈一盞盞亮起。實驗室所在的教學樓還亮著幾扇窗,其中一間屬於他們的機房。
他站起身,收拾電腦。走廊傳來腳步聲,是清潔工在拖地。水痕在瓷磚上反著光,一直延伸到電梯口。
林悅跟著走出來,兩人並肩下了樓。夜風吹散白天的悶熱,街上車流如常。
走到校門口,陳帆停下,回頭望了一眼。
那棟樓靜靜立著,燈光稀疏,卻有一扇窗始終亮著——那是服務器機櫃的應急照明,二十四小時不斷電。
他知道,隻要電沒斷,係統就在運轉。
就在他轉身的瞬間,筆記本突然震動了一下。
是後台報警。
他打開一看,是剛上線的政策數據監聽模塊報錯:無法連接市政府信息公開接口。
提示信息隻有一行字:“訪問頻率超限,請降低請求間隔。”陳帆盯著屏幕右下角的時間,二十三點四十七分。最後一次爬蟲請求失敗後,係統已停止響應三分鐘。他沒有重啟服務,而是將日誌文件另存為副本,拖進加密文件夾。鍵盤敲擊聲停了下來,房間裡隻剩下服務器風扇低沉的嗡鳴。