●熟悉腳本的撰寫流程、建立完整進場交易策略、打造專屬自動化交易模型的全方位程式交易書籍
●嘉實資訊創辦人兼總經理李政霖,親自為投資人量身訂做程式交易入門攻略寶典,兼具實用性與參考性
●透過程式交易的學習三部曲,打造高效率的學習曲線,完全適合上班族或沒空盯盤的投資族群
「程式交易學習三部曲」
第一階段:拿來用,看得懂
對於完全沒有程式語言學習經驗,但具備一定投資專業知識的朋友,本書不僅揭露各家語法的優缺點,更協助新手篩選出最適合上手的程式交易語言。
第二階段:拿來改,會改
作者將寫程式的過程,比擬為一般大眾寫作文時的起、承、轉、合,教你直接從一般交易策略的腳本開始著手,並用投資人直觀的操作思維邏輯,一步步調整為最適合自己的策略腳本。
第三階段:直接寫,會寫
本書不只是作為初學者第一本學習程式交易的手冊,更是培養專業交易員所該具備的完整投資思維架構。從篩選標的到進出場策略,乃至於作者管理基金時的完整交易決策流程盡列其中;程式不只要寫得對,更要實踐你的投資思維。
作者簡介:
李政霖
【經歷】
ING銀行外匯交易員
元大自營部操盤人
元大投信研究部經理
嘉實資訊創辦人
【現任】
嘉實資訊總經理
章節試閱
CH 1 程式交易簡介
全球首富巴菲特應該是大家心目中的神,但這二十年來,有一位老兄績效比他好,這位老兄的名字叫西蒙斯(James Simons),是個差點就拿到諾貝爾獎的數學家。他成立了一家叫文藝復興科技的公司,管理一個叫大獎章的避險基金,這個基金從 1989 年以來,年化報酬率是 34%(巴菲特是 20%),2008 年次貸危機時,巴菲特虧了 15%,西蒙斯賺了 80%。他的操作哲學是透過電腦的大規模快速運算,尋找金融市場裡,在特定情況下,稍縱即逝的高勝率交易機會。這家公司裡有超過 70 位擁有數學、物理學與統計學博士學位的量化專家,他們每天做的工作就是建構模型、測試模型及尋找可以在市場中賺到錢的交易策略。
類似文藝復興這類透過量化決策過程來進行投資的機構,這十多年來,愈來愈多。《機構投資者》旗下出版物《阿爾法》公佈的「2016 年全球收入最高的對沖基金經理」排行榜,前 10 位收入最高的對沖基金經理中,有 8 位被歸為量化基金經理。根據統計,2016 年量化基金佔美國股市的成交量已達到 27%,直逼個人投資者 29%的比重,這個數字在 2013 年僅有 14%。2017 年第一季量化基金規模是 9320 億美金,這數字在 2009 年是 4080 億美金,更重要的是,在第一季所有私募基金的規模比前一季增加了 56 億美金,其中投到量化基金的就佔了 49 億。從這些數據可以發現,在人工智慧迅速發展後,透過程式自動交易的量化交易,是未來市場主流。
台灣自從期交所從 2011 年開放 API 下單之後,程式交易終於合法化;2015 年秋天,台灣證券交易所也開放了 API 下單,允許投資人在經過電腦運算後,所產生的交易指令,把單子自動下到券商去。2015 年是台灣證券市場程式交易元年。
台大資工系林守德教授曾經發表過一張投影片。
在這張投影片裡,林教授把人跟電腦間的互動分成三個階段,最早是電腦提供分析、人類決策,接下來是電腦提供選項讓人類挑選;最新的演變則是人類設計決策的程式,讓電腦自動作決策。人類設計決策的程式,在投資領域,就是程式交易,這一章,將介紹什麼是程式交易?程式交易的優點?以及從那裡開始學起。
什麼是程式交易
什麼是程式交易? 這個名詞的英文是由 program 及 trade 這兩個單字組合而成。英漢字典裡,program 的意思,中文可以翻譯成「節目單」,也就是一項一項按照原先排定的先後順序,一個節目一個節目的依序演出。
這就像看食譜作菜一樣,每個食譜都有三大元素:準備的食材+烹調的工具+烹調的順序→產出的食物。程式交易也有三大元素:輸入的資料+用來運算的電腦+運算的順序步驟。
這當中,運算的順序步驟就是所謂的程式(program),也是這本書裡,要學會的知識——如何一個步驟,一個步驟,按步就班地透過電腦,把資料拿來運算後,產生決策,自動執行決策。
要做到這件事,有 2 大任務要去完成:
1 學會電腦看得懂的指令。
2 用這些指令,來安排步驟。(未完)
CH 1 程式交易簡介
全球首富巴菲特應該是大家心目中的神,但這二十年來,有一位老兄績效比他好,這位老兄的名字叫西蒙斯(James Simons),是個差點就拿到諾貝爾獎的數學家。他成立了一家叫文藝復興科技的公司,管理一個叫大獎章的避險基金,這個基金從 1989 年以來,年化報酬率是 34%(巴菲特是 20%),2008 年次貸危機時,巴菲特虧了 15%,西蒙斯賺了 80%。他的操作哲學是透過電腦的大規模快速運算,尋找金融市場裡,在特定情況下,稍縱即逝的高勝率交易機會。這家公司裡有超過 70 位擁有數學、物理學與統計學博士學位的量化專家,他們...
作者序
楔│子 人生的第二個薪水袋
在工廠擔任資訊主管的阿德,一早醒來,邊看朱芳君播報的非凡晨間新聞,邊幫老婆及小孩準備早餐,順便了解一下昨天晚上歐美市場,有沒有出現什麼非經濟因素造成的重大變數,趁著小孩吃早餐的時候,阿德花了兩分鐘,檢查一下自己電腦裡的自動程式交易系統運作是否正常,然後就開車送老婆及小孩上班上學去了。
到了公司,趁著上班前,透過手機的 app,阿德監控電腦自動交易的運作情況,看到一切正常的燈號,就安心上工了。
中午休息的時候,阿德透過手機 app,了解今天程式幫他執行了哪些交易,哪些獲利了結?哪些停損出場?又新買了哪些股票?合計到中午為止,電腦幫他賺了多少錢?
下班回家後,陪小朋友寫完功課之後,打開電腦,查看選股程式挑出的新標的,阿德一檔一檔地用個股多空儀表板,挑出最近有不同策略,都相繼出現買進訊號的股票,他把這些股票放進觀察名單裡。
另外,程式也通知阿德應該要調整在台股的持股水位。這是阿德寫的一個台股多空判斷程式,這個程式會即時運算各種大盤相關數據,然後根據阿德給的演算邏輯,計算台股的持股比例。
睡覺前,阿德再次檢查一下美股的自動交易策略執行的情況,並且設好停損及停利的單子,結束人跟電腦合作無間的一天。
到了週末,約了幾個程式交易圈的同好聚會,有朋友分享了最近財經雜誌發表的交易策略,回家後,馬上把這個策略寫成程式碼,並且回測過去十年,依這樣的策略是否真的可以賺錢?回測的結果很不錯,阿德立馬把這個策略放進模擬交易中,讓電腦模擬下單一陣子,看看成效,再決定是否拿來進行實戰交易。
阿德靠著自己會設計交易程式,讓電腦在他上班的時候,也為他試著從市場行情的變化中,賺到第二份薪水。
有人調查後發現國人心目中理想的退休金額是 1700 萬元,如果退休前要存到這個數字,假設是 65 歲退休,那每個月需要存到2.3 萬元,這個數字,對大部份的年輕人,都是不能承受之重,於是有的人兼差,有的人作直銷,有的人開始學投資,希望找到可以錢賺錢的現代聚寶盆,特別是那些會寫程式的理組同學,開始有人學程式交易,想要靠程式賺到人生的第一桶金。
這本書的目的,是希望不管會不會寫程式,透過這本書的介紹,可以學會用程式語言,建構一個自動化的投資機制,讓不管在哪一個行業,除了本業之外,都可以創造另一筆穩定的,由電腦自動執行的投資收益。
楔│子 人生的第二個薪水袋
在工廠擔任資訊主管的阿德,一早醒來,邊看朱芳君播報的非凡晨間新聞,邊幫老婆及小孩準備早餐,順便了解一下昨天晚上歐美市場,有沒有出現什麼非經濟因素造成的重大變數,趁著小孩吃早餐的時候,阿德花了兩分鐘,檢查一下自己電腦裡的自動程式交易系統運作是否正常,然後就開車送老婆及小孩上班上學去了。
到了公司,趁著上班前,透過手機的 app,阿德監控電腦自動交易的運作情況,看到一切正常的燈號,就安心上工了。
中午休息的時候,阿德透過手機 app,了解今天程式幫他執行了哪些交易,哪些獲利了結?哪...
目錄
楔子│人生的第二個薪水袋 008
【基礎篇】
chapter1 程式交易簡介
014 什麼是程式交易
015 程式交易的演化過程
017 為何要選擇用程式來交易
019 如何選擇要學習的程式語言
chapter2 語法的基本要素
027 寫第一支程式
034 敘述與腳本
037 編譯
039 回傳值及時序的表達方式
050 運算子
053 腳本的其他元素
chapter3 程式的輸出功能
060 自訂指標
066 觸發訊號通知
070 Print
chapter4 準備待運算的數據
078 變數
087 參數
091 GetField
094 GetQuote
chapter5 函數
099 什麼是函數
101 內建函數
102 自訂函數
109 中文函數
chapter6 流程控制
113 流程圖
119 單敘述的選擇結構(If...... Then)
122 多敘述的選擇結構(Begin...... End)
128 選擇結構之多種選擇 Switch...... Case
131 迴圈
chapter7 腳本的撰寫流程
139 腳本的撰寫流程
143 勘誤
chapter8 回測
146 回測的設定
149 回測的報表
152 回測後的腳本修訂
【進階篇】
chapter9 時序的控制
158 K棒的讀取
162 自訂指標
163 策略雷達
166 選股
167 頻率的語法
170 時間與日期的語法
174 時序常用內建函數
chapter10 常用的函數
183 邏輯函數
186 數學函數
191 統計函數
200 技術分析函數
209 型態相關函數
chapter11 進階語法
218 跨商品
221 跨頻率
226 跨頻率的常用函數
231 陣列
【實戰篇】
chapter12 大盤分析
241 大盤分析可以使用的欄位
257 大盤多空判斷標準
260 大盤儀表板
265 大盤多空對策分數
269 大盤策略的函數化
chapter13 選股機器人
274 選股欄位
293 資料的更新
299 選股結果的輸出與驗證
301 程式的的除錯與數據導出
305 自訂選股排行條件
chapter14 自訂指標與進出場點
312 自訂指標是交易策略的起點
315 自訂指標轉換成交易策略的方法
321 從股性出發的自訂指標
328 打造個股的儀表板
chapter15 程式交易的完整流程
338 交易決策的四大步驟
343 程式自動下單
348 打造自動化的投資決策流程
chapter16 交易策略靈感的來源
359 尋找大漲大跌股票的共同特徵
360 從國內外交易高手的書籍,文章中找靈感
362 從系統內建的交易策略中,修改成自己的聖杯
363 從回測、模擬交易及實戰中,修正交易策略
chapter17 後語
364 程式交易學習三部曲
365 一顆不怕虧錢又不孤注一擲的心
366 球投到最有把握的那一個地方才揮棒
367 尋找市場上那些非隨機發生的現象
附錄
369 1 函數宣告資料格式
379 2 勘誤常見的語法錯誤
385 3 回測中逐筆洗價的定義說明
387 4 時間及日期相關函數
397 5 常用的數學函數
401 6 大盤相關欄位
409 7 財務比率計算公式
411 8 大盤儀表板腳本
楔子│人生的第二個薪水袋 008
【基礎篇】
chapter1 程式交易簡介
014 什麼是程式交易
015 程式交易的演化過程
017 為何要選擇用程式來交易
019 如何選擇要學習的程式語言
chapter2 語法的基本要素
027 寫第一支程式
034 敘述與腳本
037 編譯
039 回傳值及時序的表達方式
050 運算子
053 腳本的其他元素
chapter3 程式的輸出功能
060 自訂指標
066 觸發訊號通知
070 Print
chapter4 準備待運算的數據
078 變數
087 參數
091 GetField
094 GetQuote
chapter5 函數
099 什麼是函數
101 內建函數
102 自訂函數
...