paint-brush
यो गहिरो-सिकाइ दृष्टिकोणले क्रिप्टो लगानीमा तपाईंको लाभलाई दोब्बर बनाउन मद्दत गर्न सक्छद्वारा@pmatheus
नयाँ इतिहास

यो गहिरो-सिकाइ दृष्टिकोणले क्रिप्टो लगानीमा तपाईंको लाभलाई दोब्बर बनाउन मद्दत गर्न सक्छ

द्वारा pmatheus8m2024/12/18
Read on Terminal Reader

धेरै लामो; पढ्नकाे लागि

यस प्रतिवेदनले ट्रान्सफर्मरमा आधारित डीप रिइन्फोर्समेन्ट लर्निङ (DRL) एजेन्ट प्रयोग गरेर क्रिप्टोकरेन्सी व्यापारको लागि एउटा नयाँ दृष्टिकोण प्रस्तुत गर्दछ।
featured image - यो गहिरो-सिकाइ दृष्टिकोणले क्रिप्टो लगानीमा तपाईंको लाभलाई दोब्बर बनाउन मद्दत गर्न सक्छ
pmatheus HackerNoon profile picture

यस रिपोर्टले ट्रान्सफर्मरमा आधारित डीप रिइन्फोर्समेन्ट लर्निङ (DRL) एजेन्ट प्रयोग गरेर क्रिप्टोकरेन्सी व्यापारको लागि एउटा नयाँ दृष्टिकोण प्रस्तुत गर्दछ। प्रणालीले आधुनिक NLP-प्रेरित आर्किटेक्चरहरू (ट्रान्सफर्मरहरू), डबल DQN (DDQN), शोर नेटवर्कहरू, र परीक्षण-समय प्रशिक्षण (TTT) को लागि कम-रैंक अनुकूलन (LoRA) को लाभ उठाउँछ। यी कम्पोनेन्टहरू संयोजन गरेर, एजेन्टले ऐतिहासिक BTC/USDT डेटामा सुधारिएको अनुकूलनता, स्थिर नीति निर्माण, र उल्लेखनीय रूपमा बढेको लाभप्रदता देखाउँछ। प्रारम्भिक हुँदा, यी नतिजाहरूले सुझाव दिन्छ कि विधिलाई थप जटिल डेटासेटहरू (जस्तै, अर्डरबुक-स्तर) र बहु सम्पत्ति वर्गहरूमा विस्तार गर्न सकिन्छ, संस्थागत-ग्रेड व्यापार रणनीतिहरूको लागि मापनयोग्य आधार प्रदान गर्दै।


सम्पादकको नोट: यो लेख सूचनामूलक उद्देश्यका लागि मात्र हो र लगानी सल्लाह गठन गर्दैन। क्रिप्टोकरेन्सीहरू सट्टा, जटिल र उच्च जोखिमहरू समावेश छन्। यसको मतलब उच्च मूल्य अस्थिरता र तपाईंको प्रारम्भिक लगानीको सम्भावित हानि हुन सक्छ। तपाईंले आफ्नो वित्तीय अवस्था, लगानी उद्देश्यहरू विचार गर्नुपर्छ, र कुनै पनि लगानी निर्णय गर्नु अघि वित्तीय सल्लाहकारसँग परामर्श गर्नुपर्छ। HackerNoon सम्पादकीय टोलीले व्याकरणीय शुद्धताको लागि मात्र कथा प्रमाणित गरेको छ र यस लेखमा भनिएको जानकारीको शुद्धता, विश्वसनीयता, वा पूर्णतालाई समर्थन वा ग्यारेन्टी गर्दैन। #DYOR


किन ट्रान्सफर्मरहरू, किन DRL, र किन तपाईंले केयर गर्नुपर्छ

  • ट्रान्सफर्मरहरू: NLP संसारमा जन्मेका, तिनीहरूले डिसिफरिङ सिक्वेन्सहरूमा उत्कृष्ट प्रदर्शन गर्छन्। बजारहरू केवल समय-श्रृङ्खला पजलहरू हुन्। ट्रान्सफर्मरहरूले तिनीहरूलाई कथाहरू जस्तै पढ्छन्, प्लट ट्विस्टहरू (मूल्य चालहरू) तपाईंको औसत मात्रा झिम्काउनु अघि राम्रोसँग।

  • डबल DQN (DDQN): अब कुनै एकतर्फी Q-मान अनुमान छैन। DDQN ले ती कुख्यात अत्याधिक अनुमानहरूमा कटौती गर्दछ, तपाईंको व्यापार नीतिलाई यसले कठिन बुल जालहरू र भालु छापाहरू ह्यान्डल गर्न आवश्यक पर्ने विश्वसनीयता प्रदान गर्दछ।

  • नाइजी नेटहरूले नेटवर्क वजनहरूमा सीधा प्यारामिटराइज्ड आवाज थपेर अन्वेषणलाई प्रोत्साहन दिन्छ।

  • LoRA ले परीक्षण-समय प्रशिक्षण (TTT) लाई न्यूनतम ओभरहेडको साथ अनुमति दिन्छ, मोडेललाई पूर्ण पुन: प्रशिक्षण चक्र बिना नै नयाँ बजार अवस्थाहरूमा द्रुत रूपमा अनुकूलन गर्न सक्षम पार्दै।

  • परीक्षण-समय प्रशिक्षण (TTT): बजार परिवर्तन, विकास, आश्चर्य। TTT ले यो मोडेललाई द्रुत रूपमा अनुकूलन गर्न दिन्छ, रणनीतिहरू मध्य-उडानमा समायोजन गर्दै मानौं कि यसले आज भोलिको हेडलाइनहरू पढिरहेको छ।


कोड सक्रिय छ https://github.com/pmatheus/themoneyhack यसलाई क्लोन गर्नुहोस्, यसलाई चलाउनुहोस्, यसलाई विच्छेद गर्नुहोस्। तपाईंलाई यो मन पर्न सक्छ।


यस ढाँचामा एउटा प्रणाली सिर्जना गर्दछ जहाँ एक सिकाइ एजेन्टले सिमुलेटेड व्यापारिक वातावरणसँग अन्तरक्रिया गर्दछ, जुन आधुनिक ट्रान्सफर्मरमा आधारित वास्तुकलाद्वारा निर्देशित हुन्छ। यसको मूलमा, प्रणालीले समयसँगै व्यापारिक निर्णयहरू सुधार गर्न खोज्छ, सुदृढीकरण सिकाइको माध्यमबाट आफ्नो रणनीतिलाई परिष्कृत गर्दै र नयाँ बजार अवस्थाहरूमा छिट्टै अनुकूलन गर्दै।


पहिले ट्रान्सफर्मर मोडेललाई विचार गर्नुहोस्। परम्परागत रूपमा, ट्रान्सफर्मरहरूले शब्दहरू वा टोकनहरूको अनुक्रमहरू व्याख्या गरेर प्राकृतिक भाषा प्रशोधन जस्ता क्षेत्रहरूमा क्रान्तिकारी परिवर्तन गरेका छन्। यहाँ, समान सिद्धान्तहरू समय-श्रृङ्खला मूल्य डेटामा लागू हुन्छन्। शब्दहरूको सट्टा, मोडेलले ऐतिहासिक बजार विशेषताहरू - मूल्यहरू, मात्राहरू, प्राविधिक सूचकहरू - र अर्थपूर्ण अस्थायी निर्भरताहरू निकाल्ने प्रयास गर्दछ। TransformerNetwork वर्ग, कोड मा परिभाषित, यो दृष्टिकोण को उदाहरण दिन्छ। ध्यान दिनुहोस् कि कसरी कन्स्ट्रक्टरले कच्चा इनपुट सुविधाहरूलाई उच्च-आयामी प्रतिनिधित्वमा प्रोजेक्ट गर्दछ र त्यसपछि तिनीहरूलाई बहु ट्रान्सफर्मर एन्कोडर तहहरू मार्फत पास गर्दछ:


 class TransformerNetwork(nn.Module): def __init__(self, state_dim, output_dim, lookback, nhead=8, num_layers=4, model_dim=512, lora_r=8, lora_alpha=1.0, lora_active=False, sigma_init=hyperparameters['SIGMA_INIT']): super(TransformerNetwork, self).__init__() self.model_dim = model_dim self.lookback = lookback self.lora_active = lora_active self.input_fc = NoisyLoRALinear(state_dim, self.model_dim, r=lora_r, alpha=lora_alpha, lora_active=lora_active, sigma_init=sigma_init) encoder_layer = TransformerEncoderLayerRelative(d_model=model_dim, nhead=nhead, lora_r=lora_r, alpha=lora_alpha, lora_active=lora_active, sigma_init=sigma_init) self.transformer = TransformerEncoderRelative(encoder_layer, num_layers=num_layers) self.output_fc = NoisyLoRALinear(self.model_dim, output_dim, r=lora_r, alpha=lora_alpha, lora_active=lora_active, sigma_init=sigma_init) self._initialize_weights() def forward(self, x): x = self.input_fc(x) x = x.permute(1, 0, 2) x = self.transformer(x) x = x.mean(dim=0) output = self.output_fc(x) return output


