neurostats-API 0.0.10__tar.gz → 0.0.12__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/PKG-INFO +177 -4
  2. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/README.md +176 -3
  3. neurostats_api-0.0.12/neurostats_API/__init__.py +1 -0
  4. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API/fetchers/__init__.py +2 -0
  5. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API/fetchers/balance_sheet.py +6 -3
  6. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API/fetchers/cash_flow.py +8 -6
  7. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API/fetchers/finance_overview.py +1 -3
  8. neurostats_api-0.0.12/neurostats_API/fetchers/institution.py +293 -0
  9. neurostats_api-0.0.12/neurostats_API/fetchers/margin_trading.py +279 -0
  10. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API/fetchers/month_revenue.py +23 -7
  11. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API/fetchers/profit_lose.py +7 -4
  12. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API/utils/data_process.py +15 -0
  13. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API.egg-info/PKG-INFO +178 -5
  14. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API.egg-info/SOURCES.txt +1 -0
  15. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/setup.py +1 -1
  16. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/test/test_fetchers.py +18 -1
  17. neurostats_API-0.0.10/neurostats_API/__init__.py +0 -1
  18. neurostats_API-0.0.10/neurostats_API/fetchers/institution.py +0 -114
  19. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/MANIFEST.in +0 -0
  20. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API/cli.py +0 -0
  21. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API/fetchers/base.py +0 -0
  22. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API/fetchers/tech.py +0 -0
  23. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API/fetchers/value_invest.py +0 -0
  24. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API/main.py +0 -0
  25. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API/tools/balance_sheet.yaml +0 -0
  26. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API/tools/cash_flow_percentage.yaml +0 -0
  27. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API/tools/finance_overview_dict.yaml +0 -0
  28. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API/tools/profit_lose.yaml +0 -0
  29. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API/tools/seasonal_data_field_dict.txt +0 -0
  30. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API/utils/__init__.py +0 -0
  31. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API/utils/datetime.py +0 -0
  32. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API/utils/db_client.py +0 -0
  33. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API/utils/fetcher.py +0 -0
  34. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API.egg-info/dependency_links.txt +0 -0
  35. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/neurostats_API.egg-info/top_level.txt +0 -0
  36. {neurostats_API-0.0.10 → neurostats_api-0.0.12}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: neurostats_API
3
- Version: 0.0.10
3
+ Version: 0.0.12
4
4
  Summary: The service of NeuroStats website
5
5
  Home-page: https://github.com/NeurowattStats/NeuroStats_API.git
6
6
  Author: JasonWang@Neurowatt
