Skip to main content

Analyzing stock has never been easier.

Project description


hide:

  • navigation

快速上手

安裝

在任意平台上,皆可安裝 FinLab Package,我們支援 Windows、MacOS、Linux,並且甚至是 Pyodide! 以新手來說,推薦的使用方式是直接在 Google Colab,來使用。 Google Colab 可以線上產生一個執行 Python 的環境,使用者不需額外在本機安裝任何程式,即可開始使用。

=== ":octicons-code-16: Google Colab" ``` py # 在 Colab 中任意 Cell 中執行

!pip install finlab > log.txt
```

=== ":octicons-code-16: FinLab 實驗室" 打開選股策略頁面 https://ai.finlab.tw/strategies 並點選「建立策略」即可開始使用。

=== ":octicons-code-16: 本機 Python" ``` py # 在 anacnoda prompt 中執行

pip install finlab
```

下載資料

輸入以下程式碼,即可下載資料。可以查詢有哪些歷史資料可以下載。

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 0 0 0 0 0
2007-04-24 00:00:00 0 0 0 0 0
2007-04-25 00:00:00 0 0 0 0 0
2007-04-26 00:00:00 0 0 0 1 0
2007-04-27 00:00:00 0 0 0 0 0

這邊的 position 是一個 0/1 的查詢表,當數字為 1,代表該股票在當天有創新高,而數字 0 則代表沒有創新高。由於創新高的股票很少,上面的範例中,只有少數股票的數值會是 1。

假設我們希望每個月底,搜尋上表中數值為 1 的股票並且買入持有一個月,可以用以下的語法:

回測績效

from finlab import backtest

report = backtest.sim(position, resample='M')

image

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

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

finlab-0.3.6.dev1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (416.2 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

finlab-0.3.6.dev1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (393.3 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

finlab-0.3.6.dev1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (416.1 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

finlab-0.3.6.dev1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (393.3 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

finlab-0.3.6.dev1-cp310-cp310-musllinux_1_1_x86_64.whl (2.8 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

finlab-0.3.6.dev1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

finlab-0.3.6.dev1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

finlab-0.3.6.dev1-cp310-cp310-macosx_10_9_x86_64.whl (464.4 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

finlab-0.3.6.dev1-cp310-cp310-macosx_10_9_universal2.whl (791.9 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

finlab-0.3.6.dev1-cp39-cp39-musllinux_1_1_x86_64.whl (2.8 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

finlab-0.3.6.dev1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

finlab-0.3.6.dev1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

finlab-0.3.6.dev1-cp39-cp39-macosx_10_9_x86_64.whl (465.8 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

finlab-0.3.6.dev1-cp39-cp39-macosx_10_9_universal2.whl (794.0 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

finlab-0.3.6.dev1-cp38-cp38-musllinux_1_1_x86_64.whl (3.2 MB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

finlab-0.3.6.dev1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

finlab-0.3.6.dev1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

finlab-0.3.6.dev1-cp38-cp38-macosx_10_9_x86_64.whl (461.0 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ x86-64

finlab-0.3.6.dev1-cp38-cp38-macosx_10_9_universal2.whl (785.7 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ universal2 (ARM64, x86-64)

finlab-0.3.6.dev1-cp37-cp37m-musllinux_1_1_x86_64.whl (2.6 MB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ x86-64

finlab-0.3.6.dev1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

finlab-0.3.6.dev1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.1 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

finlab-0.3.6.dev1-cp37-cp37m-macosx_10_9_x86_64.whl (453.3 kB view hashes)

Uploaded CPython 3.7m macOS 10.9+ x86-64

finlab-0.3.6.dev1-cp36-cp36m-musllinux_1_1_x86_64.whl (2.7 MB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.1+ x86-64

finlab-0.3.6.dev1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

finlab-0.3.6.dev1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.1 MB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ ARM64

finlab-0.3.6.dev1-cp36-cp36m-macosx_10_9_x86_64.whl (451.5 kB view hashes)

Uploaded CPython 3.6m macOS 10.9+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page