यो स्निपेटले प्रवाहलाई हाइलाइट गर्दछ: कच्चा अवस्थाहरू input_fc (आवाज र सम्भावित कम-रैंक अनुकूलनहरूको साथ बढाइएको रैखिक तह) मार्फत प्रवेश गर्दछ, स्ट्याक गरिएको TransformerEncoderLayerRelative मोड्युलहरू मार्फत यात्रा गर्दछ जसले अस्थायी र सापेक्ष स्थितिगत जानकारी लिन्छ, र अन्तमा output_fc द्वारा कार्यहरूमा संक्षेप गरिन्छ। यो डिजाइनले मोडेललाई विभिन्न बिन्दुहरूमा घटनाहरू तौल गर्न अनुमति दिन्छ, पुनरावर्ती ढाँचाहरू वा विसंगतिहरू पहिचान गर्न जसले लाभदायक अवसरहरूको सुझाव दिन सक्छ।


यदि ट्रान्सफर्मर मोडेलले एजेन्टको "आँखा" र "कान" उपलब्ध गराउँछ भने, TradingEnv वर्गले यसले अन्तरक्रिया गर्ने संसारलाई सिमुलेट गर्छ। TradingEnv नामको यो वातावरणीय वर्गले कार्य गर्नुको अर्थ के हो - जस्तै खोल्ने वा बन्द गर्ने स्थितिहरू - र पुरस्कारहरू कसरी तोकिन्छ भनेर परिभाषित गर्दछ। वातावरण भित्र, एजेन्टले मूल्य परिवर्तनहरू, प्राविधिक सूचकहरू, र यसको हालको होल्डिंगहरू अवलोकन गर्दछ। निम्न अंशले कसरी वातावरणले बजार डेटा र एजेन्ट स्थितिहरूबाट राज्यहरू निर्माण गर्छ देखाउँछ:


 def get_state(self): states = [] current_timestamp = self.tech_array.iloc[self.time]['timestamp'] weight_long = float(self.stocks_long * self.current_price / self.total_asset) if self.total_asset > 0 else 0.0 weight_short = float(self.stocks_short * self.current_price / self.total_asset) if self.total_asset > 0 else 0.0 for _ in range(self.lookback): row = self.precomputed_tech.get(current_timestamp) if row is not None: features = row.drop(['timestamp', 'date']).astype(np.float32).values state_row = np.concatenate(([weight_long, weight_short], features)).astype(np.float32) else: state_row = np.zeros(self.state_dim, dtype=np.float32) states.append(state_row) current_timestamp -= self.get_timeframe_in_seconds() states = states[::-1] # ensure chronological order state = torch.tensor(np.array(states, dtype=np.float32), dtype=torch.float32).unsqueeze(0).to(self.device) return state


