neurostats-API


Nameneurostats-API JSON
Version 0.0.25 PyPI version JSON
download
home_pagehttps://github.com/NeurowattStats/NeuroStats_API.git
SummaryThe service of NeuroStats website
upload_time2025-04-21 07:36:48
maintainerNone
docs_urlNone
authorJasonWang@Neurowatt
requires_python>=3.6
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # neurostats_API

- [檔案架構](#檔案架構)
- [使用方法](#使用方法)
    - [下載](#下載)
    - [價值投資](#得到最新一期的評價資料與歷年評價)
        - [歷史評價](#得到指定公司的歷來評價)
    - [財務分析-重要指標](#財務分析-重要指標)
    - [月營收表](#回傳月營收表)
    - [損益表](#損益表)
    - [資產負債表](#資產負債表)
    - [現金流量表](#現金流量表)
    - [法人交易](#法人交易)
    - [資券餘額](#資券餘額)
    - [版本紀錄](#版本紀錄)


## 檔案架構

```
├── neurostats_API
│   ├── __init__.py
│   ├── cli.py
│   ├── main.py
│   ├── fetchers
│   │   ├── __init__.py
│   │   ├── base.py
│   │   ├── balance_sheet.py
│   │   ├── cash_flow.py
│   │   ├── finance_overview.py
│   │   ├── profit_lose.py
│   │   ├── tech.py
│   │   ├── value_invest.py
│   ├── tools
│   │   ├── balance_sheet.yaml
│   │   ├── cash_flow_percentage.yaml
│   │   ├── finance_overview_dict.yaml
│   │   ├── profit_lose.yaml
│   │   └── seasonal_data_field_dict.txt
│   └── utils
│       ├──__init__.py
│       ├── data_process.py
│       ├── datetime.py
│       ├── db_client.py
│       └── fetcher.py
├──  test
│    ├── __init__.py
│    └── test_fetchers.py
├── Makefile
├── MANIFEST.in
├── README.md
├── requirement.txt
├── setup.py

```
- `neurostats_API`: 主要的package運行內容
   - `fetchers`: 回傳service內容的fetcher檔案夾
      - `base.py`: 基本架構
      - `value_invest.py`: iFa.ai -> 價值投資
      - `finance_overview.py`: iFa.ai -> 財務分析 -> 重要指標
      - `tech.py`: iFa.ai -> 技術指標
   - `tools`: 存放各種設定檔與資料庫index對應領域的dictionary
   - `utils`: 
      - `fetcher.py`: Service的舊主架構, 月營收, 損益表, 資產負債表, 資產收益表目前在這裡
      - `data_process.py`: config資料的讀取
      - `datetime.py`: 時間格式,包括日期,年度,月份,日,季度

## 下載
```
pip install neurostats-API
```
### 確認下載成功
```Python 
>>> import neurostats_API
>>> print(neurostats_API.__version__)
0.0.25
```

### 得到最新一期的評價資料與歷年評價
``` Python
from neurostats_API.utils import ValueFetcher, DBClient
db_client = DBClient("<連接的DB位置>").get_client()
ticker = "2330" # 換成tw50內任意ticker
fetcher = ValueFetcher(ticker, db_client)

fetcher.query_data()
```

#### 回傳(2330為例)
```Python
{
    "ticker": 股票代碼,
    "company_name": 公司中文名稱,
    "daily_data":{
    ## 以下八個是iFa項目
        "P_E": 本益比,
        "P_B": 股價,
        "P_FCF": 股價自由現金流比,
        "P_S": 股價營收比,
        "EV_EBIT: ,
        "EV_EBITDA": ,
        "EV_OPI": ,
        "EV_S"; 
    ## 以上八個是iFa項目
        "close": 收盤價,
    }

    "yearly_data": pd.DataFrame (下表格為範例)
        year    P_E       P_FCF   P_B        P_S     EV_OPI    EV_EBIT   EV_EBITDA       EV_S
    0   107  16.68   29.155555  3.71  11.369868  29.837201  28.798274  187.647704  11.107886
    1   108  26.06   67.269095  5.41  17.025721  50.145736  47.853790  302.526388  17.088863
    2   109  27.98   95.650723  7.69  22.055379  53.346615  51.653834  205.847232  22.481951
    3   110  27.83  149.512474  7.68  22.047422  55.398018  54.221387  257.091893  22.615355
    4   111  13.11   48.562021  4.25  11.524975  24.683850  24.226554   66.953260  12.129333
    5   112  17.17  216.371410  4.59  16.419533  40.017707  37.699267  105.980652  17.127656
    6  過去4季    NaN -24.929987   NaN  4.300817      83.102921   55.788996 -1073.037084  7.436656
}
```
> 這裡有Nan是因為本益比與P/B等資料沒有爬到最新的時間

### 得到指定公司的歷來評價
``` Python
from neurostats_API.utils import ValueFetcher, DBClient
db_client = DBClient("<連接的DB位置>").get_client()
ticker = "2330" # 換成tw50內任意ticker
fetcher = ValueFetcher(ticker, db_client)

fetcher.query_value_serie()
```
#### 回傳(2330為例)
```Python
{
'EV_EBIT':               EV_EBIT
        2014-01-02        NaN
        2014-01-03        NaN
        ...               ...
        2024-12-12  15.021431
        2024-12-13  15.088321
,
'EV_OPI':                EV_OPI
        2014-01-03        NaN
        ...               ...
        2024-12-12  15.999880
        2024-12-13  16.071128
,
'EV_S':                 EV_S
        2014-01-02       NaN
        2014-01-03       NaN
        ...              ...
        2024-12-12  6.945457
        2024-12-13  6.976385
,
'P_B':              P_B
        2014-01-02   NaN
        2014-01-03   NaN
        ...          ...
        2024-12-12  6.79
        2024-12-13  6.89
,
'P_E':               P_E
        2014-01-02    NaN
        2014-01-03    NaN
        ...           ...
        2024-12-12  26.13
        2024-12-13  26.50
,
'P_FCF':                 P_FCF
        2014-01-02        NaN
        2014-01-03        NaN
        ...               ...
        2024-12-12  45.302108
        2024-12-13  45.515797
,
'P_S':                  P_S
        2014-01-02       NaN
        2014-01-03       NaN
        ...              ...
        2024-12-12  6.556760
        2024-12-13  6.587688
}
```


### 回傳月營收表
``` Python
from neurostats_API.fetchers import MonthRevenueFetcher, DBClient
db_client = DBClient("<連接的DB位置>").get_client()
ticker = "2330" # 換成tw50內任意ticker
fetcher = MonthRevenueFetcherFetcher(ticker, db_client)
data = fetcher.query_data()
```

#### 回傳
```Python
{
        "ticker": "2330",
        "company_name": "台積電",
        "month_revenue":
        year                 2024  ...        2014
        month                      ...
        grand_total  2.025847e+09  ...         NaN
        12                    NaN  ...  69510190.0
        ...                   ...  ...         ...
        2            1.816483e+08  ...  46829051.0
        1            2.157851e+08  ...  51429993.0

        "this_month_revenue_over_years":
        year                             2024  ...        2015
        revenue                  2.518727e+08  ...  64514083.0
        revenue_increment_ratio  3.960000e+01  ...       -13.8
        ...                               ...  ...         ...
        YoY_5                    1.465200e+02  ...         NaN
        YoY_10                            NaN  ...         NaN

        "grand_total_over_years":
        year                                 2024  ...          2015
        grand_total                  2.025847e+09  ...  6.399788e+08
        grand_total_increment_ratio  3.187000e+01  ...  1.845000e+01
        ...                                   ...  ...           ...
        grand_total_YoY_5            1.691300e+02  ...           NaN
        grand_total_YoY_10                    NaN  ...           NaN

        "recent_month_revenue":
        date           2024/11      2024/10  ...       2024/1      2023/12
        revenue    51243946000  45451116000  ...  56451418000  55329015000
        MoM             12.75%      -14.77%  ...        2.03%       -0.52%
        YoY             -7.87%      -30.00%  ...       -7.36%      -11.13%
        total_YoY       -6.93%       -6.84%  ...       -7.36%      -15.97%
        accum_YoY       85.84%       78.65%  ...        7.92%       84.03%
        # total_YoY為當月累計營收 / 上一年的當月累計營收
        # accum_YoY為當月累計營收 / 上一年的總營收

}
```
- `'ticker'`: 股票代碼
- `'company_name'`: 公司名稱 
- `'month_revenue'`: 歷年的月營收以及到今年最新月份累計的月營收表格 
- `'this_month_revenue_over_years'`: 今年這個月的月營收與歷年同月份的營收比較
- `'grand_total_over_years'`: 累計至今年這個月的月營收與歷年的比較

> 大部分資料(成長率)缺失是因為尚未計算,僅先填上已經有的資料


### 財務分析: 重要指標
對應https://ifa.ai/tw-stock/2330/finance-overview
```Python
from neurostats_API.fetchers import FinanceOverviewFetcher, DBClient
db_client = DBClient("<連接的DB位置>").get_client()
ticker = "2330"
fetcher = FinanceOverviewFetcher(ticker = "2330", db_client = db_client)
data = fetcher.query_data()
```

#### 回傳
型態為Dict:
```Python
{
        ticker: str #股票代碼,
        company_name: str #公司名稱,
        seasonal_data: Dict # 回傳資料
}
```

以下為seasonal_data目前回傳的key的中英對應(中文皆參照iFa.ai)

markdown
複製程式碼
| 英文                                | 中文                          |
|-----------------------------------|-----------------------------|
|**財務概況**|
| revenue                           | 營業收入                     |
| gross_profit                      | 營業毛利                     |
| operating_income                  | 營業利益                     |
| net_income                        | 淨利                        |
| operating_cash_flow               | 營業活動之現金流              |
| invest_cash_flow                  | 投資活動之淨現金流             |
| financing_cash_flow               | 籌資活動之淨現金流             |
|**每股財務狀況**|
| revenue_per_share                 | 每股營收                     |
| gross_per_share                   | 每股營業毛利                  |
| operating_income_per_share        | 每股營業利益                  |
| eps                               | 每股盈餘(EPS)                |
| operating_cash_flow_per_share     | 每股營業現金流                |
| fcf_per_share                     | 每股自由現金流                |
| debt_to_operating_cash_flow       | 每股有息負債                  |
| equity                            | 每股淨值                     |
|**獲利能力**|
| roa                               | 資產報酬率                    |
| roe                               | 股東權益報酬率                 |
| gross_over_asset                  | 營業毛利÷總資產               |
| roce                              | ROCE                        |
| gross_profit_margin               | 營業毛利率                    |
| operation_profit_rate             | 營業利益率                    |
| net_income_rate                   | 淨利率                       |
| operating_cash_flow_profit_rate   | 營業現金流利潤率               |
|**成長動能**|
| revenue_YoY                       | 營收年成長率                  |
| gross_prof_YoY                    | 營業毛利年成長率               |
| operating_income_YoY              | 營業利益年成長率               |
| net_income_YoY                    | 淨利年成長率                  |
|**營運指標**|
| dso                               | 應收帳款收現天數               |
| account_receive_over_revenue      | 應收帳款佔營收比率             |
| dio                               | 平均售貨天數                  |
| inventories_revenue_ratio         | 存貨佔營收比率                |
| dpo                               | 應付帳款付現日天數             |
| cash_of_conversion_cycle          | 現金循環週期                  |
| asset_turnover                    | 總資產週轉率                  |
| applcation_turnover               | 不動產、廠房及設備週轉率        |
|**財務韌性**|
| current_ratio                     | 流動比率                     |
| quick_ratio                       | 速動比率                     |
| debt_to_equity_ratio              | 負債權益比率                  |
| net_debt_to_equity_ratio          | 淨負債權益比率                |
| interest_coverage_ratio           | 利息保障倍數                  |
| debt_to_operating_cash_flow       | 有息負債÷營業活動現金流         |
| debt_to_free_cash_flow            | 有息負債÷自由現金流            |
| cash_flow_ratio                   | 現金流量比率                  |
|**資產負債表**|
| current_assets                    | 流動資產                     |
| current_liabilities               | 流動負債                     |
| non_current_assets      | 非流動資產                    |
| non_current_liabilities| 非流動負債                    |
| total_asset                       | 資產總額                     |
| total_liabilities                 | 負債總額                     |
| equity                            | 權益                        |

#### 以下數值未在回傳資料中,待資料庫更新 
|英文|中文|
|---|----|
|**成長動能**|
| operating_cash_flow_YoY | 營業現金流年成長率             |
| fcf_YoY  | 自由現金流年成長率             |
| operating_cash_flow_per_share_YoY | 每股營業現金流年成長率          |
| fcf_per_share_YoY | 每股自由現金流年成長率          |

### 損益表
```Python
from neurostats_API.fetchers import ProfitLoseFetcher, DBClient
db_client = DBClient("<連接的DB位置>").get_client()
fetcher = ProfitLoseFetcher(db_client)
ticker = "2330" # 換成tw50內任意ticker
data = fetcher.query_data()
```
   
#### 回傳
因項目眾多,不列出詳細內容,僅列出目前會回傳的項目
```Python
{
        "ticker": "2330"
        "company_name": "台積電"
        # 以下皆為pd.DataFrame
        "profit_lose":  #損益表,
        "grand_total_profit_lose": #今年度累計損益表,
        # 營業收入
        "revenue": # 營收成長率
        "grand_total_revenue": # 營收累計成場濾
        # 毛利
        "gross_profit": # 毛利成長率
        "grand_total_gross_profit": # 累計毛利成長率
        "gross_profit_percentage": # 毛利率
        "grand_total_gross_profit_percentage" # 累計毛利率
        # 營利
        "operating_income": # 營利成長率
        "grand_total_operating_income": # 累計營利成長率
        "operating_income_percentage": # 營利率
        "grand_total_operating_income_percentage": # 累計營利率
        # 稅前淨利
        "net_income_before_tax": # 稅前淨利成長率
        "grand_total_net_income_before_tax": # 累計稅前淨利成長率
        "net_income_before_tax_percentage": # 稅前淨利率
        "grand_total_net_income_before_tax_percentage": # 累計稅前淨利率
        # 本期淨利
        "net_income": # 本期淨利成長率
        "grand_total_net_income": # 累計本期淨利成長率
        "net_income_percentage": # 本期淨利率
        "grand_total_income_percentage": # 累計本期淨利率
        # EPS
        "EPS":  # EPS
        "EPS_growth":  # EPS成長率
        "grand_total_EPS": # 累計EPS
        "grand_total_EPS_growth": # 累計EPS成長率
}
```

### 資產負債表
``` Python
from neurostats_API.fetchers import BalanceSheetFetcher, DBClient
db_client = DBClient("<連接的DB位置>").get_client()
ticker = "2330" # 換成tw50內任意ticker
fetcher = BalanceSheetFetcher(ticker, db_client)

fetcher.query_data()
```

#### 回傳
```Python
{
        "ticker": "2330"
        "company_name":"台積電"
        "balance_sheet":
                2024Q2_value  ...  2018Q2_percentage
        流動資產                   NaN  ...                NaN
        現金及約當現金       1.799127e+09  ...              30.79
        ...                    ...  ...                ...
        避險之衍生金融負債-流動           NaN  ...               0.00
        負債準備-流動                NaN  ...               0.00

        "total_asset":
        2024Q2_value  ...  2018Q2_percentage
        資產總額  5.982364e+09  ...             100.00
        負債總額  2.162216e+09  ...              27.41
        權益總額  3.820148e+09  ...              72.59


        "current_asset":
                2024Q2_value  ...  2018Q2_percentage
        流動資產合計  2.591658e+09  ...               46.7

        "non_current_asset":
                2024Q2_value  ...  2018Q2_percentage
        非流動資產合計  3.390706e+09  ...               53.3

        "current_debt":
                2024Q2_value  ...  2018Q2_percentage
        流動負債合計  1.048916e+09  ...              22.55

        "non_current_debt":
                2024Q2_value  ...  2018Q2_percentage
        非流動負債合計  1.113300e+09  ...               4.86

        "equity":
        2024Q2_value  ...  2018Q2_percentage
        權益總額  3.820148e+09  ...              72.59

}
```
- `'ticker'`: 股票代碼
- `'company_name'`: 公司名稱 
- `'balance_sheet'`: 歷年當季資場負債表"全表" 
- `'total_asset'`: 歷年當季資產總額 
- `'current_asset'`: 歷年當季流動資產總額
- `'non_current_asset'`: 歷年當季非流動資產
- `'current_debt'`: 歷年當季流動負債
- `'non_current_debt'`: 歷年當季非流動負債
- `'equity'`:  歷年當季權益

### 現金流量表
``` Python
from neurostats_API.fetchers import CashFlowFetcher
db_client = DBClient("<連接的DB位置>").get_client()
ticker = 2330 # 換成tw50內任意ticker
fetcher = StatsFetcher(ticker, db_client)

fetcher.query()
```
#### 回傳
```Python
{
        "ticker": "2330"
        "company_name": "台積電"
        "cash_flow":
                        2023Q3_value  ...  2018Q3_percentage
        營業活動之現金流量-間接法                  NaN  ...                NaN
        繼續營業單位稅前淨利(淨損)         700890335.0  ...           0.744778
        ...                            ...  ...                ...
        以成本衡量之金融資產減資退回股款               NaN  ...                NaN
        除列避險之金融負債∕避險 之衍生金融負債           NaN  ...          -0.000770

        "CASHO":
                        2023Q3_value  ...  2018Q3_percentage
        營業活動之現金流量-間接法              NaN  ...                NaN
        繼續營業單位稅前淨利(淨損)     700890335.0  ...           0.744778
        ...                        ...  ...                ...
        持有供交易之金融資產(增加)減少           NaN  ...           0.001664
        負債準備增加(減少)                 NaN  ...                NaN

        "CASHI":
                                2023Q3_value  ...  2018Q3_percentage
        投資活動之現金流量                        NaN  ...                NaN
        取得透過其他綜合損益按公允價值衡量之金融資產   -54832622.0  ...           0.367413
        ...                              ...  ...                ...
        持有至到期日金融資產到期還本                   NaN  ...                NaN
        取得以成本衡量之金融資產                     NaN  ...                NaN

        "CASHF":
                        2023Q3_value  ...  2018Q3_percentage
        籌資活動之現金流量                      NaN  ...                NaN
        短期借款減少                         0.0  ...                NaN
        ...                            ...  ...                ...
        以成本衡量之金融資產減資退回股款               NaN  ...                NaN
        除列避險之金融負債∕避險 之衍生金融負債           NaN  ...           -0.00077
}
```
- `'ticker'`: 股票代碼
- `'company_name'`: 公司名稱 
- `'cash_flow'`: 歷年當季現金流量表"全表" 
- `'CASHO'`: 歷年當季營運活動之現金流量
- `'CASHI'`: 歷年當季投資活動之現金流量
- `'CASHF'`: 歷年當季籌資活動之現金流量

> 大部分資料缺失是因為尚未計算,僅先填上已經有的資料

## 籌碼面
### 法人交易
``` Python
from neurostats_API.fetchers import InstitutionFetcher
db_client = DBClient("<連接的DB位置>").get_client()
ticker = 2330 # 換成tw50內任意ticker
fetcher = StatsFetcher(ticker, db_client)

fetcher.query()
```
### 回傳
```Python
{ 'annual_trading':       
                        close      volume  ... 自營商買賣超股數(避險)   三大法人買賣超股數
        2024-12-02  1035.000000  31168404.0  ...    -133215.0  11176252.0
        2024-11-29   996.000000  40094983.0  ...     401044.0  -7880519.0
        ...                 ...         ...  ...          ...         ...
        2023-12-05   559.731873  22229723.0  ...       33,400  -5,988,621
        2023-12-04   563.659790  26847171.0  ...     -135,991  -5,236,743

,
  'latest_trading': 
  { 'date': datetime.datetime(2024, 12, 2, 0, 0),
    'table':              
            category       variable  ...  over_buy_sell   sell
        0   foreign  average_price  ...           0.00    0.0
        1   foreign     percentage  ...           0.00    0.0
        ..      ...            ...  ...            ...    ...
        14     prop          price  ...           0.00    0.0
        15     prop          stock  ...        -133.22  217.2
  }
,
  'price': 
  { 
        '52weeks_range': '555.8038940429688-1100.0', # str
        'close': 1035.0, # float
        'last_close': 996.0, # float
        'last_open': 995.0, # float
        'last_range': '994.0-1010.0', # str
        'last_volume': 40094.983, # float
        'open': 1020.0, # float
        'range': '1015.0-1040.0', # str
        'volume': 32238.019 # float
  }
}
```

- `annual_trading`: 對應一年內每日的交易量
- `latest_trading`: 對應當日交易
##### 欄位項目名稱
|英文|中文對應|
|----|-------|
|buy|買進|
|sell|賣出|
|over_buy_sell|買賣超|

##### category項目名稱
|英文|中文對應|
|----|-------|
|foreign|外資|
|prop|自營商|
|mutual|投信|
|institutional_investor|三大法人|

##### variable項目名稱
|英文|中文對應|
|----|-------|
|stock|股票張數|
|price|成交金額|
|average_price|均價|
|percetage|佔成交比重|

**成交金額以及均價因為資料沒有爬到而無法計算**
**仍然先將這項目加入,只是數值都會是0**

- `price`: 對應法人買賣頁面的今日與昨日交易價
請注意`range`, `last_range`, `52week_range`這三個項目型態為字串,其餘為float

##### 項目名稱
|英文|中文對應|
|----|-------|
|open|開盤價|
|close|收盤價|
|range|當日範圍|
|volume|成交張數|
|last_open|開盤價(昨)|
|last_close|收盤價(昨)|
|last_range|昨日範圍|
|last_volume|成交張數(昨)|
|52weeks_range|52週範圍|

## 資券餘額
對應iFa.ai -> 交易資訊 -> 資券變化
```Python
from neurostats_API.fetchers import MarginTradingFetcher
db_client = DBClient("<連接的DB位置>").get_client()
ticker = 2330 # 換成tw50內任意ticker
fetcher = MarginTradingFetcher(ticker, db_client)

fetcher.query()
```

### 回傳
```Python
{ 'annual_margin':                   
                        close   volume  ...  借券_次一營業日可限額  資券互抵
        2024-12-03  1060.000000  29637.0  ...    12222.252   0.0
        2024-12-02  1035.000000  31168.0  ...    12156.872   1.0
        ...                 ...      ...  ...          ...   ...
        2023-12-05   559.731873  22230.0  ...     7838.665   1.0
        2023-12-04   563.659790  26847.0  ...     7722.725   2.0

  'latest_trading': { 
        'date': datetime.datetime(2024, 12, 3, 0, 0),
        'margin_trading':          
                        financing  short_selling
        買進           761.0           34.0
        賣出          1979.0           44.0
        ...            ...            ...
        次一營業日限額  6483183.0      6483183.0
        現償             3.0           12.0


        'security_offset': 0.0,
        'stock_lending':           stock_lending
                當日賣出                 10
                當日還券                  0
                當日調整                  0
                當日餘額              14688
                次一營業日可限額          12222
  },
  'price': { '52weeks_range': '555.8038940429688 - 1100.0',
             'close': 1060.0,
             'last_close': 1035.0,
             'last_open': 1020.0,
             'last_range': '1015.0 - 1040.0',
             'last_volume': 31168.404,
             'open': 1060.0,
             'range': '1055.0 - 1065.0',
             'volume': 29636.523}}
```
- `annual_trading`: 對應一年內每日的資券變化量
- `latest_trading`: 對應當日交易
##### 欄位項目名稱
|英文|中文對應|
|----|-------|
|financing|融資|
|short_selling|融券|

- `price`: 對應法人買賣頁面的今日與昨日交易價
##### 項目名稱
|英文|中文對應|
|----|-------|
|open|開盤價|
|close|收盤價|
|range|當日範圍|
|volume|成交張數|
|last_open|開盤價(昨)|
|last_close|收盤價(昨)|
|last_range|昨日範圍|
|last_volume|成交張數(昨)|
|52weeks_range|52週範圍|

請注意`range`, `last_range`, `52week_range`這三個項目型態為字串,其餘為float


## TEJ 相關
### 會計師簽證財務資料
```Python
from neurostats_API import FinanceReportFetcher

mongo_uri = <MongoDB 的 URI>
db_name = 'company' # 連接的DB名稱
collection_name = "TWN/AINVFQ1" # 連接的collection對象

fetcher = FinanceReportFetcher(
    mongo_uri = mongo_uri,
    db_name = db_name,
    collection_name = collection_name
)

data = fetcher.get(
    ticker = "2330" # 任意的股票代碼
    fetch_mode = fetcher.FetchMode.QOQ_NOCAL # 取得模式
    start_date = "2005-01-01",
    end_date = "2024-12-31",
    report_type = "Q",
    indexes = []
) # -> pd.DataFrame or Dict[pd.DataFrame] 
```
- `ticker`: 股票代碼

- `fetch_mode` : 取得模式,為`fetcher.YOY_NOCAL` 或 `fetcher.QOQ_NOCAL`
    - `YOY_NOCAL`: 以end_date為準,取得與end_date同季的歷年資料,時間範圍以start_date為起始
        > 例如`start_date = "2020-07-01"`, `end_date = "2024-01-01"`,會回傳2020~2024的第一季資料

    - `QOQ_NOCAL`: 時間範圍內的每季資料

    - `QOQ`: 時間範圍內每季的每個index的數值以及QoQ

    - `YoY`: 以end_date為準,取得與end_date同季的歷年資料以及成長率,時間範圍以start_date為起始

- `start_date`: 開始日期,不設定時預設為`2005-01-01`

- `end_date`: 結束日期,不設定時預設為資料庫最新資料的日期

- `report_type`: 選擇哪種報告,預設為`Q`
    - `A`: 當年累計
    - `Q`: 當季數值
    - `TTM`: 移動四季 (包括當季在內,往前累計四個季度)

- `indexes`: 選擇的column,需要以TEJ提供的欄位名稱為準,不提供時或提供`[]`會回傳全部column
   - 範例輸入: `['bp41', 'bp51']`

[TEJ資料集連結](https://tquant.tejwin.com/%E8%B3%87%E6%96%99%E9%9B%86/)
請看 `會計師簽證財務資料`

#### 回傳資料
##### `YOY_NOCAL` 與 `QOQ_NOCAL` 
為回傳`pd.DataFrame`,column名稱為<年份>Q<季>, row名稱為指定財報項目

```Python
# fetch_mode = fetcher.FetchMode.QOQ_NOCAL
        2024Q3        2024Q2        2024Q1
bp41  7.082005e+07  6.394707e+07  5.761001e+07
bp51  3.111298e+09  3.145373e+09  3.091985e+09

# fetch_mode = fetcher.FetchMode.YOY_NOCAL
        2024Q3        2023Q3        2022Q3
bp41  7.082005e+07  5.377231e+07  6.201822e+07
bp51  3.111298e+09  3.173919e+09  2.453840e+09
```

##### `YOY` 與 `QOQ`
回傳為`Dict[pd.DataFrame]`, key 為指定的index, DataFrame中則是該index歷年的數值與成長率
成長率單位為`%`
```Python
# fetch_mode = fetcher.FetchMode.QOQ
{
'bp41':               
        2024Q3        2024Q2        2024Q1
value   7.082005e+07  6.394707e+07  5.761001e+07
growth        10.75%        11.00%         0.55%, 
'bp51':               
        2024Q3        2024Q2        2024Q1
value   3.111298e+09  3.145373e+09  3.091985e+09
growth        -1.08%         1.73%         -0.42%
}

# fetch_mode = fetcher.FetchMode.YOY
{
'bp41':               
        2024Q3        2023Q3        2022Q3
value   7.082005e+07  5.377231e+07  6.201822e+07
YoY_1    31.70%        -13.30%         41.31%
YoY_3    17.29%          9.56%         18.83%
YoY_5    13.89%         12.15%         16.43%
YoY_10   12.55%         13.56%         15.60% ,
'bp51':               
        2024Q3        2023Q3        2022Q3
value   3.111298e+09  3.173919e+09  2.453840e+09
YoY_1         -1.97%        29.34%        31.80%           
YoY_3         18.67%        27.67%        26.39% 
YoY_5         20.68%        24.80%        18.15%           
YoY_10        14.20%        15.87%        15.51%           
}
```

### 公司自結資料
```Python
from neurostats_API import FinanceReportFetcher

fetcher = FinanceReportFetcher(
    mongo_uri = mongo_uri,
    db_name = db_name,
    collection_name = collection_name
)

data = fetcher.get(
    ticker = "2330" # 任意的股票代碼
    fetch_mode = fetcher.FetchMode.QOQ_NOCAL # 取得模式
    start_date = "2005-01-01",
    end_date = "2024-12-31",
    report_type = "Q",
    indexes = []
) # -> pd.DataFrame or Dict[pd.DataFrame] 
```
- `ticker`: 股票代碼

- `fetch_mode` : 取得模式,為`fetcher.YOY_NOCAL` 或 `fetcher.QOQ_NOCAL`
    - `YOY_NOCAL`: 以end_date為準,取得與end_date同季的歷年資料,時間範圍以start_date為起始
        > 例如`start_date = "2020-07-01"`, `end_date = "2024-01-01"`,會回傳2020~2024的第一季資料

    - `QOQ_NOCAL`: 時間範圍內的每季資料

    - `QOQ`: 時間範圍內每季的每個index的數值以及QoQ

    - `YoY`: 以end_date為準,取得與end_date同季的歷年資料以及成長率,時間範圍以start_date為起始

- `start_date`: 開始日期,不設定時預設為`2005-01-01`

- `end_date`: 結束日期,不設定時預設為資料庫最新資料的日期

- `report_type`: 選擇哪種報告,預設為`Q`
    - `A`: 當年累計
    - `Q`: 當季數值
    - `TTM`: 移動四季 (包括當季在內,往前累計四個季度)

- `indexes`: 選擇的column,需要以TEJ提供的欄位名稱為準,不提供時或提供`[]`會回傳全部column
   - 範例輸入: `['bp41', 'bp51']`

[TEJ資料集連結](https://tquant.tejwin.com/%E8%B3%87%E6%96%99%E9%9B%86/)
請看 `公司自結數`

### 開高低收
```Python
mongo_uri = <MongoDB 的 URI>
db_name = 'company' # 連接的DB名稱
collection_name = "TWN/APIPRCD" # 連接的collection對象
from neurostats_API import TEJStockPriceFetcher

fetcher = TEJStockPriceFetcher(
    mongo_uri = mongo_uri,
    db_name = db_name,
    collection_name = collection_name
)

data = fetcher.get(
    ticker = "2330" # 任意的股票代碼
    start_date = "2005-01-01",
    period = "3m"
) # -> pd.DataFrame
```
- `ticker`: 股票代碼
- `start_date`: 搜尋範圍的開始日期
- `period`: 搜尋的時間範圍長度

`period`與`start_date`同時存在時以period優先

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/NeurowattStats/NeuroStats_API.git",
    "name": "neurostats-API",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": null,
    "keywords": null,
    "author": "JasonWang@Neurowatt",
    "author_email": "jason@neurowatt.ai",
    "download_url": "https://files.pythonhosted.org/packages/09/89/aa9be746b0dad93269d9f7862d1dc65ea03dcba25bc1596aee6b12ecd826/neurostats_api-0.0.25.tar.gz",
    "platform": null,
    "description": "# neurostats_API\n\n- [\u6a94\u6848\u67b6\u69cb](#\u6a94\u6848\u67b6\u69cb)\n- [\u4f7f\u7528\u65b9\u6cd5](#\u4f7f\u7528\u65b9\u6cd5)\n    - [\u4e0b\u8f09](#\u4e0b\u8f09)\n    - [\u50f9\u503c\u6295\u8cc7](#\u5f97\u5230\u6700\u65b0\u4e00\u671f\u7684\u8a55\u50f9\u8cc7\u6599\u8207\u6b77\u5e74\u8a55\u50f9)\n        - [\u6b77\u53f2\u8a55\u50f9](#\u5f97\u5230\u6307\u5b9a\u516c\u53f8\u7684\u6b77\u4f86\u8a55\u50f9)\n    - [\u8ca1\u52d9\u5206\u6790-\u91cd\u8981\u6307\u6a19](#\u8ca1\u52d9\u5206\u6790-\u91cd\u8981\u6307\u6a19)\n    - [\u6708\u71df\u6536\u8868](#\u56de\u50b3\u6708\u71df\u6536\u8868)\n    - [\u640d\u76ca\u8868](#\u640d\u76ca\u8868)\n    - [\u8cc7\u7522\u8ca0\u50b5\u8868](#\u8cc7\u7522\u8ca0\u50b5\u8868)\n    - [\u73fe\u91d1\u6d41\u91cf\u8868](#\u73fe\u91d1\u6d41\u91cf\u8868)\n    - [\u6cd5\u4eba\u4ea4\u6613](#\u6cd5\u4eba\u4ea4\u6613)\n    - [\u8cc7\u5238\u9918\u984d](#\u8cc7\u5238\u9918\u984d)\n    - [\u7248\u672c\u7d00\u9304](#\u7248\u672c\u7d00\u9304)\n\n\n## \u6a94\u6848\u67b6\u69cb\n\n```\n\u251c\u2500\u2500 neurostats_API\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 __init__.py\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 cli.py\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 main.py\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 fetchers\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 __init__.py\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 base.py\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 balance_sheet.py\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 cash_flow.py\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 finance_overview.py\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 profit_lose.py\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 tech.py\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 value_invest.py\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 tools\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 balance_sheet.yaml\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 cash_flow_percentage.yaml\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 finance_overview_dict.yaml\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 profit_lose.yaml\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 seasonal_data_field_dict.txt\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 utils\n\u2502\u00a0\u00a0     \u251c\u2500\u2500__init__.py\n\u2502\u00a0\u00a0     \u251c\u2500\u2500 data_process.py\n\u2502\u00a0\u00a0     \u251c\u2500\u2500 datetime.py\n\u2502\u00a0\u00a0     \u251c\u2500\u2500 db_client.py\n\u2502\u00a0\u00a0     \u2514\u2500\u2500 fetcher.py\n\u251c\u2500\u2500  test\n\u2502    \u251c\u2500\u2500 __init__.py\n\u2502    \u2514\u2500\u2500 test_fetchers.py\n\u251c\u2500\u2500 Makefile\n\u251c\u2500\u2500 MANIFEST.in\n\u251c\u2500\u2500 README.md\n\u251c\u2500\u2500 requirement.txt\n\u251c\u2500\u2500 setup.py\n\n```\n- `neurostats_API`: \u4e3b\u8981\u7684package\u904b\u884c\u5167\u5bb9\n   - `fetchers`: \u56de\u50b3service\u5167\u5bb9\u7684fetcher\u6a94\u6848\u593e\n      - `base.py`: \u57fa\u672c\u67b6\u69cb\n      - `value_invest.py`: iFa.ai -> \u50f9\u503c\u6295\u8cc7\n      - `finance_overview.py`: iFa.ai -> \u8ca1\u52d9\u5206\u6790 -> \u91cd\u8981\u6307\u6a19\n      - `tech.py`: iFa.ai -> \u6280\u8853\u6307\u6a19\n   - `tools`: \u5b58\u653e\u5404\u7a2e\u8a2d\u5b9a\u6a94\u8207\u8cc7\u6599\u5eabindex\u5c0d\u61c9\u9818\u57df\u7684dictionary\n   - `utils`: \n      - `fetcher.py`: Service\u7684\u820a\u4e3b\u67b6\u69cb, \u6708\u71df\u6536, \u640d\u76ca\u8868, \u8cc7\u7522\u8ca0\u50b5\u8868, \u8cc7\u7522\u6536\u76ca\u8868\u76ee\u524d\u5728\u9019\u88e1\n      - `data_process.py`: config\u8cc7\u6599\u7684\u8b80\u53d6\n      - `datetime.py`: \u6642\u9593\u683c\u5f0f\uff0c\u5305\u62ec\u65e5\u671f,\u5e74\u5ea6,\u6708\u4efd,\u65e5,\u5b63\u5ea6\n\n## \u4e0b\u8f09\n```\npip install neurostats-API\n```\n### \u78ba\u8a8d\u4e0b\u8f09\u6210\u529f\n```Python \n>>> import neurostats_API\n>>> print(neurostats_API.__version__)\n0.0.25\n```\n\n### \u5f97\u5230\u6700\u65b0\u4e00\u671f\u7684\u8a55\u50f9\u8cc7\u6599\u8207\u6b77\u5e74\u8a55\u50f9\n``` Python\nfrom neurostats_API.utils import ValueFetcher, DBClient\ndb_client = DBClient(\"<\u9023\u63a5\u7684DB\u4f4d\u7f6e>\").get_client()\nticker = \"2330\" # \u63db\u6210tw50\u5167\u4efb\u610fticker\nfetcher = ValueFetcher(ticker, db_client)\n\nfetcher.query_data()\n```\n\n#### \u56de\u50b3(2330\u70ba\u4f8b)\n```Python\n{\n    \"ticker\": \u80a1\u7968\u4ee3\u78bc,\n    \"company_name\": \u516c\u53f8\u4e2d\u6587\u540d\u7a31,\n    \"daily_data\":{\n    ## \u4ee5\u4e0b\u516b\u500b\u662fiFa\u9805\u76ee\n        \"P_E\": \u672c\u76ca\u6bd4,\n        \"P_B\": \u80a1\u50f9,\n        \"P_FCF\": \u80a1\u50f9\u81ea\u7531\u73fe\u91d1\u6d41\u6bd4,\n        \"P_S\": \u80a1\u50f9\u71df\u6536\u6bd4,\n        \"EV_EBIT: ,\n        \"EV_EBITDA\": ,\n        \"EV_OPI\": ,\n        \"EV_S\"; \n    ## \u4ee5\u4e0a\u516b\u500b\u662fiFa\u9805\u76ee\n        \"close\": \u6536\u76e4\u50f9,\n    }\n\n    \"yearly_data\": pd.DataFrame (\u4e0b\u8868\u683c\u70ba\u7bc4\u4f8b)\n        year    P_E       P_FCF   P_B        P_S     EV_OPI    EV_EBIT   EV_EBITDA       EV_S\n    0   107  16.68   29.155555  3.71  11.369868  29.837201  28.798274  187.647704  11.107886\n    1   108  26.06   67.269095  5.41  17.025721  50.145736  47.853790  302.526388  17.088863\n    2   109  27.98   95.650723  7.69  22.055379  53.346615  51.653834  205.847232  22.481951\n    3   110  27.83  149.512474  7.68  22.047422  55.398018  54.221387  257.091893  22.615355\n    4   111  13.11   48.562021  4.25  11.524975  24.683850  24.226554   66.953260  12.129333\n    5   112  17.17  216.371410  4.59  16.419533  40.017707  37.699267  105.980652  17.127656\n    6  \u904e\u53bb4\u5b63    NaN -24.929987   NaN  4.300817      83.102921   55.788996 -1073.037084  7.436656\n}\n```\n> \u9019\u88e1\u6709Nan\u662f\u56e0\u70ba\u672c\u76ca\u6bd4\u8207P/B\u7b49\u8cc7\u6599\u6c92\u6709\u722c\u5230\u6700\u65b0\u7684\u6642\u9593\n\n### \u5f97\u5230\u6307\u5b9a\u516c\u53f8\u7684\u6b77\u4f86\u8a55\u50f9\n``` Python\nfrom neurostats_API.utils import ValueFetcher, DBClient\ndb_client = DBClient(\"<\u9023\u63a5\u7684DB\u4f4d\u7f6e>\").get_client()\nticker = \"2330\" # \u63db\u6210tw50\u5167\u4efb\u610fticker\nfetcher = ValueFetcher(ticker, db_client)\n\nfetcher.query_value_serie()\n```\n#### \u56de\u50b3(2330\u70ba\u4f8b)\n```Python\n{\n'EV_EBIT':               EV_EBIT\n        2014-01-02        NaN\n        2014-01-03        NaN\n        ...               ...\n        2024-12-12  15.021431\n        2024-12-13  15.088321\n,\n'EV_OPI':                EV_OPI\n        2014-01-03        NaN\n        ...               ...\n        2024-12-12  15.999880\n        2024-12-13  16.071128\n,\n'EV_S':                 EV_S\n        2014-01-02       NaN\n        2014-01-03       NaN\n        ...              ...\n        2024-12-12  6.945457\n        2024-12-13  6.976385\n,\n'P_B':              P_B\n        2014-01-02   NaN\n        2014-01-03   NaN\n        ...          ...\n        2024-12-12  6.79\n        2024-12-13  6.89\n,\n'P_E':               P_E\n        2014-01-02    NaN\n        2014-01-03    NaN\n        ...           ...\n        2024-12-12  26.13\n        2024-12-13  26.50\n,\n'P_FCF':                 P_FCF\n        2014-01-02        NaN\n        2014-01-03        NaN\n        ...               ...\n        2024-12-12  45.302108\n        2024-12-13  45.515797\n,\n'P_S':                  P_S\n        2014-01-02       NaN\n        2014-01-03       NaN\n        ...              ...\n        2024-12-12  6.556760\n        2024-12-13  6.587688\n}\n```\n\n\n### \u56de\u50b3\u6708\u71df\u6536\u8868\n``` Python\nfrom neurostats_API.fetchers import MonthRevenueFetcher, DBClient\ndb_client = DBClient(\"<\u9023\u63a5\u7684DB\u4f4d\u7f6e>\").get_client()\nticker = \"2330\" # \u63db\u6210tw50\u5167\u4efb\u610fticker\nfetcher = MonthRevenueFetcherFetcher(ticker, db_client)\ndata = fetcher.query_data()\n```\n\n#### \u56de\u50b3\n```Python\n{\n        \"ticker\": \"2330\",\n        \"company_name\": \"\u53f0\u7a4d\u96fb\",\n        \"month_revenue\":\n        year                 2024  ...        2014\n        month                      ...\n        grand_total  2.025847e+09  ...         NaN\n        12                    NaN  ...  69510190.0\n        ...                   ...  ...         ...\n        2            1.816483e+08  ...  46829051.0\n        1            2.157851e+08  ...  51429993.0\n\n        \"this_month_revenue_over_years\":\n        year                             2024  ...        2015\n        revenue                  2.518727e+08  ...  64514083.0\n        revenue_increment_ratio  3.960000e+01  ...       -13.8\n        ...                               ...  ...         ...\n        YoY_5                    1.465200e+02  ...         NaN\n        YoY_10                            NaN  ...         NaN\n\n        \"grand_total_over_years\":\n        year                                 2024  ...          2015\n        grand_total                  2.025847e+09  ...  6.399788e+08\n        grand_total_increment_ratio  3.187000e+01  ...  1.845000e+01\n        ...                                   ...  ...           ...\n        grand_total_YoY_5            1.691300e+02  ...           NaN\n        grand_total_YoY_10                    NaN  ...           NaN\n\n        \"recent_month_revenue\":\n        date           2024/11      2024/10  ...       2024/1      2023/12\n        revenue    51243946000  45451116000  ...  56451418000  55329015000\n        MoM             12.75%      -14.77%  ...        2.03%       -0.52%\n        YoY             -7.87%      -30.00%  ...       -7.36%      -11.13%\n        total_YoY       -6.93%       -6.84%  ...       -7.36%      -15.97%\n        accum_YoY       85.84%       78.65%  ...        7.92%       84.03%\n        # total_YoY\u70ba\u7576\u6708\u7d2f\u8a08\u71df\u6536 / \u4e0a\u4e00\u5e74\u7684\u7576\u6708\u7d2f\u8a08\u71df\u6536\n        # accum_YoY\u70ba\u7576\u6708\u7d2f\u8a08\u71df\u6536 / \u4e0a\u4e00\u5e74\u7684\u7e3d\u71df\u6536\n\n}\n```\n- `'ticker'`: \u80a1\u7968\u4ee3\u78bc\n- `'company_name'`: \u516c\u53f8\u540d\u7a31 \n- `'month_revenue'`: \u6b77\u5e74\u7684\u6708\u71df\u6536\u4ee5\u53ca\u5230\u4eca\u5e74\u6700\u65b0\u6708\u4efd\u7d2f\u8a08\u7684\u6708\u71df\u6536\u8868\u683c \n- `'this_month_revenue_over_years'`: \u4eca\u5e74\u9019\u500b\u6708\u7684\u6708\u71df\u6536\u8207\u6b77\u5e74\u540c\u6708\u4efd\u7684\u71df\u6536\u6bd4\u8f03\n- `'grand_total_over_years'`: \u7d2f\u8a08\u81f3\u4eca\u5e74\u9019\u500b\u6708\u7684\u6708\u71df\u6536\u8207\u6b77\u5e74\u7684\u6bd4\u8f03\n\n> \u5927\u90e8\u5206\u8cc7\u6599(\u6210\u9577\u7387)\u7f3a\u5931\u662f\u56e0\u70ba\u5c1a\u672a\u8a08\u7b97\uff0c\u50c5\u5148\u586b\u4e0a\u5df2\u7d93\u6709\u7684\u8cc7\u6599\n\n\n### \u8ca1\u52d9\u5206\u6790: \u91cd\u8981\u6307\u6a19\n\u5c0d\u61c9https://ifa.ai/tw-stock/2330/finance-overview\n```Python\nfrom neurostats_API.fetchers import FinanceOverviewFetcher, DBClient\ndb_client = DBClient(\"<\u9023\u63a5\u7684DB\u4f4d\u7f6e>\").get_client()\nticker = \"2330\"\nfetcher = FinanceOverviewFetcher(ticker = \"2330\", db_client = db_client)\ndata = fetcher.query_data()\n```\n\n#### \u56de\u50b3\n\u578b\u614b\u70baDict:\n```Python\n{\n        ticker: str #\u80a1\u7968\u4ee3\u78bc,\n        company_name: str #\u516c\u53f8\u540d\u7a31,\n        seasonal_data: Dict # \u56de\u50b3\u8cc7\u6599\n}\n```\n\n\u4ee5\u4e0b\u70baseasonal_data\u76ee\u524d\u56de\u50b3\u7684key\u7684\u4e2d\u82f1\u5c0d\u61c9(\u4e2d\u6587\u7686\u53c3\u7167iFa.ai)\n\nmarkdown\n\u8907\u88fd\u7a0b\u5f0f\u78bc\n| \u82f1\u6587                                | \u4e2d\u6587                          |\n|-----------------------------------|-----------------------------|\n|**\u8ca1\u52d9\u6982\u6cc1**|\n| revenue                           | \u71df\u696d\u6536\u5165                     |\n| gross_profit                      | \u71df\u696d\u6bdb\u5229                     |\n| operating_income                  | \u71df\u696d\u5229\u76ca                     |\n| net_income                        | \u6de8\u5229                        |\n| operating_cash_flow               | \u71df\u696d\u6d3b\u52d5\u4e4b\u73fe\u91d1\u6d41              |\n| invest_cash_flow                  | \u6295\u8cc7\u6d3b\u52d5\u4e4b\u6de8\u73fe\u91d1\u6d41             |\n| financing_cash_flow               | \u7c4c\u8cc7\u6d3b\u52d5\u4e4b\u6de8\u73fe\u91d1\u6d41             |\n|**\u6bcf\u80a1\u8ca1\u52d9\u72c0\u6cc1**|\n| revenue_per_share                 | \u6bcf\u80a1\u71df\u6536                     |\n| gross_per_share                   | \u6bcf\u80a1\u71df\u696d\u6bdb\u5229                  |\n| operating_income_per_share        | \u6bcf\u80a1\u71df\u696d\u5229\u76ca                  |\n| eps                               | \u6bcf\u80a1\u76c8\u9918(EPS)                |\n| operating_cash_flow_per_share     | \u6bcf\u80a1\u71df\u696d\u73fe\u91d1\u6d41                |\n| fcf_per_share                     | \u6bcf\u80a1\u81ea\u7531\u73fe\u91d1\u6d41                |\n| debt_to_operating_cash_flow       | \u6bcf\u80a1\u6709\u606f\u8ca0\u50b5                  |\n| equity                            | \u6bcf\u80a1\u6de8\u503c                     |\n|**\u7372\u5229\u80fd\u529b**|\n| roa                               | \u8cc7\u7522\u5831\u916c\u7387                    |\n| roe                               | \u80a1\u6771\u6b0a\u76ca\u5831\u916c\u7387                 |\n| gross_over_asset                  | \u71df\u696d\u6bdb\u5229\u00f7\u7e3d\u8cc7\u7522               |\n| roce                              | ROCE                        |\n| gross_profit_margin               | \u71df\u696d\u6bdb\u5229\u7387                    |\n| operation_profit_rate             | \u71df\u696d\u5229\u76ca\u7387                    |\n| net_income_rate                   | \u6de8\u5229\u7387                       |\n| operating_cash_flow_profit_rate   | \u71df\u696d\u73fe\u91d1\u6d41\u5229\u6f64\u7387               |\n|**\u6210\u9577\u52d5\u80fd**|\n| revenue_YoY                       | \u71df\u6536\u5e74\u6210\u9577\u7387                  |\n| gross_prof_YoY                    | \u71df\u696d\u6bdb\u5229\u5e74\u6210\u9577\u7387               |\n| operating_income_YoY              | \u71df\u696d\u5229\u76ca\u5e74\u6210\u9577\u7387               |\n| net_income_YoY                    | \u6de8\u5229\u5e74\u6210\u9577\u7387                  |\n|**\u71df\u904b\u6307\u6a19**|\n| dso                               | \u61c9\u6536\u5e33\u6b3e\u6536\u73fe\u5929\u6578               |\n| account_receive_over_revenue      | \u61c9\u6536\u5e33\u6b3e\u4f54\u71df\u6536\u6bd4\u7387             |\n| dio                               | \u5e73\u5747\u552e\u8ca8\u5929\u6578                  |\n| inventories_revenue_ratio         | \u5b58\u8ca8\u4f54\u71df\u6536\u6bd4\u7387                |\n| dpo                               | \u61c9\u4ed8\u5e33\u6b3e\u4ed8\u73fe\u65e5\u5929\u6578             |\n| cash_of_conversion_cycle          | \u73fe\u91d1\u5faa\u74b0\u9031\u671f                  |\n| asset_turnover                    | \u7e3d\u8cc7\u7522\u9031\u8f49\u7387                  |\n| applcation_turnover               | \u4e0d\u52d5\u7522\u3001\u5ee0\u623f\u53ca\u8a2d\u5099\u9031\u8f49\u7387        |\n|**\u8ca1\u52d9\u97cc\u6027**|\n| current_ratio                     | \u6d41\u52d5\u6bd4\u7387                     |\n| quick_ratio                       | \u901f\u52d5\u6bd4\u7387                     |\n| debt_to_equity_ratio              | \u8ca0\u50b5\u6b0a\u76ca\u6bd4\u7387                  |\n| net_debt_to_equity_ratio          | \u6de8\u8ca0\u50b5\u6b0a\u76ca\u6bd4\u7387                |\n| interest_coverage_ratio           | \u5229\u606f\u4fdd\u969c\u500d\u6578                  |\n| debt_to_operating_cash_flow       | \u6709\u606f\u8ca0\u50b5\u00f7\u71df\u696d\u6d3b\u52d5\u73fe\u91d1\u6d41         |\n| debt_to_free_cash_flow            | \u6709\u606f\u8ca0\u50b5\u00f7\u81ea\u7531\u73fe\u91d1\u6d41            |\n| cash_flow_ratio                   | \u73fe\u91d1\u6d41\u91cf\u6bd4\u7387                  |\n|**\u8cc7\u7522\u8ca0\u50b5\u8868**|\n| current_assets                    | \u6d41\u52d5\u8cc7\u7522                     |\n| current_liabilities               | \u6d41\u52d5\u8ca0\u50b5                     |\n| non_current_assets      | \u975e\u6d41\u52d5\u8cc7\u7522                    |\n| non_current_liabilities| \u975e\u6d41\u52d5\u8ca0\u50b5                    |\n| total_asset                       | \u8cc7\u7522\u7e3d\u984d                     |\n| total_liabilities                 | \u8ca0\u50b5\u7e3d\u984d                     |\n| equity                            | \u6b0a\u76ca                        |\n\n#### \u4ee5\u4e0b\u6578\u503c\u672a\u5728\u56de\u50b3\u8cc7\u6599\u4e2d\uff0c\u5f85\u8cc7\u6599\u5eab\u66f4\u65b0 \n|\u82f1\u6587|\u4e2d\u6587|\n|---|----|\n|**\u6210\u9577\u52d5\u80fd**|\n| operating_cash_flow_YoY | \u71df\u696d\u73fe\u91d1\u6d41\u5e74\u6210\u9577\u7387             |\n| fcf_YoY  | \u81ea\u7531\u73fe\u91d1\u6d41\u5e74\u6210\u9577\u7387             |\n| operating_cash_flow_per_share_YoY | \u6bcf\u80a1\u71df\u696d\u73fe\u91d1\u6d41\u5e74\u6210\u9577\u7387          |\n| fcf_per_share_YoY | \u6bcf\u80a1\u81ea\u7531\u73fe\u91d1\u6d41\u5e74\u6210\u9577\u7387          |\n\n### \u640d\u76ca\u8868\n```Python\nfrom neurostats_API.fetchers import ProfitLoseFetcher, DBClient\ndb_client = DBClient(\"<\u9023\u63a5\u7684DB\u4f4d\u7f6e>\").get_client()\nfetcher = ProfitLoseFetcher(db_client)\nticker = \"2330\" # \u63db\u6210tw50\u5167\u4efb\u610fticker\ndata = fetcher.query_data()\n```\n   \n#### \u56de\u50b3\n\u56e0\u9805\u76ee\u773e\u591a\uff0c\u4e0d\u5217\u51fa\u8a73\u7d30\u5167\u5bb9\uff0c\u50c5\u5217\u51fa\u76ee\u524d\u6703\u56de\u50b3\u7684\u9805\u76ee\n```Python\n{\n        \"ticker\": \"2330\"\n        \"company_name\": \"\u53f0\u7a4d\u96fb\"\n        # \u4ee5\u4e0b\u7686\u70bapd.DataFrame\n        \"profit_lose\":  #\u640d\u76ca\u8868,\n        \"grand_total_profit_lose\": #\u4eca\u5e74\u5ea6\u7d2f\u8a08\u640d\u76ca\u8868,\n        # \u71df\u696d\u6536\u5165\n        \"revenue\": # \u71df\u6536\u6210\u9577\u7387\n        \"grand_total_revenue\": # \u71df\u6536\u7d2f\u8a08\u6210\u5834\u6ffe\n        # \u6bdb\u5229\n        \"gross_profit\": # \u6bdb\u5229\u6210\u9577\u7387\n        \"grand_total_gross_profit\": # \u7d2f\u8a08\u6bdb\u5229\u6210\u9577\u7387\n        \"gross_profit_percentage\": # \u6bdb\u5229\u7387\n        \"grand_total_gross_profit_percentage\" # \u7d2f\u8a08\u6bdb\u5229\u7387\n        # \u71df\u5229\n        \"operating_income\": # \u71df\u5229\u6210\u9577\u7387\n        \"grand_total_operating_income\": # \u7d2f\u8a08\u71df\u5229\u6210\u9577\u7387\n        \"operating_income_percentage\": # \u71df\u5229\u7387\n        \"grand_total_operating_income_percentage\": # \u7d2f\u8a08\u71df\u5229\u7387\n        # \u7a05\u524d\u6de8\u5229\n        \"net_income_before_tax\": # \u7a05\u524d\u6de8\u5229\u6210\u9577\u7387\n        \"grand_total_net_income_before_tax\": # \u7d2f\u8a08\u7a05\u524d\u6de8\u5229\u6210\u9577\u7387\n        \"net_income_before_tax_percentage\": # \u7a05\u524d\u6de8\u5229\u7387\n        \"grand_total_net_income_before_tax_percentage\": # \u7d2f\u8a08\u7a05\u524d\u6de8\u5229\u7387\n        # \u672c\u671f\u6de8\u5229\n        \"net_income\": # \u672c\u671f\u6de8\u5229\u6210\u9577\u7387\n        \"grand_total_net_income\": # \u7d2f\u8a08\u672c\u671f\u6de8\u5229\u6210\u9577\u7387\n        \"net_income_percentage\": # \u672c\u671f\u6de8\u5229\u7387\n        \"grand_total_income_percentage\": # \u7d2f\u8a08\u672c\u671f\u6de8\u5229\u7387\n        # EPS\n        \"EPS\":  # EPS\n        \"EPS_growth\":  # EPS\u6210\u9577\u7387\n        \"grand_total_EPS\": # \u7d2f\u8a08EPS\n        \"grand_total_EPS_growth\": # \u7d2f\u8a08EPS\u6210\u9577\u7387\n}\n```\n\n### \u8cc7\u7522\u8ca0\u50b5\u8868\n``` Python\nfrom neurostats_API.fetchers import BalanceSheetFetcher, DBClient\ndb_client = DBClient(\"<\u9023\u63a5\u7684DB\u4f4d\u7f6e>\").get_client()\nticker = \"2330\" # \u63db\u6210tw50\u5167\u4efb\u610fticker\nfetcher = BalanceSheetFetcher(ticker, db_client)\n\nfetcher.query_data()\n```\n\n#### \u56de\u50b3\n```Python\n{\n        \"ticker\": \"2330\"\n        \"company_name\":\"\u53f0\u7a4d\u96fb\"\n        \"balance_sheet\":\n                2024Q2_value  ...  2018Q2_percentage\n        \u6d41\u52d5\u8cc7\u7522                   NaN  ...                NaN\n        \u73fe\u91d1\u53ca\u7d04\u7576\u73fe\u91d1       1.799127e+09  ...              30.79\n        ...                    ...  ...                ...\n        \u907f\u96aa\u4e4b\u884d\u751f\u91d1\u878d\u8ca0\u50b5\uff0d\u6d41\u52d5           NaN  ...               0.00\n        \u8ca0\u50b5\u6e96\u5099\uff0d\u6d41\u52d5                NaN  ...               0.00\n\n        \"total_asset\":\n        2024Q2_value  ...  2018Q2_percentage\n        \u8cc7\u7522\u7e3d\u984d  5.982364e+09  ...             100.00\n        \u8ca0\u50b5\u7e3d\u984d  2.162216e+09  ...              27.41\n        \u6b0a\u76ca\u7e3d\u984d  3.820148e+09  ...              72.59\n\n\n        \"current_asset\":\n                2024Q2_value  ...  2018Q2_percentage\n        \u6d41\u52d5\u8cc7\u7522\u5408\u8a08  2.591658e+09  ...               46.7\n\n        \"non_current_asset\":\n                2024Q2_value  ...  2018Q2_percentage\n        \u975e\u6d41\u52d5\u8cc7\u7522\u5408\u8a08  3.390706e+09  ...               53.3\n\n        \"current_debt\":\n                2024Q2_value  ...  2018Q2_percentage\n        \u6d41\u52d5\u8ca0\u50b5\u5408\u8a08  1.048916e+09  ...              22.55\n\n        \"non_current_debt\":\n                2024Q2_value  ...  2018Q2_percentage\n        \u975e\u6d41\u52d5\u8ca0\u50b5\u5408\u8a08  1.113300e+09  ...               4.86\n\n        \"equity\":\n        2024Q2_value  ...  2018Q2_percentage\n        \u6b0a\u76ca\u7e3d\u984d  3.820148e+09  ...              72.59\n\n}\n```\n- `'ticker'`: \u80a1\u7968\u4ee3\u78bc\n- `'company_name'`: \u516c\u53f8\u540d\u7a31 \n- `'balance_sheet'`: \u6b77\u5e74\u7576\u5b63\u8cc7\u5834\u8ca0\u50b5\u8868\"\u5168\u8868\" \n- `'total_asset'`: \u6b77\u5e74\u7576\u5b63\u8cc7\u7522\u7e3d\u984d \n- `'current_asset'`: \u6b77\u5e74\u7576\u5b63\u6d41\u52d5\u8cc7\u7522\u7e3d\u984d\n- `'non_current_asset'`: \u6b77\u5e74\u7576\u5b63\u975e\u6d41\u52d5\u8cc7\u7522\n- `'current_debt'`: \u6b77\u5e74\u7576\u5b63\u6d41\u52d5\u8ca0\u50b5\n- `'non_current_debt'`: \u6b77\u5e74\u7576\u5b63\u975e\u6d41\u52d5\u8ca0\u50b5\n- `'equity'`:  \u6b77\u5e74\u7576\u5b63\u6b0a\u76ca\n\n### \u73fe\u91d1\u6d41\u91cf\u8868\n``` Python\nfrom neurostats_API.fetchers import CashFlowFetcher\ndb_client = DBClient(\"<\u9023\u63a5\u7684DB\u4f4d\u7f6e>\").get_client()\nticker = 2330 # \u63db\u6210tw50\u5167\u4efb\u610fticker\nfetcher = StatsFetcher(ticker, db_client)\n\nfetcher.query()\n```\n#### \u56de\u50b3\n```Python\n{\n        \"ticker\": \"2330\"\n        \"company_name\": \"\u53f0\u7a4d\u96fb\"\n        \"cash_flow\":\n                        2023Q3_value  ...  2018Q3_percentage\n        \u71df\u696d\u6d3b\u52d5\u4e4b\u73fe\u91d1\u6d41\u91cf\uff0d\u9593\u63a5\u6cd5                  NaN  ...                NaN\n        \u7e7c\u7e8c\u71df\u696d\u55ae\u4f4d\u7a05\u524d\u6de8\u5229\uff08\u6de8\u640d\uff09         700890335.0  ...           0.744778\n        ...                            ...  ...                ...\n        \u4ee5\u6210\u672c\u8861\u91cf\u4e4b\u91d1\u878d\u8cc7\u7522\u6e1b\u8cc7\u9000\u56de\u80a1\u6b3e               NaN  ...                NaN\n        \u9664\u5217\u907f\u96aa\u4e4b\u91d1\u878d\u8ca0\u50b5\u2215\u907f\u96aa \u4e4b\u884d\u751f\u91d1\u878d\u8ca0\u50b5           NaN  ...          -0.000770\n\n        \"CASHO\":\n                        2023Q3_value  ...  2018Q3_percentage\n        \u71df\u696d\u6d3b\u52d5\u4e4b\u73fe\u91d1\u6d41\u91cf\uff0d\u9593\u63a5\u6cd5              NaN  ...                NaN\n        \u7e7c\u7e8c\u71df\u696d\u55ae\u4f4d\u7a05\u524d\u6de8\u5229\uff08\u6de8\u640d\uff09     700890335.0  ...           0.744778\n        ...                        ...  ...                ...\n        \u6301\u6709\u4f9b\u4ea4\u6613\u4e4b\u91d1\u878d\u8cc7\u7522\uff08\u589e\u52a0\uff09\u6e1b\u5c11           NaN  ...           0.001664\n        \u8ca0\u50b5\u6e96\u5099\u589e\u52a0\uff08\u6e1b\u5c11\uff09                 NaN  ...                NaN\n\n        \"CASHI\":\n                                2023Q3_value  ...  2018Q3_percentage\n        \u6295\u8cc7\u6d3b\u52d5\u4e4b\u73fe\u91d1\u6d41\u91cf                        NaN  ...                NaN\n        \u53d6\u5f97\u900f\u904e\u5176\u4ed6\u7d9c\u5408\u640d\u76ca\u6309\u516c\u5141\u50f9\u503c\u8861\u91cf\u4e4b\u91d1\u878d\u8cc7\u7522   -54832622.0  ...           0.367413\n        ...                              ...  ...                ...\n        \u6301\u6709\u81f3\u5230\u671f\u65e5\u91d1\u878d\u8cc7\u7522\u5230\u671f\u9084\u672c                   NaN  ...                NaN\n        \u53d6\u5f97\u4ee5\u6210\u672c\u8861\u91cf\u4e4b\u91d1\u878d\u8cc7\u7522                     NaN  ...                NaN\n\n        \"CASHF\":\n                        2023Q3_value  ...  2018Q3_percentage\n        \u7c4c\u8cc7\u6d3b\u52d5\u4e4b\u73fe\u91d1\u6d41\u91cf                      NaN  ...                NaN\n        \u77ed\u671f\u501f\u6b3e\u6e1b\u5c11                         0.0  ...                NaN\n        ...                            ...  ...                ...\n        \u4ee5\u6210\u672c\u8861\u91cf\u4e4b\u91d1\u878d\u8cc7\u7522\u6e1b\u8cc7\u9000\u56de\u80a1\u6b3e               NaN  ...                NaN\n        \u9664\u5217\u907f\u96aa\u4e4b\u91d1\u878d\u8ca0\u50b5\u2215\u907f\u96aa \u4e4b\u884d\u751f\u91d1\u878d\u8ca0\u50b5           NaN  ...           -0.00077\n}\n```\n- `'ticker'`: \u80a1\u7968\u4ee3\u78bc\n- `'company_name'`: \u516c\u53f8\u540d\u7a31 \n- `'cash_flow'`: \u6b77\u5e74\u7576\u5b63\u73fe\u91d1\u6d41\u91cf\u8868\"\u5168\u8868\" \n- `'CASHO'`: \u6b77\u5e74\u7576\u5b63\u71df\u904b\u6d3b\u52d5\u4e4b\u73fe\u91d1\u6d41\u91cf\n- `'CASHI'`: \u6b77\u5e74\u7576\u5b63\u6295\u8cc7\u6d3b\u52d5\u4e4b\u73fe\u91d1\u6d41\u91cf\n- `'CASHF'`: \u6b77\u5e74\u7576\u5b63\u7c4c\u8cc7\u6d3b\u52d5\u4e4b\u73fe\u91d1\u6d41\u91cf\n\n> \u5927\u90e8\u5206\u8cc7\u6599\u7f3a\u5931\u662f\u56e0\u70ba\u5c1a\u672a\u8a08\u7b97\uff0c\u50c5\u5148\u586b\u4e0a\u5df2\u7d93\u6709\u7684\u8cc7\u6599\n\n## \u7c4c\u78bc\u9762\n### \u6cd5\u4eba\u4ea4\u6613\n``` Python\nfrom neurostats_API.fetchers import InstitutionFetcher\ndb_client = DBClient(\"<\u9023\u63a5\u7684DB\u4f4d\u7f6e>\").get_client()\nticker = 2330 # \u63db\u6210tw50\u5167\u4efb\u610fticker\nfetcher = StatsFetcher(ticker, db_client)\n\nfetcher.query()\n```\n### \u56de\u50b3\n```Python\n{ 'annual_trading':       \n                        close      volume  ... \u81ea\u71df\u5546\u8cb7\u8ce3\u8d85\u80a1\u6578(\u907f\u96aa)   \u4e09\u5927\u6cd5\u4eba\u8cb7\u8ce3\u8d85\u80a1\u6578\n        2024-12-02  1035.000000  31168404.0  ...    -133215.0  11176252.0\n        2024-11-29   996.000000  40094983.0  ...     401044.0  -7880519.0\n        ...                 ...         ...  ...          ...         ...\n        2023-12-05   559.731873  22229723.0  ...       33,400  -5,988,621\n        2023-12-04   563.659790  26847171.0  ...     -135,991  -5,236,743\n\n,\n  'latest_trading': \n  { 'date': datetime.datetime(2024, 12, 2, 0, 0),\n    'table':              \n            category       variable  ...  over_buy_sell   sell\n        0   foreign  average_price  ...           0.00    0.0\n        1   foreign     percentage  ...           0.00    0.0\n        ..      ...            ...  ...            ...    ...\n        14     prop          price  ...           0.00    0.0\n        15     prop          stock  ...        -133.22  217.2\n  }\n,\n  'price': \n  { \n        '52weeks_range': '555.8038940429688-1100.0', # str\n        'close': 1035.0, # float\n        'last_close': 996.0, # float\n        'last_open': 995.0, # float\n        'last_range': '994.0-1010.0', # str\n        'last_volume': 40094.983, # float\n        'open': 1020.0, # float\n        'range': '1015.0-1040.0', # str\n        'volume': 32238.019 # float\n  }\n}\n```\n\n- `annual_trading`: \u5c0d\u61c9\u4e00\u5e74\u5167\u6bcf\u65e5\u7684\u4ea4\u6613\u91cf\n- `latest_trading`: \u5c0d\u61c9\u7576\u65e5\u4ea4\u6613\n##### \u6b04\u4f4d\u9805\u76ee\u540d\u7a31\n|\u82f1\u6587|\u4e2d\u6587\u5c0d\u61c9|\n|----|-------|\n|buy|\u8cb7\u9032|\n|sell|\u8ce3\u51fa|\n|over_buy_sell|\u8cb7\u8ce3\u8d85|\n\n##### category\u9805\u76ee\u540d\u7a31\n|\u82f1\u6587|\u4e2d\u6587\u5c0d\u61c9|\n|----|-------|\n|foreign|\u5916\u8cc7|\n|prop|\u81ea\u71df\u5546|\n|mutual|\u6295\u4fe1|\n|institutional_investor|\u4e09\u5927\u6cd5\u4eba|\n\n##### variable\u9805\u76ee\u540d\u7a31\n|\u82f1\u6587|\u4e2d\u6587\u5c0d\u61c9|\n|----|-------|\n|stock|\u80a1\u7968\u5f35\u6578|\n|price|\u6210\u4ea4\u91d1\u984d|\n|average_price|\u5747\u50f9|\n|percetage|\u4f54\u6210\u4ea4\u6bd4\u91cd|\n\n**\u6210\u4ea4\u91d1\u984d\u4ee5\u53ca\u5747\u50f9\u56e0\u70ba\u8cc7\u6599\u6c92\u6709\u722c\u5230\u800c\u7121\u6cd5\u8a08\u7b97**\n**\u4ecd\u7136\u5148\u5c07\u9019\u9805\u76ee\u52a0\u5165\uff0c\u53ea\u662f\u6578\u503c\u90fd\u6703\u662f0**\n\n- `price`: \u5c0d\u61c9\u6cd5\u4eba\u8cb7\u8ce3\u9801\u9762\u7684\u4eca\u65e5\u8207\u6628\u65e5\u4ea4\u6613\u50f9\n\u8acb\u6ce8\u610f`range`, `last_range`, `52week_range`\u9019\u4e09\u500b\u9805\u76ee\u578b\u614b\u70ba\u5b57\u4e32\uff0c\u5176\u9918\u70bafloat\n\n##### \u9805\u76ee\u540d\u7a31\n|\u82f1\u6587|\u4e2d\u6587\u5c0d\u61c9|\n|----|-------|\n|open|\u958b\u76e4\u50f9|\n|close|\u6536\u76e4\u50f9|\n|range|\u7576\u65e5\u7bc4\u570d|\n|volume|\u6210\u4ea4\u5f35\u6578|\n|last_open|\u958b\u76e4\u50f9(\u6628)|\n|last_close|\u6536\u76e4\u50f9(\u6628)|\n|last_range|\u6628\u65e5\u7bc4\u570d|\n|last_volume|\u6210\u4ea4\u5f35\u6578(\u6628)|\n|52weeks_range|52\u9031\u7bc4\u570d|\n\n## \u8cc7\u5238\u9918\u984d\n\u5c0d\u61c9iFa.ai -> \u4ea4\u6613\u8cc7\u8a0a -> \u8cc7\u5238\u8b8a\u5316\n```Python\nfrom neurostats_API.fetchers import MarginTradingFetcher\ndb_client = DBClient(\"<\u9023\u63a5\u7684DB\u4f4d\u7f6e>\").get_client()\nticker = 2330 # \u63db\u6210tw50\u5167\u4efb\u610fticker\nfetcher = MarginTradingFetcher(ticker, db_client)\n\nfetcher.query()\n```\n\n### \u56de\u50b3\n```Python\n{ 'annual_margin':                   \n                        close   volume  ...  \u501f\u5238_\u6b21\u4e00\u71df\u696d\u65e5\u53ef\u9650\u984d  \u8cc7\u5238\u4e92\u62b5\n        2024-12-03  1060.000000  29637.0  ...    12222.252   0.0\n        2024-12-02  1035.000000  31168.0  ...    12156.872   1.0\n        ...                 ...      ...  ...          ...   ...\n        2023-12-05   559.731873  22230.0  ...     7838.665   1.0\n        2023-12-04   563.659790  26847.0  ...     7722.725   2.0\n\n  'latest_trading': { \n        'date': datetime.datetime(2024, 12, 3, 0, 0),\n        'margin_trading':          \n                        financing  short_selling\n        \u8cb7\u9032           761.0           34.0\n        \u8ce3\u51fa          1979.0           44.0\n        ...            ...            ...\n        \u6b21\u4e00\u71df\u696d\u65e5\u9650\u984d  6483183.0      6483183.0\n        \u73fe\u511f             3.0           12.0\n\n\n        'security_offset': 0.0,\n        'stock_lending':           stock_lending\n                \u7576\u65e5\u8ce3\u51fa                 10\n                \u7576\u65e5\u9084\u5238                  0\n                \u7576\u65e5\u8abf\u6574                  0\n                \u7576\u65e5\u9918\u984d              14688\n                \u6b21\u4e00\u71df\u696d\u65e5\u53ef\u9650\u984d          12222\n  },\n  'price': { '52weeks_range': '555.8038940429688 - 1100.0',\n             'close': 1060.0,\n             'last_close': 1035.0,\n             'last_open': 1020.0,\n             'last_range': '1015.0 - 1040.0',\n             'last_volume': 31168.404,\n             'open': 1060.0,\n             'range': '1055.0 - 1065.0',\n             'volume': 29636.523}}\n```\n- `annual_trading`: \u5c0d\u61c9\u4e00\u5e74\u5167\u6bcf\u65e5\u7684\u8cc7\u5238\u8b8a\u5316\u91cf\n- `latest_trading`: \u5c0d\u61c9\u7576\u65e5\u4ea4\u6613\n##### \u6b04\u4f4d\u9805\u76ee\u540d\u7a31\n|\u82f1\u6587|\u4e2d\u6587\u5c0d\u61c9|\n|----|-------|\n|financing|\u878d\u8cc7|\n|short_selling|\u878d\u5238|\n\n- `price`: \u5c0d\u61c9\u6cd5\u4eba\u8cb7\u8ce3\u9801\u9762\u7684\u4eca\u65e5\u8207\u6628\u65e5\u4ea4\u6613\u50f9\n##### \u9805\u76ee\u540d\u7a31\n|\u82f1\u6587|\u4e2d\u6587\u5c0d\u61c9|\n|----|-------|\n|open|\u958b\u76e4\u50f9|\n|close|\u6536\u76e4\u50f9|\n|range|\u7576\u65e5\u7bc4\u570d|\n|volume|\u6210\u4ea4\u5f35\u6578|\n|last_open|\u958b\u76e4\u50f9(\u6628)|\n|last_close|\u6536\u76e4\u50f9(\u6628)|\n|last_range|\u6628\u65e5\u7bc4\u570d|\n|last_volume|\u6210\u4ea4\u5f35\u6578(\u6628)|\n|52weeks_range|52\u9031\u7bc4\u570d|\n\n\u8acb\u6ce8\u610f`range`, `last_range`, `52week_range`\u9019\u4e09\u500b\u9805\u76ee\u578b\u614b\u70ba\u5b57\u4e32\uff0c\u5176\u9918\u70bafloat\n\n\n## TEJ \u76f8\u95dc\n### \u6703\u8a08\u5e2b\u7c3d\u8b49\u8ca1\u52d9\u8cc7\u6599\n```Python\nfrom neurostats_API import FinanceReportFetcher\n\nmongo_uri = <MongoDB \u7684 URI>\ndb_name = 'company' # \u9023\u63a5\u7684DB\u540d\u7a31\ncollection_name = \"TWN/AINVFQ1\" # \u9023\u63a5\u7684collection\u5c0d\u8c61\n\nfetcher = FinanceReportFetcher(\n    mongo_uri = mongo_uri,\n    db_name = db_name,\n    collection_name = collection_name\n)\n\ndata = fetcher.get(\n    ticker = \"2330\" # \u4efb\u610f\u7684\u80a1\u7968\u4ee3\u78bc\n    fetch_mode = fetcher.FetchMode.QOQ_NOCAL # \u53d6\u5f97\u6a21\u5f0f\n    start_date = \"2005-01-01\",\n    end_date = \"2024-12-31\",\n    report_type = \"Q\",\n    indexes = []\n) # -> pd.DataFrame or Dict[pd.DataFrame] \n```\n- `ticker`: \u80a1\u7968\u4ee3\u78bc\n\n- `fetch_mode` : \u53d6\u5f97\u6a21\u5f0f\uff0c\u70ba`fetcher.YOY_NOCAL` \u6216 `fetcher.QOQ_NOCAL`\n    - `YOY_NOCAL`: \u4ee5end_date\u70ba\u6e96\uff0c\u53d6\u5f97\u8207end_date\u540c\u5b63\u7684\u6b77\u5e74\u8cc7\u6599\uff0c\u6642\u9593\u7bc4\u570d\u4ee5start_date\u70ba\u8d77\u59cb\n        > \u4f8b\u5982`start_date = \"2020-07-01\"`, `end_date = \"2024-01-01\"`\uff0c\u6703\u56de\u50b32020~2024\u7684\u7b2c\u4e00\u5b63\u8cc7\u6599\n\n    - `QOQ_NOCAL`: \u6642\u9593\u7bc4\u570d\u5167\u7684\u6bcf\u5b63\u8cc7\u6599\n\n    - `QOQ`: \u6642\u9593\u7bc4\u570d\u5167\u6bcf\u5b63\u7684\u6bcf\u500bindex\u7684\u6578\u503c\u4ee5\u53caQoQ\n\n    - `YoY`: \u4ee5end_date\u70ba\u6e96\uff0c\u53d6\u5f97\u8207end_date\u540c\u5b63\u7684\u6b77\u5e74\u8cc7\u6599\u4ee5\u53ca\u6210\u9577\u7387\uff0c\u6642\u9593\u7bc4\u570d\u4ee5start_date\u70ba\u8d77\u59cb\n\n- `start_date`: \u958b\u59cb\u65e5\u671f\uff0c\u4e0d\u8a2d\u5b9a\u6642\u9810\u8a2d\u70ba`2005-01-01`\n\n- `end_date`: \u7d50\u675f\u65e5\u671f\uff0c\u4e0d\u8a2d\u5b9a\u6642\u9810\u8a2d\u70ba\u8cc7\u6599\u5eab\u6700\u65b0\u8cc7\u6599\u7684\u65e5\u671f\n\n- `report_type`: \u9078\u64c7\u54ea\u7a2e\u5831\u544a\uff0c\u9810\u8a2d\u70ba`Q`\n    - `A`: \u7576\u5e74\u7d2f\u8a08\n    - `Q`: \u7576\u5b63\u6578\u503c\n    - `TTM`: \u79fb\u52d5\u56db\u5b63 (\u5305\u62ec\u7576\u5b63\u5728\u5167\uff0c\u5f80\u524d\u7d2f\u8a08\u56db\u500b\u5b63\u5ea6)\n\n- `indexes`: \u9078\u64c7\u7684column\uff0c\u9700\u8981\u4ee5TEJ\u63d0\u4f9b\u7684\u6b04\u4f4d\u540d\u7a31\u70ba\u6e96\uff0c\u4e0d\u63d0\u4f9b\u6642\u6216\u63d0\u4f9b`[]`\u6703\u56de\u50b3\u5168\u90e8column\n   - \u7bc4\u4f8b\u8f38\u5165: `['bp41', 'bp51']`\n\n[TEJ\u8cc7\u6599\u96c6\u9023\u7d50](https://tquant.tejwin.com/%E8%B3%87%E6%96%99%E9%9B%86/)\n\u8acb\u770b `\u6703\u8a08\u5e2b\u7c3d\u8b49\u8ca1\u52d9\u8cc7\u6599`\n\n#### \u56de\u50b3\u8cc7\u6599\n##### `YOY_NOCAL` \u8207 `QOQ_NOCAL` \n\u70ba\u56de\u50b3`pd.DataFrame`\uff0ccolumn\u540d\u7a31\u70ba<\u5e74\u4efd>Q<\u5b63>\uff0c row\u540d\u7a31\u70ba\u6307\u5b9a\u8ca1\u5831\u9805\u76ee\n\n```Python\n# fetch_mode = fetcher.FetchMode.QOQ_NOCAL\n        2024Q3        2024Q2        2024Q1\nbp41  7.082005e+07  6.394707e+07  5.761001e+07\nbp51  3.111298e+09  3.145373e+09  3.091985e+09\n\n# fetch_mode = fetcher.FetchMode.YOY_NOCAL\n        2024Q3        2023Q3        2022Q3\nbp41  7.082005e+07  5.377231e+07  6.201822e+07\nbp51  3.111298e+09  3.173919e+09  2.453840e+09\n```\n\n##### `YOY` \u8207 `QOQ`\n\u56de\u50b3\u70ba`Dict[pd.DataFrame]`, key \u70ba\u6307\u5b9a\u7684index, DataFrame\u4e2d\u5247\u662f\u8a72index\u6b77\u5e74\u7684\u6578\u503c\u8207\u6210\u9577\u7387\n\u6210\u9577\u7387\u55ae\u4f4d\u70ba`%`\n```Python\n# fetch_mode = fetcher.FetchMode.QOQ\n{\n'bp41':               \n        2024Q3        2024Q2        2024Q1\nvalue   7.082005e+07  6.394707e+07  5.761001e+07\ngrowth        10.75%        11.00%         0.55%, \n'bp51':               \n        2024Q3        2024Q2        2024Q1\nvalue   3.111298e+09  3.145373e+09  3.091985e+09\ngrowth        -1.08%         1.73%         -0.42%\n}\n\n# fetch_mode = fetcher.FetchMode.YOY\n{\n'bp41':               \n        2024Q3        2023Q3        2022Q3\nvalue   7.082005e+07  5.377231e+07  6.201822e+07\nYoY_1    31.70%        -13.30%         41.31%\nYoY_3    17.29%          9.56%         18.83%\nYoY_5    13.89%         12.15%         16.43%\nYoY_10   12.55%         13.56%         15.60% ,\n'bp51':               \n        2024Q3        2023Q3        2022Q3\nvalue   3.111298e+09  3.173919e+09  2.453840e+09\nYoY_1         -1.97%        29.34%        31.80%           \nYoY_3         18.67%        27.67%        26.39% \nYoY_5         20.68%        24.80%        18.15%           \nYoY_10        14.20%        15.87%        15.51%           \n}\n```\n\n### \u516c\u53f8\u81ea\u7d50\u8cc7\u6599\n```Python\nfrom neurostats_API import FinanceReportFetcher\n\nfetcher = FinanceReportFetcher(\n    mongo_uri = mongo_uri,\n    db_name = db_name,\n    collection_name = collection_name\n)\n\ndata = fetcher.get(\n    ticker = \"2330\" # \u4efb\u610f\u7684\u80a1\u7968\u4ee3\u78bc\n    fetch_mode = fetcher.FetchMode.QOQ_NOCAL # \u53d6\u5f97\u6a21\u5f0f\n    start_date = \"2005-01-01\",\n    end_date = \"2024-12-31\",\n    report_type = \"Q\",\n    indexes = []\n) # -> pd.DataFrame or Dict[pd.DataFrame] \n```\n- `ticker`: \u80a1\u7968\u4ee3\u78bc\n\n- `fetch_mode` : \u53d6\u5f97\u6a21\u5f0f\uff0c\u70ba`fetcher.YOY_NOCAL` \u6216 `fetcher.QOQ_NOCAL`\n    - `YOY_NOCAL`: \u4ee5end_date\u70ba\u6e96\uff0c\u53d6\u5f97\u8207end_date\u540c\u5b63\u7684\u6b77\u5e74\u8cc7\u6599\uff0c\u6642\u9593\u7bc4\u570d\u4ee5start_date\u70ba\u8d77\u59cb\n        > \u4f8b\u5982`start_date = \"2020-07-01\"`, `end_date = \"2024-01-01\"`\uff0c\u6703\u56de\u50b32020~2024\u7684\u7b2c\u4e00\u5b63\u8cc7\u6599\n\n    - `QOQ_NOCAL`: \u6642\u9593\u7bc4\u570d\u5167\u7684\u6bcf\u5b63\u8cc7\u6599\n\n    - `QOQ`: \u6642\u9593\u7bc4\u570d\u5167\u6bcf\u5b63\u7684\u6bcf\u500bindex\u7684\u6578\u503c\u4ee5\u53caQoQ\n\n    - `YoY`: \u4ee5end_date\u70ba\u6e96\uff0c\u53d6\u5f97\u8207end_date\u540c\u5b63\u7684\u6b77\u5e74\u8cc7\u6599\u4ee5\u53ca\u6210\u9577\u7387\uff0c\u6642\u9593\u7bc4\u570d\u4ee5start_date\u70ba\u8d77\u59cb\n\n- `start_date`: \u958b\u59cb\u65e5\u671f\uff0c\u4e0d\u8a2d\u5b9a\u6642\u9810\u8a2d\u70ba`2005-01-01`\n\n- `end_date`: \u7d50\u675f\u65e5\u671f\uff0c\u4e0d\u8a2d\u5b9a\u6642\u9810\u8a2d\u70ba\u8cc7\u6599\u5eab\u6700\u65b0\u8cc7\u6599\u7684\u65e5\u671f\n\n- `report_type`: \u9078\u64c7\u54ea\u7a2e\u5831\u544a\uff0c\u9810\u8a2d\u70ba`Q`\n    - `A`: \u7576\u5e74\u7d2f\u8a08\n    - `Q`: \u7576\u5b63\u6578\u503c\n    - `TTM`: \u79fb\u52d5\u56db\u5b63 (\u5305\u62ec\u7576\u5b63\u5728\u5167\uff0c\u5f80\u524d\u7d2f\u8a08\u56db\u500b\u5b63\u5ea6)\n\n- `indexes`: \u9078\u64c7\u7684column\uff0c\u9700\u8981\u4ee5TEJ\u63d0\u4f9b\u7684\u6b04\u4f4d\u540d\u7a31\u70ba\u6e96\uff0c\u4e0d\u63d0\u4f9b\u6642\u6216\u63d0\u4f9b`[]`\u6703\u56de\u50b3\u5168\u90e8column\n   - \u7bc4\u4f8b\u8f38\u5165: `['bp41', 'bp51']`\n\n[TEJ\u8cc7\u6599\u96c6\u9023\u7d50](https://tquant.tejwin.com/%E8%B3%87%E6%96%99%E9%9B%86/)\n\u8acb\u770b `\u516c\u53f8\u81ea\u7d50\u6578`\n\n### \u958b\u9ad8\u4f4e\u6536\n```Python\nmongo_uri = <MongoDB \u7684 URI>\ndb_name = 'company' # \u9023\u63a5\u7684DB\u540d\u7a31\ncollection_name = \"TWN/APIPRCD\" # \u9023\u63a5\u7684collection\u5c0d\u8c61\nfrom neurostats_API import TEJStockPriceFetcher\n\nfetcher = TEJStockPriceFetcher(\n    mongo_uri = mongo_uri,\n    db_name = db_name,\n    collection_name = collection_name\n)\n\ndata = fetcher.get(\n    ticker = \"2330\" # \u4efb\u610f\u7684\u80a1\u7968\u4ee3\u78bc\n    start_date = \"2005-01-01\",\n    period = \"3m\"\n) # -> pd.DataFrame\n```\n- `ticker`: \u80a1\u7968\u4ee3\u78bc\n- `start_date`: \u641c\u5c0b\u7bc4\u570d\u7684\u958b\u59cb\u65e5\u671f\n- `period`: \u641c\u5c0b\u7684\u6642\u9593\u7bc4\u570d\u9577\u5ea6\n\n`period`\u8207`start_date`\u540c\u6642\u5b58\u5728\u6642\u4ee5period\u512a\u5148\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "The service of NeuroStats website",
    "version": "0.0.25",
    "project_urls": {
        "Homepage": "https://github.com/NeurowattStats/NeuroStats_API.git"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f7eb21f63307763801baec7327703cde3de22b600b156a4093b5e0ebe8616c22",
                "md5": "a99452a230635bf1949a561d289cce1b",
                "sha256": "39f986b61f4ad91e7423fec6dc9969072904474eaaaae518e286433c6c0d6cb4"
            },
            "downloads": -1,
            "filename": "neurostats_API-0.0.25-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "a99452a230635bf1949a561d289cce1b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 227809,
            "upload_time": "2025-04-21T07:36:45",
            "upload_time_iso_8601": "2025-04-21T07:36:45.105927Z",
            "url": "https://files.pythonhosted.org/packages/f7/eb/21f63307763801baec7327703cde3de22b600b156a4093b5e0ebe8616c22/neurostats_API-0.0.25-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0989aa9be746b0dad93269d9f7862d1dc65ea03dcba25bc1596aee6b12ecd826",
                "md5": "a356580e48c64ee03b50f4aaebf4a975",
                "sha256": "488df9680030da2107d948ab289192d6c4cc1dcc6f655c1e3e2fc9c2a8ca7eaf"
            },
            "downloads": -1,
            "filename": "neurostats_api-0.0.25.tar.gz",
            "has_sig": false,
            "md5_digest": "a356580e48c64ee03b50f4aaebf4a975",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 230238,
            "upload_time": "2025-04-21T07:36:48",
            "upload_time_iso_8601": "2025-04-21T07:36:48.097550Z",
            "url": "https://files.pythonhosted.org/packages/09/89/aa9be746b0dad93269d9f7862d1dc65ea03dcba25bc1596aee6b12ecd826/neurostats_api-0.0.25.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-04-21 07:36:48",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "NeurowattStats",
    "github_project": "NeuroStats_API",
    "github_not_found": true,
    "lcname": "neurostats-api"
}
        
Elapsed time: 0.82013s