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.4-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 07c05678a14fa6f83f5c8749dbfd4cee8e8c82905ea43ed99424c6350895ac8c |
|
MD5 | 7dce6eba75f5e28559a5d3aebf47e484 |
|
BLAKE2b-256 | 1a096e9609a33b44da71fd96845ee11a51f22d603cd92062a250291c2db4a8b6 |
Hashes for finlab-0.5.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a92766b9fac7f61729b0e90f180a91eb2bcdd4f17c764e42c672c7e019a64154 |
|
MD5 | ea9468e3bbf2fb1d6f61d51dbd2881ca |
|
BLAKE2b-256 | c5136fd79eb270587dbe894d307fcab5ff4714bbb4e27d561237658f744f5726 |
Hashes for finlab-0.5.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 382142af8da85686c895ebd31510c685755fa6df7c5f652f5705ae0bd5fcfaf1 |
|
MD5 | 1cc456ea0b5e1042a7c84e2e095dc426 |
|
BLAKE2b-256 | 198051d1e243f7261b5fac78b36f3e88ea6845af4c69ece863925259ca864b12 |
Hashes for finlab-0.5.4-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7b2ec027b148d5ef21ea27c88ed297c50d9646957432049febdc95488445688e |
|
MD5 | b0321e3e79329f8dbf634115fe812ff2 |
|
BLAKE2b-256 | 6a3a503aa4d5b9b79b5ea68d2820ab60875f268ceb575b1c6fbc92e092a7bae7 |
Hashes for finlab-0.5.4-cp311-cp311-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8fa3b0cbfb367576fda14f41e872eaac069fa101b7b7209a35de81651acca102 |
|
MD5 | ead914eb15538befa24cc2d62fbb9370 |
|
BLAKE2b-256 | 73e343aeb8f7b163ea4c74cba259cca4a781ab85add636ae12edec6228e8a49c |
Hashes for finlab-0.5.4-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | caf9c6c87732387e89d9f3b5aa171812e7d595d00bf65fdf6b9eded45c926854 |
|
MD5 | 7e733610caecd77fc1dd3742890e2ecb |
|
BLAKE2b-256 | ec97892ef485d006e7a2bbc69d0d668f64f039d116acd81ccfbf87193b44e30b |
Hashes for finlab-0.5.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aed392fa67dea5c415d1cb44105b33140c397143a79aacbad21f2a4556a66348 |
|
MD5 | 3c575e20ab0ef40fe61bda36c88674c9 |
|
BLAKE2b-256 | c0bf1e950b7d9d32777be5b7ddadc60e34d0c99109f477a5865f5a88db465895 |
Hashes for finlab-0.5.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | be6b9731d99253735968e8f04aa45ab32b8e81545a7a86f80b31a55d7549081a |
|
MD5 | f745579ba9bf1e0bb2bbb6578a57e1f0 |
|
BLAKE2b-256 | 9fd966fa93ffead73a139bcdcdda0e4834676a6fc89cf14d2dbcfc25bea44f7b |
Hashes for finlab-0.5.4-cp310-cp310-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe23a0408f756a92ad115ee99afd8773178484ba0892511924cdfe9ca89bcb56 |
|
MD5 | e2b6f9f35c80085cf18e612748c90c29 |
|
BLAKE2b-256 | 417f3632dd87e3be3bff062ceff4ea4ec6904891f7c7c9e69728728a1708c5e5 |
Hashes for finlab-0.5.4-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8644d963e86a8f7be886bb8fb8278b579590ef215d04bbbfa4ba1c33ba5103dd |
|
MD5 | ea43898c3285f535c313b8c4ea7c5726 |
|
BLAKE2b-256 | c73beda3feaa8d56ef9e46b5bec3dc17391bc87ebd7df14c1653b3e8a84bfd17 |
Hashes for finlab-0.5.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6372a4266383b3415a5d86f3ad2112080667ba14e18c5e5a847b12c45abea529 |
|
MD5 | 048849f4e7168b2e7aee61b85c1b29be |
|
BLAKE2b-256 | 7625bc511d6b082f2314fe42da1afc56da82630d2c5ae895723f3f44081206a5 |
Hashes for finlab-0.5.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1518ea5f05f3ad3cf402848f30c93e08afa1cd23fa8262a85092389f00685f5b |
|
MD5 | 2018e508c2cc6af16cdc88b62b30ac2e |
|
BLAKE2b-256 | 59bfdabd09add40c65edbe5ccde425be4e24b401b81cd6fe588a74c47d28312c |
Hashes for finlab-0.5.4-cp39-cp39-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7bffadae3de1e6585fef0eef771a0a43369410f2eeac8413359492aa49cb7983 |
|
MD5 | 19326c5cf282a364bc37e46d034c7720 |
|
BLAKE2b-256 | b350f2ac9bac9fc9960e5c88ecb46c8202945cf690c43976853c9e50d257aa2d |
Hashes for finlab-0.5.4-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 13c66e617b96f36be0fdac0b8da63f7ad0e97233e55f4912bf4bd1fc529559b4 |
|
MD5 | 2216b3511d23469e1ead3d9118a33ea7 |
|
BLAKE2b-256 | 8167751cfb645763086c5ac1de3d40c79d9b2996a8b8419feb1c3111ba77fef9 |
Hashes for finlab-0.5.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c15578e381632a96fb82c84acc80ef0470ba80328570049e61f61a317ec2fcae |
|
MD5 | 00e4cfc0e3cf863c713780be1733a2c6 |
|
BLAKE2b-256 | 0b355572d1959f0279b8035541f9f2f6c9acf6f80db4335f294e26eb863c6e51 |
Hashes for finlab-0.5.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 351cf659d31a6cbc6b0c403dd9aa9c78afd1f283ffc385e6df05a13217adb856 |
|
MD5 | 760edc35e953f01eafc2e0efcd55d6a7 |
|
BLAKE2b-256 | 8a52f38e6332d12cd4c29c467cc4f7ddf76885cd8c1164dc5a4bcca9f1824eec |
Hashes for finlab-0.5.4-cp38-cp38-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 307e98e94c9f543d75edb8b45b398f74cbd0f30dcb05b99f39d409be8c8c1ad6 |
|
MD5 | 8ac4630a8dce6cf3c6e70aaa0389f2a9 |
|
BLAKE2b-256 | b68a1e25adc5b195e661e5b4d2dd55551769f773db5415f7da43477f210782d3 |
Hashes for finlab-0.5.4-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8edbfb71261a3cea27b49dd0962923b0598cd02f9f0ddbf5647adbd8bf8e83dd |
|
MD5 | 0709b31f8b49e39674db7599a6fcac9f |
|
BLAKE2b-256 | 37e35441290f30f0b5e8f441080481324a75a31e030bca3d593f5c7d39c027c0 |
Hashes for finlab-0.5.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 318685ef432efb51f039ff213a6e02974abe5176a8146e6aecc5928123591912 |
|
MD5 | 892cfc1aae36942306b3a97777d9f935 |
|
BLAKE2b-256 | c835456d06022b5e0b1103adfca77fd52e133d5f7ece489867b7074eb41ae9b6 |
Hashes for finlab-0.5.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9b73fec06feaca6281a0280cb1ff9bc1e2ce6988fbe94ecb9c04bc133c208db0 |
|
MD5 | 2cfd80ca260b743d7658a7549d607d84 |
|
BLAKE2b-256 | 6422b64a4f96bbfcc32354717610f90643d948372e326805c45d80d91ee1d6d2 |
Hashes for finlab-0.5.4-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 078107af155d7eff0b88f2408f6ad3ff917688b6025c00085ffd6c8d79c913b3 |
|
MD5 | b771eb6af86a2d40c7224fb2018f5379 |
|
BLAKE2b-256 | 7383908ab5dde1cb894a055c7ce5e67cdb77c8c5fb28859aa964a305373c6d7a |
Hashes for finlab-0.5.4-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 459371b1a041160d0282ffa0aea756247d3aa45f9fb67853778115bff493e010 |
|
MD5 | 1183a10df4aaef627d21afc7aa572579 |
|
BLAKE2b-256 | 2958160c863532fe96053a5534b8745d25178b984064e21754592cb65b48435e |
Hashes for finlab-0.5.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 759a55cf2fd694409bf8b72a7006ab383f93d73fcd27ab18226a00a450724598 |
|
MD5 | 48570c621e4f536c7b828c3bd8651405 |
|
BLAKE2b-256 | 86c978f7ca5f3f6513fe9c7d469810f42d711e44bfcd4ad738920a5e17e491ec |
Hashes for finlab-0.5.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7d7d9ddd0d1be3e7efd5a4723cb49a44cebf570b79b327a80e06f18cd49a88ef |
|
MD5 | 3666ef22ba776b30052f3eb4849d8dd1 |
|
BLAKE2b-256 | 57850f56cc7271dc63aa03d4d6bb5b1c9b87b0e4a8c1bbf5f5bb8b7d6f207b98 |
Hashes for finlab-0.5.4-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b93c786b114a6b31dccb9c6784c8258e8745ff961976dc70aeaa74dc53ef422f |
|
MD5 | 085c740c97d9ce2842dfa2bccd52b9cd |
|
BLAKE2b-256 | caf7f3aaddf0897ab49dee8713f48bb51e4db503c35016c8a60af52f708f8441 |