यहाँ, वातावरणले स्थिति जानकारी र सुविधाहरूको ऐतिहासिक विन्डो समावेश गर्ने समृद्ध राज्य इम्बेडिङ बनाउँछ। यो विन्डो गरिएको परिप्रेक्ष्य प्रदान गरेर, ट्रान्सफर्मरले अस्थायी ढाँचाहरू मोडेल गर्न सक्छ। वातावरणमा प्रत्येक चरणले स्थिति अद्यावधिक गर्दछ, नाफा वा नोक्सान गणना गर्दछ, र एजेन्टको लागि नयाँ अवस्था र इनाम फर्काउँछ। यो चक्रीय आदानप्रदानले एजेन्टलाई के काम गर्छ र के गर्दैन भनेर जान्न दिँदै प्रतिक्रिया लुपलाई बढावा दिन्छ।


निर्णय गर्ने इन्जिन DiscreteDDQNAgent वर्गमा रहन्छ, जसले डबल DQN दृष्टिकोण लागू गर्दछ। डबल DQN ले कार्य चयन र मूल्य अनुमानका लागि छुट्टाछुट्टै नेटवर्कहरू प्रयोग गरेर Q-सिकाइमा प्रख्यात ओभरस्टिमेसन पूर्वाग्रहलाई सम्बोधन गर्न मद्दत गर्दछ। एजेन्टले ट्रान्सफर्मर-आधारित मोडेलको online_nettarget_net उदाहरणहरू कायम राख्छ र विगतका अनुभवहरू नमूना गर्न रिप्ले बफर प्रयोग गर्दछ। तालिमको बखत, यसले अनुमानित Q-मानहरू र लक्षित नेटवर्कबाट व्युत्पन्न लक्ष्य Q-मानहरू बीचको भिन्नतालाई कम गरेर यसको प्यारामिटरहरू अद्यावधिक गर्दछ:


 def update(self): self.online_net.train() if len(self.memory) < self.batch_size: return None states, actions, rewards, next_states, dones = self.memory.sample(self.batch_size) q_values = self.online_net(states).gather(1, actions.unsqueeze(1)).squeeze(1) with torch.no_grad(): next_q_values = self.target_net(next_states).gather(1, self.online_net(next_states).argmax(dim=1).unsqueeze(1)).squeeze(1) target_q_values = rewards + self.gamma * next_q_values * (1 - dones) ddqn_loss = self.loss_fn(q_values, target_q_values.detach()) self.optimizer.zero_grad() ddqn_loss.backward() torch.nn.utils.clip_grad_norm_(self.online_net.parameters(), max_norm=1.0) self.optimizer.step() self.soft_update() return ddqn_loss.item()


यो कोडले सावधानीपूर्वक प्रशिक्षण दिनचर्या प्रकट गर्दछ: एजेन्टले बारम्बार विगतका ट्रान्जिसनहरूको मिनी-ब्याचहरू नमूनाहरू, DDQN घाटा गणना गर्दछ, र online_net लाई अद्यावधिक गर्दछ। आवधिक रूपमा, यसले बिस्तारै सुधारहरू ट्र्याक गर्न target_net को नरम अपडेट प्रदर्शन गर्दछ। डबल DQN को स्थिर सिकाइ गतिशीलतासँग ट्रान्सफर्मरको ढाँचा पहिचान क्षमताहरू संयोजन गरेर, एजेन्ट बिस्तारै लाभदायक ट्रेडहरू छनौट गर्न माहिर हुन्छ।


तर, बजार अवस्था कहिल्यै स्थिर रहँदैन। अस्थिरतामा परिवर्तन, नियामक परिवर्तनहरू, वा अचानक तरलता घटनाहरूले हिजोका विजेताहरूलाई आजको हार्नेहरूमा परिणत गर्न सक्छ। त्यस्ता परिवर्तनहरू ह्यान्डल गर्न, टेस्ट-टाइम ट्रेनिङ (टीटीटी) को अवधारणा पेश गरिएको छ। ठूलो मात्रामा अनुभव सङ्कलन गरिसकेपछि गरिएका अद्यावधिकहरूमा मात्र भर पर्नुको सट्टा, TTT ले सञ्जालका केही भागहरूलाई नयाँ राज्यहरू आइपुग्दा पनि, अनुमानको समयमा पनि गतिशील रूपमा अनुकूलन गर्न अनुमति दिन्छ। यो द्रुत अनुकूलनले एजेन्टलाई पूर्ण पुन: प्रशिक्षण चक्रको प्रतीक्षा नगरी अप्रत्याशित परिस्थितिहरूमा समायोजन गर्दै उडानमा आफ्नो रणनीतिहरू पुन: क्यालिब्रेट गर्न सक्षम बनाउँछ।


यस कोडमा, TTT लाई अनुमानको समयमा प्यारामिटरहरू छनौट गरी प्रशिक्षण र प्यारामिटरहरूको सानो उपसमूहमा ध्यान केन्द्रित गरेर सहजीकरण गरिएको छ। एजेन्टले, उदाहरणका लागि, नयाँ ढाँचाहरू द्रुत रूपमा अवशोषित गर्न यसको नेटवर्कको एक भाग परिमार्जन गर्न सक्छ। विधिहरू activate_lora()deactivate_lora() (हामी ट्रान्सफर्मर, Env, DDQN, र TTT तर्कमा केन्द्रित भएकाले अहिले देखाइएको छैन) यी अनुकूलन प्यारामिटरहरूलाई अन र अफ टगल गर्दछ। जबकि त्यो कोड स्निपेटले विशेष रूपमा LoRA (निम्न-दर्जा अनुकूलन) सन्दर्भ गर्दछ, उही दर्शन लागू हुन्छ: TTT भनेको परीक्षणको समयमा सिक्नको लागि मोडेलका निश्चित भागहरूलाई सक्षम पार्नु हो। जब TTT मोड सक्रिय हुन्छ, एक विशेष अनुकूलकले यी प्यारामिटरहरूलाई स्थानमा अद्यावधिक गर्दछ:


 def update_auxiliary(self, state): self.autoencoder.train() self.online_net.train() # Ensure noise and adaptive params are active masked_state, target_state = self.mask_input(state) masked_state_flat = masked_state.view(state.size(0), -1) target_state_flat = target_state.view(state.size(0), -1) reconstructed = self.autoencoder(masked_state_flat) aux_loss = F.mse_loss(reconstructed, target_state_flat) self.autoencoder_optimizer.zero_grad() self.ttt_optimizer.zero_grad() aux_loss.backward() torch.nn.utils.clip_grad_norm_(self.autoencoder.parameters(), max_norm=1.0) torch.nn.utils.clip_grad_norm_(filter(lambda p: p.requires_grad, self.online_net.parameters()), max_norm=1.0) self.autoencoder_optimizer.step() self.ttt_optimizer.step() self.autoencoder.eval() return aux_loss.item()


यो सहायक अपडेट दिनचर्या, परीक्षणको समयमा ट्रिगर गरिएको, प्रणालीको अनुकूलनता प्रदर्शन गर्दछ। एजेन्टले जानाजानी केही इनपुट सुविधाहरू मास्क गर्दछ र हालको बजार व्यवस्थाको आन्तरिक प्रतिनिधित्वलाई सुधार गर्दै तिनीहरूलाई पुन: निर्माण गर्ने प्रयास गर्दछ। त्यसो गरेर, यसले द्रुत रूपमा डेटा परिवर्तनहरूमा प्रतिक्रिया दिन सक्छ र सधैं परिवर्तनशील परिदृश्यमा लाभदायक रणनीतिहरू कायम राख्न सक्छ।


