Analyzing stock has never been easier.
Project description
hide:
- navigation
快速上手
安裝
在任意平台上,皆可安裝 FinLab Package,我們支援 Windows、MacOS、Linux,並且甚至是 Pyodide! 以新手來說,推薦的使用方式是直接在 Google Colab,來使用。 Google Colab 可以線上產生一個執行 Python 的環境,使用者不需額外在本機安裝任何程式,即可開始使用。
=== ":octicons-code-16: FinLab 實驗室"
打開選股策略頁面 https://ai.finlab.tw/strategies 並點選「建立策略」即可開始使用。
=== ":octicons-code-16: Google Colab" ``` py # 打開 Colab: https://colab.research.google.com/ 新增筆記本 # 在 Colab 中任意 Cell 中執行
!pip install finlab > log.txt
# 即可
```
=== ":octicons-code-16: 本機 Python" ``` py # 在 anacnoda prompt 中執行
pip install finlab
```
!!! tip annotate "可能存在相容性問題"
用「pip install finlab」方法安裝,可能會造成 Package 不相容的問題,假如您希望得到更穩定的版本,請參考「Docker」安裝。
=== ":octicons-code-16: Docker 安裝"
* 前往 Docker 官方網站:https://www.docker.com/products/docker-desktop。
* 在下載頁面中,按一下「Download Docker Desktop」按鈕。
* 完成下載後,執行安裝程式並按照提示進行安裝。
### 2. 下載 FinLab 的 Jupyter 映像檔
在安裝 Docker 完成後,請按照以下步驟從 Docker Hub 下載 FinLab 的 Jupyter 映像檔:
開啟終端機或命令提示字元。
輸入以下命令以下載 FinLab 的 Jupyter 映像檔:
```bash
docker pull finlab/jupyter-finlab
```
此命令將會從 Docker Hub 下載映像檔,請耐心等待下載完成。
### 3. 執行映像檔並連接到 8888:8888 的 IP 位址
下載完成後,您可以使用以下命令執行映像檔:
```bash
docker run -p 8888:8888 finlab/jupyter-finlab
```
此命令將會啟動一個容器並將容器內部的 8888 埠口映射到您的本機 8888 埠口。請耐心等待容器啟動完成,終端機中將會顯示一個 URL,例如:
```bash
http://127.0.0.1:8888/?token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
```
請複製該 URL,稍後您將使用它來連接到 JupyterLab。
### 4. 使用 JupyterLab 和 FinLab 套件
現在您已經成功啟動了 JupyterLab,請按照以下步驟進一步使用 JupyterLab 和 FinLab 套件:
在瀏覽器中打開剛剛複製的 URL。這將會顯示 JupyterLab 的介面。
在 JupyterLab 的介面中,您可以創建新的 Jupyter Notebook 。
在 Notebook 中,您可以使用 FinLab 提供的功能和套件。FinLab 是一個針對金融數據分析和策略回測的 Python 套件,詳細的使用方法請參考 FinLab 的官方文件。
</div>
下載資料
輸入以下程式碼,即可下載資料。可以查詢有哪些歷史資料可以下載。
from finlab import data
data.get('price:收盤價')
date | 0015 | 0050 | 0051 | 0052 | 0053 |
---|---|---|---|---|---|
2007-04-23 | 9.54 | 57.85 | 32.83 | 38.4 | nan |
2007-04-24 | 9.54 | 58.1 | 32.99 | 38.65 | nan |
2007-04-25 | 9.52 | 57.6 | 32.8 | 38.59 | nan |
2007-04-26 | 9.59 | 57.7 | 32.8 | 38.6 | nan |
2007-04-27 | 9.55 | 57.5 | 32.72 | 38.4 | nan |
撰寫策略
可以用非常簡單的 Pandas
語法來撰寫策略邏輯,以創新高的策略來說,可以用以下的寫法:
from finlab import data
close = data.get('price:收盤價')
# 創三百個交易日新高
position = close >= close.rolling(300).max()
position
date | 0015 | 0050 | 0051 | 0052 | 0053 |
---|---|---|---|---|---|
2007-04-23 00:00:00 | False | False | False | False | False |
2007-04-24 00:00:00 | False | False | False | False | False |
2007-04-25 00:00:00 | False | False | False | False | False |
2007-04-26 00:00:00 | False | False | False | True | False |
2007-04-27 00:00:00 | False | False | False | False | False |
這邊的 position
是一個 False/True 的查詢表,當數值為 True ,代表該股票在當天有創新高,而數字 False 則代表沒有創新高。由於創新高的股票很少,上面的範例中,只有少數股票的數值會是 True。
假設我們希望每個月底,搜尋上表中數值為 True 的股票並且買入持有一個月,可以用以下的語法:
回測績效
from finlab import backtest
report = backtest.sim(position, resample='M')
report.display()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for finlab-0.5.0-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 057ce15837e69674c09d95b8e5ed3d6d149c048386bf170bf23bd582852c0859 |
|
MD5 | 8a240771b0c31ccca6f672d47a09df56 |
|
BLAKE2b-256 | 801b495a9d2d11ce9a0a9b4fe6d18c4e157c823dfce16d5a197170282f0f4b92 |
Hashes for finlab-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e148272a78861c20b66019685abf37de833a64a01ce37a658d573582bb7211eb |
|
MD5 | 3e6a7b0fb0523900361fd8ec5343aa85 |
|
BLAKE2b-256 | 0dda810213ec081f987eb85ad80b37e80bdaf462482c659e8aefb068c5b1be27 |
Hashes for finlab-0.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 83c3ad2ec37da748e35c6db7598f1933ddf9751931bc044ab4a6068871d70d30 |
|
MD5 | 55e7ce2ba9cede1b622ab09ae81cb38e |
|
BLAKE2b-256 | 0018ea410d7225044f4f1393729ab3e4392b2b71092126dc780146c22ad227da |
Hashes for finlab-0.5.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 694469e25789fdd82609669757ad0dca7477984d0e6f6ed8d96da434a003c730 |
|
MD5 | f398bb56db735a0491e6edf4210f375c |
|
BLAKE2b-256 | 84ab02978c0e3d91d5f60b350478208d39ff3b15053b2b3354cdd32368c57cd2 |
Hashes for finlab-0.5.0-cp311-cp311-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eee5dece220ba656026a72ef58a5b15c5e9d50cd7bbef470651c75ddececb1a7 |
|
MD5 | b0b4f60f3f29e4e2a92f31d9a5357461 |
|
BLAKE2b-256 | 29ebad94cb4d86b43f66f754705830d4e9ca6a3a7c9d6321548f7624c2437090 |
Hashes for finlab-0.5.0-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba6e24b9feefa2a514ceb267fb0231a4bb2a442dd0b01114b4ae2fa99236ff1e |
|
MD5 | 38bd90dbb87501c680bb24b993f248ca |
|
BLAKE2b-256 | fc59d27b07ce60675836eff1737adf2a842fbc35379d3da59957bc4dfe418f22 |
Hashes for finlab-0.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c9c3817ee640c49e6c366542da96c101e3092a16a2ac2a5f85c1d7a3a7bb371f |
|
MD5 | 0fcdfb271c982db7b2a756e976dfe496 |
|
BLAKE2b-256 | 70ef2197f6ae9d2af72512c165c90129e949021131641a098e289e1dd6c85b5b |
Hashes for finlab-0.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f802b8f9a1e611a9e8009165fbd87d4d3b51e16231fc027ca33708bbe037e4f1 |
|
MD5 | c6d856e7f1fa4293557c8416443b8fbc |
|
BLAKE2b-256 | 48c06cb9acc7733a2f4c81e2c6ac4a00d34124477e1ee695a70be22868f19f75 |
Hashes for finlab-0.5.0-cp310-cp310-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d1c9b4c4969c137251ea84bc74bd7c12160563fa0ff02334e739314c614ff210 |
|
MD5 | e81bb4207e3e8af40ee7fa139ea7c062 |
|
BLAKE2b-256 | 0a75cf16240a18100314d3841a3ddfd035bb8df2b03db67794ad9078ec1c7c1d |
Hashes for finlab-0.5.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 62c125a69c8f55aef872bdae9857dc4953b815439dc1a06b341034746e47ff7d |
|
MD5 | 8e21aac324c9b4c2e6263bf41bb21c68 |
|
BLAKE2b-256 | 4c9cc821a0f0044b88e75da015f7578f577b1d7d292e963d986dba8641560582 |
Hashes for finlab-0.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 508b5e1ad859f7c47dacaedd01b1e23519c67fce3b7117d1f5269a51a78e4004 |
|
MD5 | abb5b4e245a3bd9536466144ef1c8463 |
|
BLAKE2b-256 | f91b82acf3bbbce3483677a38f2427a270df1b902525f76070c1b6dd24df9e35 |
Hashes for finlab-0.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 96f5513e6fde0c3a65b9eb010c8e6ec49f10263f50e355df59b6988524c3da3d |
|
MD5 | a9204636f38424bb66f3bf4b0867fcbf |
|
BLAKE2b-256 | fbf6ee13f2443e69ffbfe4d49da9c9574f4ca49fd118695cf0ccfa8ec410c379 |
Hashes for finlab-0.5.0-cp39-cp39-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3b9a0cb6a50f05ba021882b2491541292e108cf43174ac2680b4f917fadb33c6 |
|
MD5 | b9949ababf94bd7e3e4f174c518cad00 |
|
BLAKE2b-256 | 001e92cd7c948244cef56c0f9c19497a884d3990b570ef81e5391073e9c37ed1 |
Hashes for finlab-0.5.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 078331cc9ac485798d011291ffba2bc2884bfbe0a0f0c8c42a60492d454557e9 |
|
MD5 | 3920e636a424059a50775de3c5944f07 |
|
BLAKE2b-256 | b2b3a8c3fc7c25f2e7602260f5631be70891a93f465df40ad29441bba6dd1335 |
Hashes for finlab-0.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 52f1c2c0f6ae969ff73c76102ee0f09993c872d832176e03547dd0cfe4300469 |
|
MD5 | ceea5d5519e5068629bc52628db38b64 |
|
BLAKE2b-256 | cd5c88421a827843d852f8c8bac7a73e90b695dadacc0f3743a5bec67ddd78a8 |
Hashes for finlab-0.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eb296857d0ea20b83a47d445481df991a1b3eb1b5acadf4d9e2b738fd797fa0a |
|
MD5 | 2146377162ec01586077743889b6b04c |
|
BLAKE2b-256 | 941e103624adb8e4871b88e6be12649bbdc0acc9e4784e27ceb4327372fceea4 |
Hashes for finlab-0.5.0-cp38-cp38-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6bbf824b53557ccc5dc275014d2cb47f7bdf15f49b0e54d103805901fc8ca6b1 |
|
MD5 | 54ed7344b270a0c9c41ccec38d3f3217 |
|
BLAKE2b-256 | 350048ef5578c867fedb33c57a352ae3ffd2fd967930514da68d2a6d1ae00e2b |
Hashes for finlab-0.5.0-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9feef3ab4f53d2e372db9862323d08b381e97310859276343a72bfa764245a91 |
|
MD5 | 9f0b1cce5d30f98bead369b4de37c1d3 |
|
BLAKE2b-256 | f556bce667a63c75fa3699d6bef350950a4cdbcef739ce40bc4446a9d955af4d |
Hashes for finlab-0.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1428ffc4168d37e89e5697e9e731b887ed3f7aa4a8b1e1cf1da51e5bef3051da |
|
MD5 | 64acd53a44ebe3e2be8ed1fa56cca766 |
|
BLAKE2b-256 | ccae6d161244c331ef69529bcf1c261fa105c54ad332a8c40a0b3f532f69ae88 |
Hashes for finlab-0.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d8f69a40d441b35f4e87b6712626a6fb3306be489fa0a8de0d725fd66c50c683 |
|
MD5 | 63dbcbbb8f0aab91f523e9c8a6a3a242 |
|
BLAKE2b-256 | 32011b813fa9dc66f8547cd8b86fe3cee1459e5ba313f9cd4e55eb1e4447b3a2 |
Hashes for finlab-0.5.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4ec976a2dd63cce806fd4627acaf41de80a0084bea7c36bcaa6bdb26bc08f29c |
|
MD5 | 54d751813412430b01f8869ff0971870 |
|
BLAKE2b-256 | 198adc82bcb7a65a19e709af73aa34da496fc8c2a266e7e9b285e087df2d5273 |
Hashes for finlab-0.5.0-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a5de9e0f0a2e5e262dc5ddf19cc316b4c3e5b36898e95252f4f7b6f69c8e9d1d |
|
MD5 | 6067d4212e63bd75447265c98f1c298d |
|
BLAKE2b-256 | a6c867e1c23fc3f395d29f6467225304a8272f4477af839a07f9c7f7a4156658 |
Hashes for finlab-0.5.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8466b71394f8a4136ab9e7116d1f0072aa7fac58bcc0807fa7f142ce3af038db |
|
MD5 | 956e88f6661bcf73e99bd1afe0c76d57 |
|
BLAKE2b-256 | 984c697163d1e266ea2cae09afd2bc9ff2cf4e11e91a4275576085f5b701134b |
Hashes for finlab-0.5.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6c01bc6ab8e6a7eada41bf6b11623ec2e0a61bfbbe06e402a7109fcd632073dd |
|
MD5 | 66e915a8ad7722aa0d169f99f0c05205 |
|
BLAKE2b-256 | bc16371918366a8597de5bab0b1162591656d682f77ea94bfc8c0b0d25db1268 |
Hashes for finlab-0.5.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 673ac94fa4b1e94ff25b123796dfa860a7b3eb39e79dd26f6e7615f320fd18d5 |
|
MD5 | b835c86429b3bde33c0fbc782045260b |
|
BLAKE2b-256 | cab9c871fd831b42e5072418b028c0fd2dbb10c60bfa3c76450a26d6dd655fb1 |