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.7-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5075afb93e750cbf26f106cede6d86e412aeb1324ecc9e5c87dd54454f12f3f8 |
|
MD5 | 77c656a99921afcd4bff8e0d702b4d43 |
|
BLAKE2b-256 | ff4b35d9df2938a367e6e7f5a490f217673cc67f0e1f51aeb2164916ab2f0df0 |
Hashes for finlab-0.5.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a28c7688a8799ca7022e5f940c36ecb24f858d0ce9f3c55dae5e47541bbedab4 |
|
MD5 | bd6f6439eaf01875f80b56648d160b72 |
|
BLAKE2b-256 | 60b58ec2b7cf4a7c8f69f98836a9dbf1a91d38f431a69ffdf37259231ca2f4ec |
Hashes for finlab-0.5.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4545b908ff0800c9e2697ae1dfa43a6f0077d83d57e647202542db1dbd8cf8bf |
|
MD5 | 1845cd072179a187f002d6d586825598 |
|
BLAKE2b-256 | e06ef69ceb5ab9b51486975c7163c91442312f51453bbf23c941e572100904e4 |
Hashes for finlab-0.5.7-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a71484f2886ec156c91dd2d3b2856e49ebcccfef7daec34f7b336374cf5086a2 |
|
MD5 | d437d1ea2664127ad41f4fe8f42eaeb6 |
|
BLAKE2b-256 | d6805400d031793d234367d098bb8269e62b90c882db74d0c22f1e0ce34c6482 |
Hashes for finlab-0.5.7-cp311-cp311-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ce298f244229f7a7c9a94fa30260a9923de58c2107a10a0ab22d8b0879f89a13 |
|
MD5 | dc4afec1812d958bd4053bf59f0a5328 |
|
BLAKE2b-256 | 745e3481ac4588bada4d45f51e5a6215eecafc483de607d47328b072d7e5ce0e |
Hashes for finlab-0.5.7-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 50fb183a8e1b156e0e4795cbcfea64d7c1257f2d73be83318ff6e6516b99deff |
|
MD5 | 20a1d4d16a89a8e391afea09b6bc4680 |
|
BLAKE2b-256 | 6b353ac0f8bc8845c055ad8667f6fea043506597129a57017e266810e53920b6 |
Hashes for finlab-0.5.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6db2a3019a8e1999d1faac31a1727fea3db67e10f5fb66edb7c1d1c38fd93a5d |
|
MD5 | ee692f0a3b398a8d907b01d8ff675a8b |
|
BLAKE2b-256 | 938ece0a86b7bc34de44617369e6532335930ba5d260284322f5e8c2bd841549 |
Hashes for finlab-0.5.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1aeee8037736a36060342cc5e7aed088a29f02c7ed3dced683e3f8b2c4c47af5 |
|
MD5 | ff6fb16be43a60402fc027649d935efd |
|
BLAKE2b-256 | 695550cfb47cb85b822a9f3ca9aebff741f35d5f64fba52a8b107fa422f2a9b1 |
Hashes for finlab-0.5.7-cp310-cp310-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3cc16ac6e0df446e965f4c3e082b824bbb2bde2c32aa759706b6657f816cb4de |
|
MD5 | 464fb11afd4d4af85888e95e1bfe2b51 |
|
BLAKE2b-256 | 59c32e5a9045f4d9a0c31b241295bca3fca0ca3ad60ff15f1d0e05eebf1f0712 |
Hashes for finlab-0.5.7-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ac3031428acd8f6c893589e4c443868fe3e6dcd0d01895504f7896afd4f0a623 |
|
MD5 | ad6af9db5b0417060602dce1688014d4 |
|
BLAKE2b-256 | 25b4582c487b9f1c8688cb03e4f8d5b355c609627b8af9aa539b53ab03237558 |
Hashes for finlab-0.5.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | be15a4eeaa3ba78cf17282d28956f11de7b318a1eba3db32de2fceae3b0f6ae6 |
|
MD5 | 2985f08acbeac1666838410d41945770 |
|
BLAKE2b-256 | 4456b3df03d0d697817b75767a9e5b7d93003a3c74376382290afaae513e705d |
Hashes for finlab-0.5.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a201cd2c7d997f1e72e62d7dc4e84622dce1e99721a67f57e354d361e0a68ed8 |
|
MD5 | 351a620e07fa50a9f1c397a941774f44 |
|
BLAKE2b-256 | 2c6c877fc4971b75829550c330d3c0ce3a7b1ec70219063e7c3b0f6d74cc9031 |
Hashes for finlab-0.5.7-cp39-cp39-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 27fca87a27b2f95391f102ca161d68712ad5b26430f3118087c4f85267c05f60 |
|
MD5 | abc568c916b558adebb6a976cbb3c8cb |
|
BLAKE2b-256 | 1df75ae1a0e495c3fb3431198b1797ad06327f337182d6a37138c7e018a87780 |
Hashes for finlab-0.5.7-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0aa68db26fe1e769917de250ac9ad55749d3913de26eb3df5213521fea9ecd1 |
|
MD5 | 49ed00e7576cf3c9e3ff4e62387b71b3 |
|
BLAKE2b-256 | b73f70cd7d8d449a6516afedf29bed5e16ed66250dbd2fa399071a1ccd29eb40 |
Hashes for finlab-0.5.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e9beae23b07acdf6cf6da1b8dbe183cd8f43977adf9de76b079b22ba55fa6bd8 |
|
MD5 | a6eda3a1d7974b5c70a6271ed16c54e1 |
|
BLAKE2b-256 | 679d67ee1d4f3a85838dcdd8dbb44c0bcbf760140d72b6051f1c22d24f5457c5 |
Hashes for finlab-0.5.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8db0b50bc156d4fc8d07e984655cc7854d2f1fd0989c60f2444be419a8d1dd7f |
|
MD5 | 6bee72a9eeb7afd84983e2dca2f719f9 |
|
BLAKE2b-256 | 9c3dd03f7a1fc4a3c99304af4a15f475f22250da2ab855578bffeb6d85498fd6 |
Hashes for finlab-0.5.7-cp38-cp38-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 13d988f34d27fc42bf1501127f2b41e59a3cbde94ad4643526298e8ef2bf9279 |
|
MD5 | 98e8863d24bfdf8762c7b5bff6f518d6 |
|
BLAKE2b-256 | 930d2066a691a2f518ac9fe66cbbd344d947b9bc7c7864e32f119056881b64f0 |
Hashes for finlab-0.5.7-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ddea01ea29fb5d8037f5c2fc49fbb150d274a252d6cf68082727c66b5a614cf9 |
|
MD5 | a1998530df1f74408ee045bff6540fd3 |
|
BLAKE2b-256 | f2e5a4a7db93b187eaafc2e8d72f1ec7283976059132e6c1d981f66ffdec56e8 |
Hashes for finlab-0.5.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1adde6324a21b62aeac0ebf2c7c9cee7bf51055454fa08422cce1d944540d2c2 |
|
MD5 | 300fe28cb9c8815eefa55ceb95cc4de1 |
|
BLAKE2b-256 | 5f37aa83aa01eade92145b3b3a434a686a344a6d9c6e243b04f024de8767c284 |
Hashes for finlab-0.5.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 042959837e94bf83834cb221eeeb32141a4aa759d14aedce11f624b173870b0d |
|
MD5 | 9339b72c8995b11a1c3e5e6475259100 |
|
BLAKE2b-256 | 51bfbc1ec3a0c9da4b98159ae9538721afca1497846f0259d1e9d20c796ad9f2 |
Hashes for finlab-0.5.7-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8787001a2477b71c6eb6c5942a8d28e6f1895e902ff907ca832cf3971396526e |
|
MD5 | 65c406258f7083ff53133cce094d2bf3 |
|
BLAKE2b-256 | 09194fcf536bb06c9070f78088665999cb2a8135f5c2af7190701675a93e7751 |
Hashes for finlab-0.5.7-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 07cb27e93296d985a5c21ecbaf05bd259572fad2a1fc4f3e71bbfcd25e512022 |
|
MD5 | d6ef04be140b4c105a00a5cc7de49ac6 |
|
BLAKE2b-256 | 538ef3e5f5ce357e3dd7d9128a1a4fd993679264cd948a69533335ade55208fc |
Hashes for finlab-0.5.7-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d8a788d98b8c4875576b105a68387905f1bc9376e6c686c65441ac0c6f5f29e4 |
|
MD5 | 2eed871b3c9507df15f99f62cb7fafa4 |
|
BLAKE2b-256 | 982637ade432d46a2c1af16f266ab2aaa7c5299ee440ba08d44c4a26829140fe |
Hashes for finlab-0.5.7-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51db14a4186a3790f3e8a7517a4bc61969394bd7fc476f4ac85a25686911af63 |
|
MD5 | d139e1171f0607cb1aee6dbe47526f5a |
|
BLAKE2b-256 | 876309b703bc899725fb7cc9331d86502ba6fcbe956d722cc5b4b4c7cf74bb51 |
Hashes for finlab-0.5.7-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 29eb02e26dc3406db061dbc01caf410ffe10280cf95418fde332344cef3489d8 |
|
MD5 | d956ceb46061c940aa1932f193fe0c07 |
|
BLAKE2b-256 | a864d6aff9674f5b37c53009443b8427b3c6dca21d9665dbc71493b137d2601c |