संक्षेपमा, यी कम्पोनेन्टहरू बीचको अन्तरक्रियाले बलियो र लचिलो व्यापारिक मेसिन सिर्जना गर्दछ। ट्रान्सफर्मर-आधारित मोडेलले बजार संकेतहरूको समृद्ध, सन्दर्भ-संवेदनशील समझ प्रदान गर्दछ। TradingEnv ले यथार्थपरक अवस्था र प्रतिक्रिया लूपहरू अनुकरण गर्दछ। डबल DQN फ्रेमवर्कले व्यापार निर्णयहरूलाई क्रमशः परिष्कृत गर्दै कार्य-मानहरूको स्थिर सिकाइ सुनिश्चित गर्दछ। अन्तमा, TTT ले एजेन्टलाई फुर्तिलो रहन अनुमति दिन्छ, यसको आन्तरिक मापदण्डहरू समायोजन गर्दै जब उपन्यास ढाँचाहरूसँग सामना हुन्छ। सँगै, यी तत्वहरूले एक प्रणालीको लागि चरण सेट गर्दछ जुन ढाँचा पहिचानमा परिष्कृत र बजार अनिश्चितताको सामनामा लचिलो छ, अर्को पुस्ताको व्यापारिक रणनीतिहरूको लागि एक आकर्षक दृष्टि प्रदान गर्दछ।


नतिजा के हो?

  • बहु पूँजी दोब्बरहरू: ऐतिहासिक दैनिक BTC/USDT डाटामा, यो एजेन्टले सानो लाभ मात्र निकालेन - यसले यसको प्रारम्भिक पूँजी धेरै पटक दोब्बर बनायो। यदि त्यो वेक-अप कल होइन भने, मलाई थाहा छैन के हो।
  • स्थिर, कम घाटा र स्पष्ट नीतिहरू: TensorBoard लगहरूले प्रभावकारी रूपमा न्यून स्तरमा घटेको देखाउँछ, र विभिन्न व्यापारिक कार्यहरूका लागि Q-मान वितरणले फरक, अर्थपूर्ण ढाँचाहरू बनाएको छ। अनुवाद: मोडेल अनुमान मात्र होइन - यो एक लगातार लाभदायक दृष्टिकोण सिक्दैछ।


अर्को-स्तर सम्भावित

  • अर्डरबुक-स्तर डाटा: अहिले, हामी OHLCV सँग नाचिरहेका छौं। मलाई अर्डरबुकको गहिराइ दिनुहोस्, र म तपाईंलाई अल्फा दिनेछु जुन व्यावहारिक रूपमा आणविक छ। तपाईंको आन्तरिक तरलता पोखरीले माइक्रोसेकेन्ड-स्तर मूल्य चालहरू अनुमान गर्न र शोषण गर्न सक्ने मोडेलको योग्य छ।
  • बहु-समय फ्रेम एकीकरण: Intraday scalping वा लामो-समय स्थिति ट्रेडहरू? ट्रान्सफर्मरहरूको साथमा, हामी धेरै ग्रेन्युलेरिटीहरू फ्यूज गर्न सक्छौं — दैनिक प्रचलनहरूसँग 1-मिनेट चार्टहरू — कुनै एकल समयसीमा प्रस्ताव गर्न नसक्ने संकेतहरू उजागर गर्दै।
  • शासन परिवर्तनको लागि बलियोता: बजारले सधैं ढाँचाहरू तोड्छ। LoRA र TTT सँग, यो एजेन्टले रातभरि तानेको क्याफिनेटेड इन्टर्न भन्दा छिटो अनुकूलन गर्न सक्छ। रातारात अस्थिरता स्पाइक? फेड घोषणा? मोडेल भन्छिन्, "यसलाई ल्याउनुहोस्।"


टिप्पणी गर्नुहोस्, संलग्न हुनुहोस्, एक सम्झौता प्रस्ताव गर्नुहोस् 🤯

यो क्षणिक जिज्ञासा हुन नदिनुहोस्। टिप्पणी, आलोचना, प्रश्न सोध्नुहोस्। यदि तपाइँ तपाइँको रणनीति कसरी पिभोट गर्ने भनेर सोच्दै हुनुहुन्छ, वा तपाइँको अवस्थित स्ट्याकमा लचिलो DRL समाधान कसरी एकीकृत गर्ने भनेर एक टिप्पणी छोड्नुहोस्।