analyser_hj3415 4.0.9__py3-none-any.whl → 4.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- analyser_hj3415/analyser/tsa/lstm.py +35 -4
- {analyser_hj3415-4.0.9.dist-info → analyser_hj3415-4.1.0.dist-info}/METADATA +1 -1
- {analyser_hj3415-4.0.9.dist-info → analyser_hj3415-4.1.0.dist-info}/RECORD +5 -5
- {analyser_hj3415-4.0.9.dist-info → analyser_hj3415-4.1.0.dist-info}/WHEEL +0 -0
- {analyser_hj3415-4.0.9.dist-info → analyser_hj3415-4.1.0.dist-info}/entry_points.txt +0 -0
@@ -17,6 +17,7 @@ from utils_hj3415 import tools, setup_logger
|
|
17
17
|
from db_hj3415 import myredis
|
18
18
|
from analyser_hj3415.analyser import MIs, tsa
|
19
19
|
from analyser_hj3415.analyser.tsa.common import PandasTimestampField, ChartPoint
|
20
|
+
import pickle
|
20
21
|
|
21
22
|
mylogger = setup_logger(__name__,'INFO')
|
22
23
|
expire_time = tools.to_int(os.getenv('DEFAULT_EXPIRE_TIME_H', 48)) * 3600
|
@@ -99,6 +100,7 @@ class MyLSTM:
|
|
99
100
|
"""
|
100
101
|
# 미래 몇일을 예측할 것인가?
|
101
102
|
future_days = 30
|
103
|
+
REDIS_LSTM_DATA_SUFFIX = "lstm_chart_data"
|
102
104
|
|
103
105
|
def __init__(self, ticker: str):
|
104
106
|
mylogger.debug(f'MyLSTM set up ticker : {ticker}')
|
@@ -125,7 +127,7 @@ class MyLSTM:
|
|
125
127
|
|
126
128
|
@ticker.setter
|
127
129
|
def ticker(self, ticker: str):
|
128
|
-
mylogger.
|
130
|
+
mylogger.debug(f'MyLstm change ticker : {self.ticker} -> {ticker}')
|
129
131
|
self.scaler = MinMaxScaler(feature_range=(0, 1))
|
130
132
|
self._ticker = ticker
|
131
133
|
self.initialized = False
|
@@ -479,7 +481,7 @@ class MyLSTM:
|
|
479
481
|
|
480
482
|
def generate_chart_data(self, refresh:bool, num=5) -> LSTMChartData:
|
481
483
|
mylogger.info("**** Start generate_lstm_chart_data... ****")
|
482
|
-
redis_name = f'{self.ticker}
|
484
|
+
redis_name = f'{self.ticker}_{MyLSTM.REDIS_LSTM_DATA_SUFFIX}'
|
483
485
|
|
484
486
|
mylogger.info(
|
485
487
|
f"redisname: '{redis_name}' / refresh : {refresh} / expire_time : {expire_time / 3600}h")
|
@@ -546,13 +548,34 @@ class MyLSTM:
|
|
546
548
|
|
547
549
|
def get_chart_data(self) -> Optional[LSTMChartData]:
|
548
550
|
mylogger.debug("**** Start get_lstm_chart_data... ****")
|
549
|
-
redis_name = f'{self.ticker}
|
551
|
+
redis_name = f'{self.ticker}_{MyLSTM.REDIS_LSTM_DATA_SUFFIX}'
|
550
552
|
if myredis.Base.exists(redis_name):
|
551
553
|
mylogger.debug(f"ttl: {myredis.Base.get_ttl(redis_name)}")
|
552
554
|
return myredis.Base.get_value(redis_name)
|
553
555
|
else:
|
554
556
|
return None
|
555
557
|
|
558
|
+
@staticmethod
|
559
|
+
def bulk_get_chart_data(tickers: List[str]) -> Dict[str, Optional[LSTMChartData]]:
|
560
|
+
# --- (1) 파이프라인 GET ---
|
561
|
+
pipe = myredis.Base.redis_client.pipeline()
|
562
|
+
redis_keys = [f"{ticker}_{MyLSTM.REDIS_LSTM_DATA_SUFFIX}" for ticker in tickers]
|
563
|
+
for redis_key in redis_keys:
|
564
|
+
pipe.get(redis_key)
|
565
|
+
results_from_redis = pipe.execute() # [val1, val2, ...]
|
566
|
+
|
567
|
+
final_results = {}
|
568
|
+
|
569
|
+
for ticker, val in zip(tickers, results_from_redis):
|
570
|
+
if val is None:
|
571
|
+
final_results[ticker] = None
|
572
|
+
else:
|
573
|
+
# Redis에 pickled 데이터가 있다면 언피클해서 담기
|
574
|
+
lstm_data = pickle.loads(val)
|
575
|
+
final_results[ticker] = lstm_data
|
576
|
+
|
577
|
+
return final_results
|
578
|
+
|
556
579
|
@staticmethod
|
557
580
|
def caching_chart_data(tickers:list, num:int):
|
558
581
|
mylogger.info(f"*** caching_chart_data ***")
|
@@ -605,10 +628,18 @@ class CorpLSTM(MyLSTM):
|
|
605
628
|
MyLSTM.caching_chart_data([CorpLSTM.code_to_ticker(code) for code in ranking_topn.keys() ], num=num)
|
606
629
|
|
607
630
|
@staticmethod
|
608
|
-
def caching_chart_data_bulk(codes:
|
631
|
+
def caching_chart_data_bulk(codes: List[str], num=5):
|
609
632
|
mylogger.info(f"*** caching_chart_data_bulk : {len(codes)} items ***")
|
610
633
|
MyLSTM.caching_chart_data([CorpLSTM.code_to_ticker(code) for code in codes], num=num)
|
611
634
|
|
635
|
+
@staticmethod
|
636
|
+
def bulk_get_chart_data(codes: List[str]) -> Dict[str, Optional[LSTMChartData]]:
|
637
|
+
ticker_data = MyLSTM.bulk_get_chart_data([CorpLSTM.code_to_ticker(code) for code in codes])
|
638
|
+
code_data = {}
|
639
|
+
for ticker, data in ticker_data.items():
|
640
|
+
code_data[CorpLSTM.ticker_to_code(ticker)] = data
|
641
|
+
return code_data
|
642
|
+
|
612
643
|
|
613
644
|
class MILSTM(MyLSTM):
|
614
645
|
"""
|
@@ -9,9 +9,9 @@ analyser_hj3415/analyser/eval/mil.py,sha256=uaS7MHNlytrjEgdLc9S1zhXb5bzVAwlSMlnQ
|
|
9
9
|
analyser_hj3415/analyser/eval/red.py,sha256=DZBV0qMzWD8KGvAbdxrohCVT0a5luduuhKQoN3OtNwc,13909
|
10
10
|
analyser_hj3415/analyser/tsa/__init__.py,sha256=pg20ZQRABedTdaIoOr5t043RNKtJ7ji_WmnZrD1IhPg,147
|
11
11
|
analyser_hj3415/analyser/tsa/common.py,sha256=ZLUkifupOlLKsrPiqR3y6FaEN4M_loZhxCZXYxkX0us,1874
|
12
|
-
analyser_hj3415/analyser/tsa/lstm.py,sha256=
|
12
|
+
analyser_hj3415/analyser/tsa/lstm.py,sha256=X59xHpMxEaR95Tf9OIdBT4KXFTMAwZF-_s0CMHRCTk0,29401
|
13
13
|
analyser_hj3415/analyser/tsa/prophet.py,sha256=a8XPiikRFbqHjbDT7C3hK5RsqOp5JyAbY7lDFNQfBzM,17884
|
14
|
-
analyser_hj3415-4.0.
|
15
|
-
analyser_hj3415-4.0.
|
16
|
-
analyser_hj3415-4.0.
|
17
|
-
analyser_hj3415-4.0.
|
14
|
+
analyser_hj3415-4.1.0.dist-info/entry_points.txt,sha256=ZfjPnJuH8SzvhE9vftIPMBIofsc65IAWYOhqOC_L5ck,65
|
15
|
+
analyser_hj3415-4.1.0.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
|
16
|
+
analyser_hj3415-4.1.0.dist-info/METADATA,sha256=cVVNfXeU__3S1w621s_3t71x6DIQpg967nhc1Wj-4oM,6777
|
17
|
+
analyser_hj3415-4.1.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|