@@ -19,6 +19,8 @@ Description-Content-Type: text/markdown
19
19
  - [損益表](#損益表)
20
20
  - [資產負債表](#資產負債表)
21
21
  - [現金流量表](#現金流量表)
22
+ - [法人交易](#法人交易)
23
+ - [資券餘額](#資券餘額)
22
24
  - [版本紀錄](#版本紀錄)
23
25
 
24
26
 
@@ -89,7 +91,8 @@ from neurostats_API.utils import ValueFetcher, DBClient
89
91
  db_client = DBClient("<連接的DB位置>").get_client()
90
92
  ticker = "2330" # 換成tw50內任意ticker
91
93
  fetcher = ValueFetcher(ticker, db_client)
92
- data = stats_fetcher.query_data()
94
+
95
+ fetcher.query_data()
93
96
  ```
94
97
 
95
98
  #### 回傳(2330為例)
@@ -324,7 +327,7 @@ db_client = DBClient("<連接的DB位置>").get_client()
324
327
  ticker = "2330" # 換成tw50內任意ticker
325
328
  fetcher = BalanceSheetFetcher(ticker, db_client)
326
329
 
327
- stats_fetcher.query_data()
330
+ fetcher.query_data()
328
331
  ```
329
332
 
330
333
  #### 回傳
@@ -386,7 +389,7 @@ db_client = DBClient("<連接的DB位置>").get_client()
386
389
  ticker = 2330 # 換成tw50內任意ticker
387
390
  fetcher = StatsFetcher(ticker, db_client)
388
391
 
389
- stats_fetcher.query()
392
+ fetcher.query()
390
393
  ```
391
394
  #### 回傳
392
395
  ```Python
@@ -435,8 +438,178 @@ stats_fetcher.query()
435
438
 
436
439
  > 大部分資料缺失是因為尚未計算,僅先填上已經有的資料
437
440
 
441
+ ## 籌碼面
442
+ ### 法人交易
443
+ ``` Python
444
+ from neurostats_API.fetchers import InstitutionFetcher
445
+ db_client = DBClient("<連接的DB位置>").get_client()
446
+ ticker = 2330 # 換成tw50內任意ticker
447
+ fetcher = StatsFetcher(ticker, db_client)
448
+
449
+ fetcher.query()
450
+ ```
451
+ ### 回傳
452
+ ```Python
453
+ { 'annual_trading':
454
+ close volume ... 自營商買賣超股數(避險) 三大法人買賣超股數
455
+ 2024-12-02 1035.000000 31168404.0 ... -133215.0 11176252.0
456
+ 2024-11-29 996.000000 40094983.0 ... 401044.0 -7880519.0
457
+ ... ... ... ... ... ...
458
+ 2023-12-05 559.731873 22229723.0 ... 33,400 -5,988,621
459
+ 2023-12-04 563.659790 26847171.0 ... -135,991 -5,236,743
460
+
461
+ ,
462
+ 'latest_trading':
463
+ { 'date': datetime.datetime(2024, 12, 2, 0, 0),
464
+ 'table':
465
+ category variable ... over_buy_sell sell
466
+ 0 foreign average_price ... 0.00 0.0
467
+ 1 foreign percentage ... 0.00 0.0
468
+ .. ... ... ... ... ...
469
+ 14 prop price ... 0.00 0.0
470
+ 15 prop stock ... -133.22 217.2
471
+ }
472
+ ,
473
+ 'price':
474
+ {
475
+ '52weeks_range': '555.8038940429688-1100.0', # str
476
+ 'close': 1035.0, # float
477
+ 'last_close': 996.0, # float
478
+ 'last_open': 995.0, # float
479
+ 'last_range': '994.0-1010.0', # str
480
+ 'last_volume': 40094.983, # float
481
+ 'open': 1020.0, # float
482
+ 'range': '1015.0-1040.0', # str
483
+ 'volume': 32238.019 # float
484
+ }
485
+ }
486
+ ```
487
+
488
+ - `annual_trading`: 對應一年內每日的交易量
489
+ - `latest_trading`: 對應當日交易
490
+ ##### 欄位項目名稱
491
+ |英文|中文對應|
492
+ |----|-------|
493
+ |buy|買進|
494
+ |sell|賣出|
495
+ |over_buy_sell|買賣超|
496
+
497
+ ##### category項目名稱
498
+ |英文|中文對應|
499
+ |----|-------|
500
+ |foreign|外資|
501
+ |prop|自營商|
502
+ |mutual|投信|
503
+ |institutional_investor|三大法人|
504
+
505
+ ##### variable項目名稱
506
+ |英文|中文對應|
507
+ |----|-------|
508
+ |stock|股票張數|
509
+ |price|成交金額|
510
+ |average_price|均價|
511
+ |percetage|佔成交比重|
512
+
513
+ **成交金額以及均價因為資料沒有爬到而無法計算**
514
+ **仍然先將這項目加入,只是數值都會是0**
515
+
516
+ - `price`: 對應法人買賣頁面的今日與昨日交易價
517
+ 請注意`range`, `last_range`, `52week_range`這三個項目型態為字串,其餘為float
518
+
519
+ ##### 項目名稱
520
+ |英文|中文對應|
521
+ |----|-------|
522
+ |open|開盤價|
523
+ |close|收盤價|
524
+ |range|當日範圍|
525
+ |volume|成交張數|
526
+ |last_open|開盤價(昨)|
527
+ |last_close|收盤價(昨)|
528
+ |last_range|昨日範圍|
529
+ |last_volume|成交張數(昨)|
530
+ |52weeks_range|52週範圍|
531
+
532
+ ## 資券餘額
533
+ 對應iFa.ai -> 交易資訊 -> 資券變化
534
+ ```Python
535
+ from neurostats_API.fetchers import MarginTradingFetcher
536
+ db_client = DBClient("<連接的DB位置>").get_client()
537
+ ticker = 2330 # 換成tw50內任意ticker
538
+ fetcher = MarginTradingFetcher(ticker, db_client)
539
+
540
+ fetcher.query()
541
+ ```
542
+
543
+ ### 回傳
544
+ ```Python
545
+ { 'annual_margin':
546
+ close volume ... 借券_次一營業日可限額 資券互抵
547
+ 2024-12-03 1060.000000 29637.0 ... 12222.252 0.0
548
+ 2024-12-02 1035.000000 31168.0 ... 12156.872 1.0
549
+ ... ... ... ... ... ...
550
+ 2023-12-05 559.731873 22230.0 ... 7838.665 1.0
551
+ 2023-12-04 563.659790 26847.0 ... 7722.725 2.0
552
+
553
+ 'latest_trading': {
554
+ 'date': datetime.datetime(2024, 12, 3, 0, 0),
555
+ 'margin_trading':
556
+ financing short_selling
557
+ 買進 761.0 34.0
558
+ 賣出 1979.0 44.0
559
+ ... ... ...
560
+ 次一營業日限額 6483183.0 6483183.0
561
+ 現償 3.0 12.0
562
+
563
+
564
+ 'security_offset': 0.0,
565
+ 'stock_lending': stock_lending
566
+ 當日賣出 10
567
+ 當日還券 0
568
+ 當日調整 0
569
+ 當日餘額 14688
570
+ 次一營業日可限額 12222
571
+ },
572
+ 'price': { '52weeks_range': '555.8038940429688 - 1100.0',
573
+ 'close': 1060.0,
574
+ 'last_close': 1035.0,
575
+ 'last_open': 1020.0,
576
+ 'last_range': '1015.0 - 1040.0',
577
+ 'last_volume': 31168.404,
578
+ 'open': 1060.0,
579
+ 'range': '1055.0 - 1065.0',
580
+ 'volume': 29636.523}}
581
+ ```
582
+ - `annual_trading`: 對應一年內每日的資券變化量
583
+ - `latest_trading`: 對應當日交易
584
+ ##### 欄位項目名稱
585
+ |英文|中文對應|
586
+ |----|-------|
587
+ |financing|融資|
588
+ |short_selling|融券|
589
+
590
+ - `price`: 對應法人買賣頁面的今日與昨日交易價
591
+ ##### 項目名稱
592
+ |英文|中文對應|
593
+ |----|-------|
594
+ |open|開盤價|
595
+ |close|收盤價|
596
+ |range|當日範圍|
597
+ |volume|成交張數|
598
+ |last_open|開盤價(昨)|
599
+ |last_close|收盤價(昨)|
600
+ |last_range|昨日範圍|
601
+ |last_volume|成交張數(昨)|
602
+ |52weeks_range|52週範圍|
603
+
604
+ 請注意`range`, `last_range`, `52week_range`這三個項目型態為字串,其餘為float
438
605
 
439
606
  ## 版本紀錄
607
+ ### 0.0.11
608
+ - 修復財務分析的千元計算問題
609
+
610
+ - 籌碼面新增法人買賣(institution_trading)
611
+
612
+ - 將財報三表與月營收的資料型態與數值做轉換(%轉字串, 千元乘以1000)
440
613
  ### 0.0.10
441
614
  - 更新指標的資料型態: 單位為千元乘以1000之後回傳整數
442
615
 
@@ -9,6 +9,8 @@
9
9
  - [損益表](#損益表)
10
10
  - [資產負債表](#資產負債表)
11
11
  - [現金流量表](#現金流量表)
12
+ - [法人交易](#法人交易)
13
+ - [資券餘額](#資券餘額)
12
14
  - [版本紀錄](#版本紀錄)
13
15
 
14
16
 
@@ -79,7 +81,8 @@ from neurostats_API.utils import ValueFetcher, DBClient
79
81
  db_client = DBClient("<連接的DB位置>").get_client()
80
82
  ticker = "2330" # 換成tw50內任意ticker
81
83
  fetcher = ValueFetcher(ticker, db_client)
82
- data = stats_fetcher.query_data()
84
+
85
+ fetcher.query_data()
83
86
  ```
84
87
 
85
88
  #### 回傳(2330為例)
@@ -314,7 +317,7 @@ db_client = DBClient("<連接的DB位置>").get_client()
314
317
  ticker = "2330" # 換成tw50內任意ticker
315
318
  fetcher = BalanceSheetFetcher(ticker, db_client)
316
319
 
317
- stats_fetcher.query_data()
320
+ fetcher.query_data()
318
321
  ```
319
322
 
320
323
  #### 回傳
@@ -376,7 +379,7 @@ db_client = DBClient("<連接的DB位置>").get_client()
376
379
  ticker = 2330 # 換成tw50內任意ticker
377
380
  fetcher = StatsFetcher(ticker, db_client)
378
381
 
379
- stats_fetcher.query()
382
+ fetcher.query()
380
383
  ```
381
384
  #### 回傳
382
385
  ```Python
@@ -425,8 +428,178 @@ stats_fetcher.query()
425
428
 
426
429
  > 大部分資料缺失是因為尚未計算,僅先填上已經有的資料
427
430
 
431
+ ## 籌碼面
432
+ ### 法人交易
433
+ ``` Python
434
+ from neurostats_API.fetchers import InstitutionFetcher
435
+ db_client = DBClient("<連接的DB位置>").get_client()
436
+ ticker = 2330 # 換成tw50內任意ticker
437
+ fetcher = StatsFetcher(ticker, db_client)
438
+
439
+ fetcher.query()
440
+ ```
441
+ ### 回傳
442
+ ```Python
443
+ { 'annual_trading':
444
+ close volume ... 自營商買賣超股數(避險) 三大法人買賣超股數
445
+ 2024-12-02 1035.000000 31168404.0 ... -133215.0 11176252.0
446
+ 2024-11-29 996.000000 40094983.0 ... 401044.0 -7880519.0
447
+ ... ... ... ... ... ...
448
+ 2023-12-05 559.731873 22229723.0 ... 33,400 -5,988,621
449
+ 2023-12-04 563.659790 26847171.0 ... -135,991 -5,236,743
450
+
451
+ ,
452
+ 'latest_trading':
453
+ { 'date': datetime.datetime(2024, 12, 2, 0, 0),
454
+ 'table':
455
+ category variable ... over_buy_sell sell
456
+ 0 foreign average_price ... 0.00 0.0
457
+ 1 foreign percentage ... 0.00 0.0
458
+ .. ... ... ... ... ...
459
+ 14 prop price ... 0.00 0.0
460
+ 15 prop stock ... -133.22 217.2
461
+ }
462
+ ,
463
+ 'price':
464
+ {
465
+ '52weeks_range': '555.8038940429688-1100.0', # str
466
+ 'close': 1035.0, # float
467
+ 'last_close': 996.0, # float
468
+ 'last_open': 995.0, # float
469
+ 'last_range': '994.0-1010.0', # str
470
+ 'last_volume': 40094.983, # float
471
+ 'open': 1020.0, # float
472
+ 'range': '1015.0-1040.0', # str
473
+ 'volume': 32238.019 # float
474
+ }
475
+ }
476
+ ```
477
+
478
+ - `annual_trading`: 對應一年內每日的交易量
479
+ - `latest_trading`: 對應當日交易
480
+ ##### 欄位項目名稱
481
+ |英文|中文對應|
482
+ |----|-------|
483
+ |buy|買進|
484
+ |sell|賣出|
485
+ |over_buy_sell|買賣超|
486
+
487
+ ##### category項目名稱
488
+ |英文|中文對應|
489
+ |----|-------|
490
+ |foreign|外資|
491
+ |prop|自營商|
492
+ |mutual|投信|
493
+ |institutional_investor|三大法人|
494
+
495
+ ##### variable項目名稱
496
+ |英文|中文對應|
497
+ |----|-------|
498
+ |stock|股票張數|
499
+ |price|成交金額|
500
+ |average_price|均價|
501
+ |percetage|佔成交比重|
502
+
503
+ **成交金額以及均價因為資料沒有爬到而無法計算**
504
+ **仍然先將這項目加入,只是數值都會是0**
505
+
506
+ - `price`: 對應法人買賣頁面的今日與昨日交易價
507
+ 請注意`range`, `last_range`, `52week_range`這三個項目型態為字串,其餘為float
508
+
509
+ ##### 項目名稱
510
+ |英文|中文對應|
511
+ |----|-------|
512
+ |open|開盤價|
513
+ |close|收盤價|
514
+ |range|當日範圍|
515
+ |volume|成交張數|
516
+ |last_open|開盤價(昨)|
517
+ |last_close|收盤價(昨)|
518
+ |last_range|昨日範圍|
519
+ |last_volume|成交張數(昨)|
520
+ |52weeks_range|52週範圍|
521
+
522
+ ## 資券餘額
523
+ 對應iFa.ai -> 交易資訊 -> 資券變化
524
+ ```Python
525
+ from neurostats_API.fetchers import MarginTradingFetcher
526
+ db_client = DBClient("<連接的DB位置>").get_client()
527
+ ticker = 2330 # 換成tw50內任意ticker
528
+ fetcher = MarginTradingFetcher(ticker, db_client)
529
+
530
+ fetcher.query()
531
+ ```
532
+
533
+ ### 回傳
534
+ ```Python
535
+ { 'annual_margin':
536
+ close volume ... 借券_次一營業日可限額 資券互抵
537
+ 2024-12-03 1060.000000 29637.0 ... 12222.252 0.0
538
+ 2024-12-02 1035.000000 31168.0 ... 12156.872 1.0
539
+ ... ... ... ... ... ...
540
+ 2023-12-05 559.731873 22230.0 ... 7838.665 1.0
541
+ 2023-12-04 563.659790 26847.0 ... 7722.725 2.0
542
+
543
+ 'latest_trading': {
544
+ 'date': datetime.datetime(2024, 12, 3, 0, 0),
545
+ 'margin_trading':
546
+ financing short_selling
547
+ 買進 761.0 34.0
548
+ 賣出 1979.0 44.0
549
+ ... ... ...
550
+ 次一營業日限額 6483183.0 6483183.0
551
+ 現償 3.0 12.0
552
+
553
+
554
+ 'security_offset': 0.0,
555
+ 'stock_lending': stock_lending
556
+ 當日賣出 10
557
+ 當日還券 0
558
+ 當日調整 0
559
+ 當日餘額 14688
560
+ 次一營業日可限額 12222
561
+ },
562
+ 'price': { '52weeks_range': '555.8038940429688 - 1100.0',
563
+ 'close': 1060.0,
564
+ 'last_close': 1035.0,
565
+ 'last_open': 1020.0,
566
+ 'last_range': '1015.0 - 1040.0',
567
+ 'last_volume': 31168.404,
568
+ 'open': 1060.0,
569
+ 'range': '1055.0 - 1065.0',
570
+ 'volume': 29636.523}}
571
+ ```
572
+ - `annual_trading`: 對應一年內每日的資券變化量
573
+ - `latest_trading`: 對應當日交易
574
+ ##### 欄位項目名稱
575
+ |英文|中文對應|
576
+ |----|-------|
577
+ |financing|融資|
578
+ |short_selling|融券|
579
+
580
+ - `price`: 對應法人買賣頁面的今日與昨日交易價
581
+ ##### 項目名稱
582
+ |英文|中文對應|
583
+ |----|-------|
584
+ |open|開盤價|
585
+ |close|收盤價|
586
+ |range|當日範圍|
587
+ |volume|成交張數|
588
+ |last_open|開盤價(昨)|
589
+ |last_close|收盤價(昨)|
590
+ |last_range|昨日範圍|
591
+ |last_volume|成交張數(昨)|
592
+ |52weeks_range|52週範圍|
593
+
594
+ 請注意`range`, `last_range`, `52week_range`這三個項目型態為字串,其餘為float
428
595
 
429
596
  ## 版本紀錄
597
+ ### 0.0.11
598
+ - 修復財務分析的千元計算問題
599
+
600
+ - 籌碼面新增法人買賣(institution_trading)
601
+
602
+ - 將財報三表與月營收的資料型態與數值做轉換(%轉字串, 千元乘以1000)
430
603
  ### 0.0.10
431
604
  - 更新指標的資料型態: 單位為千元乘以1000之後回傳整數
432
605
 
@@ -0,0 +1 @@
1
+ __version__='0.0.12'
@@ -2,6 +2,8 @@ from .base import StatsDateTime, StatsFetcher
2
2
  from .balance_sheet import BalanceSheetFetcher
3
3
  from .cash_flow import CashFlowFetcher
4
4
  from .finance_overview import FinanceOverviewFetcher
5
+ from .institution import InstitutionFetcher
6
+ from .margin_trading import MarginTradingFetcher
5
7
  from .month_revenue import MonthRevenueFetcher
6
8
  from .profit_lose import ProfitLoseFetcher
7
9
  from .value_invest import ValueFetcher
@@ -116,10 +116,13 @@ class BalanceSheetFetcher(StatsFetcher):
116
116
  try: # table_dict[項目][(2020Q1, '%')]
117
117
  if (item_name == 'percentage'):
118
118
  if (isinstance(item, (float, int))):
119
- item = np.round(item, 2)
120
- if ("YoY" in item_name):
119
+ item = StatsProcessor.cal_non_percentage(item, to_str=True, postfix="%")
120
+ elif ("YoY" in item_name):
121
121
  if (isinstance(item, (float, int))):
122
- item = np.round(item * 100, 2)
122
+ item = StatsProcessor.cal_percentage(item)
123
+ else:
124
+ if (isinstance(item, (float, int))):
125
+ item = StatsProcessor.cal_non_percentage(item, postfix="千元")
123
126
  table_dict[index_name][(time_index, item_name)] = item
124
127
 
125
128
  except KeyError:
@@ -132,14 +132,15 @@ class CashFlowFetcher(StatsFetcher):
132
132
  table_dict[time_index][index_name]['value'] = value[
133
133
  'value']
134
134
  if (value['value']):
135
- table_dict[time_index][index_name][
136
- 'percentage'] = np.round(
135
+ ratio = np.round(
137
136
  (value['value'] / cash_flow[
138
137
  main_cash_flow_name]['value']) * 100, 2)
138
+ table_dict[time_index][index_name][
139
+ 'percentage'] = f"{ratio}%"
139
140
  else:
140
141
  table_dict[time_index][index_name][
141
142
  'percentage'] = None
142
- except:
143
+ except: # 新增index再做一次
143
144
  if (time_index not in table_dict.keys()):
144
145
  table_dict[time_index] = dict()
145
146
  table_dict[time_index][index_name] = dict()
@@ -147,14 +148,15 @@ class CashFlowFetcher(StatsFetcher):
147
148
  table_dict[time_index][index_name]['value'] = value[
148
149
  'value']
149
150
  if (value['value']):
150
- table_dict[time_index][index_name][
151
- 'percentage'] = np.round(
151
+ ratio = np.round(
152
152
  (value['value'] / cash_flow[
153
153
  main_cash_flow_name]['value']) * 100, 2)
154
+ table_dict[time_index][index_name][
155
+ 'percentage'] = f"{ratio}%"
154
156
  else:
155
157
  table_dict[time_index][index_name][
156
158
  'percentage'] = None
157
-
159
+ table_dict[time_index][index_name]['value'] = StatsProcessor.cal_non_percentage(value['value'], postfix="千元")
158
160
  try:
159
161
  partial_cash_flow[time_index][index_name] = table_dict[
160
162
  time_index][index_name]
@@ -156,6 +156,7 @@ class FinanceOverviewProcessor(StatsProcessor):
156
156
  finance_dict[index] = StatsProcessor.cal_non_percentage(finance_dict[index], postfix="千元")
157
157
  except Exception as e:
158
158
  finance_dict[index] = None
159
+
159
160
 
160
161
  @classmethod
161
162
  def process_all(cls, finance_dict):
@@ -176,9 +177,6 @@ class FinanceOverviewProcessor(StatsProcessor):
176
177
  cls.cal_net_debt_to_equity_ratio, cls.cal_interest_coverage_ratio,
177
178
  cls.cal_debt_to_operating_cash_flow,
178
179
  cls.cal_debt_to_free_cash_flow, cls.cal_cash_flow_ratio,
179
-
180
- # process to 千元
181
- cls.process_thousand_dollar
182
180
  ]
183
181
 
184
182
  for method in methods: