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.6-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 36b936d0b6e92b2f508b3dd754704dbcbbe760b74db794bc1f5257d888d3ea24 |
|
MD5 | d705e1f25112e430f587eeddde9829d3 |
|
BLAKE2b-256 | 888ba8ffa3b99382bae702bbad9d9561ba04568d316265f3751d3ef8cf4a5d93 |
Hashes for finlab-0.5.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 083a5e0e560d34a2a95ac3988afee06becdac7cb89a51415c049995301f992b8 |
|
MD5 | 3f446c83a03138d9ab72b53ffc960ba5 |
|
BLAKE2b-256 | 5d042acfc36fb00f93a8ce27007c6aa3016a8fbfac850413dbf9e1049b931eb9 |
Hashes for finlab-0.5.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5e10477745b5120efba08c298dd2f8a67351f6486f01293f5b2994df60534b3c |
|
MD5 | cc7e7cbed95ff9414036e660ab4fcaa1 |
|
BLAKE2b-256 | 7085b8426e102a13959b438db7144baadf56c2832d0b2f238c7f499779bf6dde |
Hashes for finlab-0.5.6-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9343af7ed113367445bbea5c64ec5701a64850c60c4b66d482c6967798eda456 |
|
MD5 | 98799ac4d7e828511f5a75d04cfc974d |
|
BLAKE2b-256 | c372e06018e06311d9e90e03fa2898488bb10cd7694044360918de8d19c79c8d |
Hashes for finlab-0.5.6-cp311-cp311-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e45e670416062f87e909b22198b326978dc9acbaecbe84cf322937a9bb0405de |
|
MD5 | 5d02a7e3ac27924ce252800eda7723f2 |
|
BLAKE2b-256 | af5f241a674b395d7a0014b7f2eb4615874caba43e2322c14f183d753cbfeeb8 |
Hashes for finlab-0.5.6-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 38278407043749244fe5f131fc038e02e11682bf275db9c30c760a322176d1d4 |
|
MD5 | 93a02cd59405c5e2949b0611ec8543b6 |
|
BLAKE2b-256 | e2e8ef850c8ff1bc39d50ebbafa378f7fb2da4ed0f41d685e1995b9b52e9040e |
Hashes for finlab-0.5.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5c1b57db80daeab5fb4163d5b27eb2553032faf86b0507b896873ad74049ffd1 |
|
MD5 | 71218f13130abdd2105311434bcff871 |
|
BLAKE2b-256 | d7f986a382b40e35165847e78d74d24861d6e129815146c30aacba6f2a0a3534 |
Hashes for finlab-0.5.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 462302120e0a31339090dbf2a3324a2a21f4636e24489d6e813f08011ab754ac |
|
MD5 | 1ad0aa0aabf83d53b812fade0cbdd611 |
|
BLAKE2b-256 | 025f81a992d70441e62543ab02872c8134a64d9ac4ef6e5453633f3eed2ba2f1 |
Hashes for finlab-0.5.6-cp310-cp310-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d1a2871264bc5d03f79e310d470ff75a667a4e26b913dcdd1d670c094797956d |
|
MD5 | 03a88c4db7345bfce5035a2d775b1caa |
|
BLAKE2b-256 | ed4bde02470dd39e58da04d090e3f4ff9f731310b9cc88159da2771f3e65168b |
Hashes for finlab-0.5.6-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e936853d5aee774b1f008807b027eb825423a06e5da18659d06e54f959a07413 |
|
MD5 | cf827360aa5d03dfd24a6a8899ec2105 |
|
BLAKE2b-256 | 4a77f22d86e32414c25b8434d692373bfefc810f999eabbaabb0e2d262175d2f |
Hashes for finlab-0.5.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8ae08e93fda3d10b722e25ba4814188720ec7545c6c4bae2dce0d663e9f5c00e |
|
MD5 | f3b318d15110f98b8cfe4d2f6e759cd7 |
|
BLAKE2b-256 | 5301330ee19080c7f2f2b53fc8e7e575bcc3ef04b14ffc6be436147a5f4f4f63 |
Hashes for finlab-0.5.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 87f9f3aa1c6db984e4449b108e4666fce8b7a374c779f8636623fc0883606329 |
|
MD5 | 942a71e27239ae83aae84bb61132c283 |
|
BLAKE2b-256 | 6fc8e574b8e4618907236b77cdd5a37fd5983b6ab68e3761ce92e7f9417524fd |
Hashes for finlab-0.5.6-cp39-cp39-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c69bd5e998ff609878da6f10c3f95681d683ca9c861dce025b6aa69c27597107 |
|
MD5 | fc69a1b71c635ae639874c422c3d22e0 |
|
BLAKE2b-256 | 748ea53ae94df4a39012115020e92865a9937bd82952e9d1c678c08693806df8 |
Hashes for finlab-0.5.6-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7cc3d934a9100a7eeef43d7c017332e970f2a4841b047988cac62c48dccc6014 |
|
MD5 | 5d1db7d232653e3c19ba653cca83d33e |
|
BLAKE2b-256 | b10634a324f6a1edd970fc939e6bae1ce00961a0235dac671610ef606e37ae13 |
Hashes for finlab-0.5.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 672d958cab8ba2bd3bd9b676940d09080369da5f505402badd490d264736e84c |
|
MD5 | a062c9c01fe5d7526aaa424b20cfca99 |
|
BLAKE2b-256 | dadfb8464de2f5fe33ef438c90d6d4c086332af9d810b8268d19efdce32c2594 |
Hashes for finlab-0.5.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 803b1edc848288ed58f4fd13715fbf4878d287df4abf635e48101c174b3eabb2 |
|
MD5 | 8f557847a813855b248f693a71b86229 |
|
BLAKE2b-256 | 832262e65b2272f94c53d1376fe0082184de99d2cf82c9fc2a91b94d920e8d28 |
Hashes for finlab-0.5.6-cp38-cp38-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 29a9f555491e4205f34a4fee4d099de41da3ccdd9ed65d3476067b6be19a9588 |
|
MD5 | eb2be385447dda812af3f5cf918ba5a5 |
|
BLAKE2b-256 | d0647f60c7e2835b6b082dba07ac33863fc5c069e273ad1f92eef96f843bf923 |
Hashes for finlab-0.5.6-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3f0670913711e3dca92f3fb8712623de97f041d3bda9a3e384fa34561e026a66 |
|
MD5 | 66dfcf82b4c4c72405d1bc27f53db5dd |
|
BLAKE2b-256 | bbc2518c0d0268c4d1b8b4fac68d7495f7889f9b83625210f437df316b796f2f |
Hashes for finlab-0.5.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 40c825e0abe96c037564108de9a39135c5addf9b68660c5125f8d92dd19415ca |
|
MD5 | 7871123b9ca7c58ad2913a0ce0d392ad |
|
BLAKE2b-256 | e6d6600981f7e62e9b5748e9fdf84c18b82dc8a0406a8fc3bad5bb9026b9787f |
Hashes for finlab-0.5.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c9157390f0619598dee2c53c84342063709f221c5dfc9e8c4a1844d6a2a5d01a |
|
MD5 | 6d6ca1db62a866abb2cf2c0ebdfb0653 |
|
BLAKE2b-256 | 186f60af744c25fc1731b5c4ffdbe94676525b6d6ef16f0b5991d8d803fa1ac0 |
Hashes for finlab-0.5.6-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 829caf73f38195d93bb649457e40beaace9f7e2830afd56798f4ad05c1afddea |
|
MD5 | 07d77d39ff1c500a831f8659e8ba8ed5 |
|
BLAKE2b-256 | 893e5ee47e2d9d8ecf4c09a648ced6de1d11dee6b143241e52634703d1b4f6ce |
Hashes for finlab-0.5.6-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 494ec7250335ea92c26d8e239a8fb373eb419922ca2aca60965ff16ef710c541 |
|
MD5 | ac42709d6cf5a8db54776f893325085f |
|
BLAKE2b-256 | ee2bd33133c886efab4e4d4dbfa2d042f5f3de94802a445a1965ffa856656c07 |
Hashes for finlab-0.5.6-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a9ed982beeba722dc97ff263616d89c6517738f464b0d0fb752f4e7219cd98a9 |
|
MD5 | 04b8681243b278113cdc3ca86caee2d0 |
|
BLAKE2b-256 | 830015e77bd458055c56b3e1ff104de2f106c744af299bcb7fcf4471cebbc2aa |
Hashes for finlab-0.5.6-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 60fa01e246873666a6ae7b1d2604ea4b9b6dc85c86c93176a3fcb706ad4ee1a8 |
|
MD5 | 4bb827d44dd48ae1827ae0500cdf94b7 |
|
BLAKE2b-256 | 7fe3b0551090b7c4acd90b98523eb615f28a1314142c6291572ae809a7f69e22 |
Hashes for finlab-0.5.6-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9a0766d7f1cb248a30d158703eb41e2ba5bc8ea217e1519286cb4d547033484b |
|
MD5 | 5831644ab12fcfa5d37282d11e9f0bf3 |
|
BLAKE2b-256 | a7a15daf589258584991be3727ba46b9ed9d2eb39bf554e673ba390962d214a0 |