如何開始用 Python 程式交易?-Python 從零開始(一)

本系列會從 Python 基本的語法開始介紹,讓沒有程式背景的新手,也能開始用 Python 程式交易。如果你是進階的交易者,可以點擊連結觀看量化通其他 Python 進階文章,認識 爬蟲實用套件資產配置 等內容。

建議可以照順序閱讀,從零開始學習 Python:

近年來最熱門的程式語言-Python

Python 是近年來相當熱門的程式語言,在各個領域甚至職場裡,幾乎成為新鮮人技能的標配。除了免費開源、語法簡單好理解,在這幾年 Python 的生態系資源也越來越成熟完整,當大家的討論度越來越高,自己遇到問題也容易找到方法解決。

甚至所有新手基本的功能,Python 都有套件支援,像是 pandas、datetime、numpy 等。除此之外 Python 可以跨平台使用、容易擴充、自由度高等優勢,都是這幾年排名不斷上升的原因。

延伸閱讀:
最齊全的 Python 技術指標工具箱 talib (一)套件安裝與基本操作說明
最齊全的 Python 技術指標工具箱 talib (二):閱讀套件說明文件的邏輯就這麼簡單

Hellogithub 程式語言走勢圖
Hellogithub 程式語言走勢圖(https://hellogithub.com/report/tiobe/
Hellogithub 前五大程式語言(來源:Hellogithub )

Python 常見的金融投資用途

Python 可以說是學習程式最好入門的語言之一,也是數據分析及爬蟲的主流程式語言。 除了在金融領域上,在其他領域的應用範圍也很廣泛,以下跟大家介紹四個 Python 在金融投資常見的用途。

1. 網路爬蟲-爬取股價

爬取股價是 Python 在程式交易其中一個強大的功能,個股的相關資訊每日都會在證交所公布,透過爬蟲相關資訊就可以進行數據分析,甚至制定出自己的選股策略和模型。

Python 的 requests 與 BeautifulSoup 是目前最常作為網路爬蟲實作的套件。使用爬蟲即是讓程式幫我們去瀏覽各個網站,能自動化獲取指定的資料,例如:企業財報資料、社群訊息、網路小說等。再利用串接資料庫的套件,像是 pymongo,就能輕易地把爬蟲獲取的資料放到資料庫,以備後續大數據分析時取用。

延伸閱讀:
實作你的選股利器 – 找出業績好轉的盤整股
實作你的選股利器 – 找出低本益比的營收成長股

2. 數據分析-歷史回測

Python 的程式碼可以相當簡單地就與資料庫互動,並擁有 pandas、numpy 等強大的資料處理套件,以及 plotly 等視覺化套件、tensorflow 等機器學習套件,使得 Python 在大數據分析佔有相當的地位。透過大數據分析,能夠做到使用者偏好推薦、輿情分析等。

而「回測」 指的是將投資策略透過歷史資料驗證,模擬在過去的時間中實際交,確認這個投資策略在過往的歷史數據中所能獲得的績效。透過分析爬蟲來的數據,我們可以更精準的找到穩定的獲利機會。

延伸閱讀:
市售回測軟體與自己開發的差異
進行回測常被提到的套件們

3. 投資研究-策略開發

Python 除了上述套件以外,也具備 statsmodel 等統計套件,與 R 語言同樣都是金融業的程式語言。應用領域包括量化模型設計、全自動程式交易、資產定價、風險控制等。

4. 資料整理-資產配置

Python 可以快速蒐集、整理、分析資產配置相關資料,「 資產配置 」指的是一種投資方式,主要的做法是把錢分配到不同商品上,借此分散投資的風險。透過 Python 能讓我們所設計的資產配置模組依照事先制定好的規則自動配比。

延伸閱讀:
資產配置理財入門大補包(一) – 資產配置是什麼?用 Python 做資產配置不可不知的兩大好處!

開始學習 Python -從 IDE 出發

IDE,或者稱為整合開發環境。軟體商幫你把 Python 功能整合在一起,可以幫助使用者 debug、儲存指令、執行功能等。簡言之,就是讓使用者可以更簡單又便利的寫程式 。

Python 的 IDE 有很多種,比較常見的包括: Spyder、Jupyter、PyCharm、vs code 等。當然 Python 也有屬於內建的 IDE,每家 IDE 都有自己的特色與功能,這邊可以參考閱讀量化通 Eric 之前寫的 PyCharm 環境安裝全方位解說,就不多做介紹囉!

認識 Python 常用名詞

以下簡單整理常用的Python常用名詞,讓大家能初步有個概念:

常用名詞說明範例
print輸出,檢視程式運行的結果,也稱為印出。print("Hello Python")
註解紀錄用的筆記,電腦不會讀取到,可以針對所撰寫的程式去說明用途。#單行註解
"多行註解
多行註解"
縮排Python 使用縮排(Tab 鍵)來表示這是同一個區塊的程式碼。a=10
If a>5 :
  print("Yes")
SyntaxError程式語法的錯誤提醒常見的錯誤像是少打一個括弧、打錯程式等
變數幫資料取一個代稱,使用「=」來表示兩邊是相同的內容。a = 123
b = 6.66
c = "567"
資料型態基本的資料分類可以大略分為文字、數字、布林值和裝「文字」、「數字」的容器。a = 123
b = "我是文字"
c = True
d =[123,"文字"]
基本運算式資料的數學運算a = 10
b = 5
print(a + b)
結果 >>>15
關係運算式數值資料的大小比較a = 10
b = 5
print(a > b)
結果 >>>True
邏輯運算式資料之間的邏輯關係,包含 and(且)、or(或)、not(否)等。a = 10
b = 5
print(a > b)
結果 >>>True
布林值判斷條件是否符合,提供True(是/對)或 False(否/錯)的回覆。a = 10
b = 5
print(a > b)
結果:>>>True
input由使用者輸入資料給程式Name = input("請輸入您的大名")
pip安裝外部工具套件。pip install pandas
import安裝內部程式模組。import pandas as pd
迴圈讓程式重複的執行指令直到條件滿足,分成 for 跟 While 兩種形式的迴圈。a=[123,666]
for i in a:
  print(a)
結果 >>>123,666
函式
Python分為內建函式和自訂函式a=[1,2,3]
print(max(a))
結果 >>>3

延伸閱讀:


量化通粉絲社群,一起討論程式交易!

加入LINE匿名群組量化通QuantPass」無壓力討論與分享!

追蹤量化通的粉絲專頁量化通QuantPass」即時獲取實用的資源!

python_course_all_1920X400

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *