जेफिरनेट लोगो

वित्त में पायथन: ज्यूपिटर नोटबुक के भीतर वास्तविक समय डेटा स्ट्रीमिंग - केडीनगेट्स

दिनांक:

वित्त में पायथन: ज्यूपिटर नोटबुक के भीतर रियल टाइम डेटा स्ट्रीमिंग
 

इस ब्लॉग में, आप अपने पसंदीदा टूल, ज्यूपिटर नोटबुक की सुविधा के भीतर, वास्तविक समय में लाइव डेटा स्ट्रीम की कल्पना करना सीखेंगे। 

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

यहां, हम आपको दिखाएंगे कि ज्यूपिटर नोटबुक में मैन्युअल अपडेट से स्ट्रीमिंग या रीयल-टाइम विधि में कैसे जाएं, जिससे आपकी परियोजनाएं अधिक कुशल और प्रतिक्रियाशील बन जाएंगी।

क्या कवर किया गया है:

  • वास्तविक समय विज़ुअलाइज़ेशन: आप सीखेंगे कि डेटा को कैसे जीवंत बनाया जाए, इसे अपनी आंखों के सामने पल-पल विकसित होते हुए देखें।
  • ज्यूपिटर नोटबुक महारत: न केवल स्थिर डेटा विश्लेषण के लिए बल्कि गतिशील, स्ट्रीमिंग डेटा के लिए ज्यूपिटर नोटबुक की पूरी शक्ति का उपयोग करें।
  • क्वांट फाइनेंस उपयोग मामले में पायथन: वास्तविक दुनिया के डेटा के साथ वित्त में व्यापक रूप से उपयोग किए जाने वाले कार्यान्वयन को लागू करते हुए, एक व्यावहारिक वित्तीय अनुप्रयोग में गोता लगाएँ।
  • स्ट्रीम डेटा प्रोसेसिंग: वास्तविक समय में डेटा प्रसंस्करण की नींव और लाभों को समझें, यह कौशल आज की तेज़ गति वाली डेटा दुनिया में तेजी से महत्वपूर्ण होता जा रहा है।

इस ब्लॉग के अंत तक, आप जानेंगे कि अपने ज्यूपिटर नोटबुक में नीचे दिए गए समान वास्तविक समय विज़ुअलाइज़ेशन कैसे बनाएं।

 

वित्त में पायथन: ज्यूपिटर नोटबुक के भीतर रियल टाइम डेटा स्ट्रीमिंग

हमारे प्रोजेक्ट के केंद्र में स्ट्रीम प्रोसेसिंग की अवधारणा निहित है। 

सीधे शब्दों में कहें तो, स्ट्रीम प्रोसेसिंग वास्तविक समय में डेटा को संभालने और उसका विश्लेषण करने के बारे में है। इसे व्यस्त समय की ड्राइव के दौरान Google मानचित्र की तरह समझें, जहां आप ट्रैफ़िक अपडेट लाइव देखते हैं, जिससे तत्काल और कुशल मार्ग परिवर्तन सक्षम होते हैं।

दिलचस्प बात यह है कि इस फोर्ब्स में गोल्डमैन सैक्स के सीआईओ के अनुसार पॉडकास्टस्ट्रीम या रीयल-टाइम डेटा प्रोसेसिंग की ओर बढ़ना उन महत्वपूर्ण रुझानों में से एक है जिसकी ओर हम बढ़ रहे हैं। 

यह ज्यूपिटर नोटबुक के इंटरैक्टिव और परिचित वातावरण के साथ वास्तविक समय डेटा प्रोसेसिंग की शक्ति के संयोजन के बारे में है। 

इसके अलावा, ज्यूपिटर नोटबुक कंटेनरीकृत वातावरण के साथ अच्छा खेलते हैं। इसलिए, हमारी परियोजनाएँ केवल स्थानीय मशीनों पर अटकी नहीं हैं; हम उन्हें कहीं भी ले जा सकते हैं - किसी सहकर्मी के लैपटॉप से ​​लेकर क्लाउड सर्वर तक किसी भी चीज़ पर उन्हें आसानी से चला सकते हैं।

वित्त में, हर सेकंड मायने रखता है, चाहे धोखाधड़ी का पता लगाने के लिए या व्यापार के लिए, और इसीलिए स्ट्रीम डेटा प्रोसेसिंग आवश्यक हो गई है। यहां स्पॉटलाइट चालू है बोलिंजर बैंड्स , वित्तीय व्यापार के लिए सहायक उपकरण। इस उपकरण में शामिल हैं:

  • मध्य बैंड: यह एक 20-अवधि की चलती औसत है, जो पिछले 20 अवधियों (जैसे उच्च-आवृत्ति विश्लेषण के लिए 20 मिनट) में औसत स्टॉक मूल्य की गणना करती है, जो हाल के मूल्य रुझानों का एक स्नैपशॉट देती है।
  • बाहरी बैंड: मध्य बैंड के ऊपर और नीचे 2 मानक विचलन स्थित हैं, वे बाजार की अस्थिरता का संकेत देते हैं - व्यापक बैंड अधिक अस्थिरता का संकेत देते हैं, और संकीर्ण बैंड, कम।

 

वित्त में पायथन: ज्यूपिटर नोटबुक के भीतर रियल टाइम डेटा स्ट्रीमिंग
 

बोलिंजर बैंड्स में, संभावित रूप से ओवरबॉट की स्थिति का संकेत तब दिया जाता है जब चलती औसत कीमत ऊपरी बैंड (बेचने का संकेत, अक्सर लाल रंग में चिह्नित) को छूती है या उससे अधिक हो जाती है, और ओवरसोल्ड स्थितियों का संकेत तब दिया जाता है जब कीमत निचले बैंड (खरीदने का संकेत) से नीचे गिर जाती है , आमतौर पर हरे रंग में चिह्नित)।

एल्गो व्यापारी आमतौर पर बोलिंगर बैंड को अन्य तकनीकी संकेतकों के साथ जोड़ते हैं। 

यहां, हमने ट्रेडिंग वॉल्यूम को एकीकृत करके अपने बोलिंगर बैंड तैयार करते समय एक आवश्यक बदलाव किया। परंपरागत रूप से, बोलिंगर बैंड ट्रेडिंग वॉल्यूम पर विचार नहीं करते हैं और इसकी गणना केवल मूल्य डेटा के आधार पर की जाती है।

इस प्रकार, हमने VWAP ± 2 × VWSTD की दूरी पर बोलिंगर बैंड का संकेत दिया है जहां: 

  • वीडब्ल्यूएपी: ए 1-मिनट की मात्रा-भारित औसत कीमत अधिक मात्रा-संवेदनशील परिप्रेक्ष्य के लिए।
  • VWSTD: एक केंद्रित का प्रतिनिधित्व करता है, 20 मिनट का मानक विचलन, यानी, बाज़ार की अस्थिरता का एक माप।

तकनीकी कार्यान्वयन:

  • हम अस्थायी का उपयोग करते हैं स्लाइडिंग खिड़कियां ('pw.temporal.sliding') 20 मिनट के खंडों में डेटा का विश्लेषण करने के लिए, वास्तविक समय में डेटा पर एक आवर्धक कांच को घुमाने के समान।
  • हम रोजगार देते हैं कम करने वाली ('pw.reducers'), जो प्रत्येक विंडो के लिए एक विशेष परिणाम प्राप्त करने के लिए प्रत्येक विंडो के भीतर डेटा को संसाधित करता है, यानी, इस मामले में मानक विचलन।
  • बहुभुज.आईओ: वास्तविक समय और ऐतिहासिक बाज़ार डेटा का प्रदाता। जबकि आप निश्चित रूप से लाइव डेटा के लिए इसके एपीआई का उपयोग कर सकते हैं, हमने इस डेमो के लिए कुछ डेटा को सीएसवी फ़ाइल में पहले से सहेजा है, जिससे एपीआई कुंजी की आवश्यकता के बिना इसका पालन करना आसान हो जाता है।
  • मार्ग: तेज़ डेटा प्रोसेसिंग के लिए एक ओपन-सोर्स पाइथोनिक फ्रेमवर्क। यह बैच (स्थैतिक) और स्ट्रीमिंग (वास्तविक समय) डेटा दोनों को संभालता है। 
  • bokeh: गतिशील विज़ुअलाइज़ेशन बनाने के लिए आदर्श, बोकेह आकर्षक, इंटरैक्टिव चार्ट के साथ हमारे स्ट्रीमिंग डेटा को जीवंत बनाता है।
  • पैनल: नए डेटा स्ट्रीम आने पर हमारे विज़ुअलाइज़ेशन को अपडेट करने के लिए बोके के साथ काम करते हुए, वास्तविक समय डैशबोर्ड क्षमताओं के साथ हमारे प्रोजेक्ट को बढ़ाता है।

इसमें छह चरण शामिल हैं:

  1. प्रासंगिक फ्रेमवर्क के लिए पाइप इंस्टॉल करना और प्रासंगिक लाइब्रेरी आयात करना।
  2. नमूना डेटा लाया जा रहा है
  3. गणना के लिए डेटा स्रोत स्थापित करना
  4. बोलिंगर बैंड के लिए आवश्यक आँकड़ों की गणना
  5. बोकेह और पैनल का उपयोग करके डैशबोर्ड निर्माण
  6. रन कमांड दबाना

1. आयात और सेटअप

सबसे पहले, आइए आवश्यक घटकों को शीघ्रता से स्थापित करें।

%%capture --no-display
!pip install pathway

 

आवश्यक पुस्तकालयों को आयात करके प्रारंभ करें। ये लाइब्रेरी डेटा प्रोसेसिंग, विज़ुअलाइज़ेशन और इंटरैक्टिव डैशबोर्ड बनाने में मदद करेंगी।

# Importing libraries for data processing, visualization, and dashboard creation

import datetime
import bokeh.models
import bokeh.plotting
import panel
import pathway as pw

2. नमूना डेटा लाया जा रहा है

इसके बाद, GitHub से नमूना डेटा डाउनलोड करें। विज़ुअलाइज़ेशन के लिए हमारे डेटा तक पहुँचने के लिए यह चरण महत्वपूर्ण है। यहां, हमने Apple Inc (AAPL) के स्टॉक मूल्य प्राप्त किए हैं।

# Command to download the sample APPLE INC stock prices extracted via Polygon API and stored in a CSV for ease of review of this notebook.

%%capture --no-display
!wget -nc https://gist.githubusercontent.com/janchorowski/e351af72ecd8d206a34763a428826ab7/raw/ticker.csv

 

नोट: यह ट्यूटोरियल प्रकाशित शोकेस का लाभ उठाता है यहाँ उत्पन्न करें

3. डेटा स्रोत सेटअप

CSV फ़ाइल का उपयोग करके एक स्ट्रीमिंग डेटा स्रोत बनाएं। यह एक लाइव डेटा स्ट्रीम का अनुकरण करता है, जो पहली बार प्रोजेक्ट बनाते समय एपीआई कुंजी की आवश्यकता के बिना वास्तविक समय डेटा के साथ काम करने का एक व्यावहारिक तरीका प्रदान करता है। 

# Creating a streaming data source from a CSV file

fname = "ticker.csv"
schema = pw.schema_from_csv(fname)
data = pw.demo.replay_csv(fname, schema=schema, input_rate=1000)

# Uncommenting the line below will override the data table defined above and switch the data source to static mode, which is helpful for initial testing
# data = pw.io.csv.read(fname, schema=schema, mode="static")

# Parsing the timestamps in the data

data = data.with_columns(t=data.t.dt.utc_from_timestamp(unit="ms"))

 

नोट: कोई भी डेटा प्रोसेसिंग तुरंत नहीं होती है, लेकिन अंत में जब हम रन कमांड दबाते हैं।

4. बोलिंगर बैंड के लिए आवश्यक आँकड़ों की गणना

यहां, हम संक्षेप में उस ट्रेडिंग एल्गोरिदम का निर्माण करेंगे जिसकी हमने ऊपर चर्चा की थी। हमारे पास Apple Inc. के स्टॉक मूल्यों की एक डमी स्ट्रीम है। अब, बोलिंगर बैंड बनाने के लिए, 

  1. हम भारित 20 मिनट के मानक विचलन (VWSTD) की गणना करेंगे
  2. कीमतों का 1 मिनट का भारित रनिंग औसत (VWAP)
  3. उपरोक्त दोनों को जोड़ो.
# Calculating the 20-minute rolling statistics for Bollinger Bands


minute_20_stats = (
    data.windowby(
        pw.this.t,
        window=pw.temporal.sliding(
            hop=datetime.timedelta(minutes=1),
            duration=datetime.timedelta(minutes=20),
        ),
        behavior=pw.temporal.exactly_once_behavior(),
        instance=pw.this.ticker,
    )
    .reduce(
        ticker=pw.this._pw_instance,
        t=pw.this._pw_window_end,
        volume=pw.reducers.sum(pw.this.volume),
        transact_total=pw.reducers.sum(pw.this.volume * pw.this.vwap),
        transact_total2=pw.reducers.sum(pw.this.volume * pw.this.vwap**2),
    )
    .with_columns(vwap=pw.this.transact_total / pw.this.volume)
    .with_columns(
        vwstd=(pw.this.transact_total2 / pw.this.volume - pw.this.vwap**2)
        ** 0.5
    )
    .with_columns(
        bollinger_upper=pw.this.vwap + 2 * pw.this.vwstd,
        bollinger_lower=pw.this.vwap - 2 * pw.this.vwstd,
    )
)
# Computing the 1-minute rolling statistics

minute_1_stats = (
    data.windowby(
        pw.this.t,
        window=pw.temporal.tumbling(datetime.timedelta(minutes=1)),
        behavior=pw.temporal.exactly_once_behavior(),
        instance=pw.this.ticker,
    )
    .reduce(
        ticker=pw.this._pw_instance,
        t=pw.this._pw_window_end,
        volume=pw.reducers.sum(pw.this.volume),
        transact_total=pw.reducers.sum(pw.this.volume * pw.this.vwap),
    )
    .with_columns(vwap=pw.this.transact_total / pw.this.volume)
)
# Joining the 1-minute and 20-minute statistics for comprehensive analysis

joint_stats = (
    minute_1_stats.join(
        minute_20_stats,
        pw.left.t == pw.right.t,
        pw.left.ticker == pw.right.ticker,
    )
    .select(
        *pw.left,
        bollinger_lower=pw.right.bollinger_lower,
        bollinger_upper=pw.right.bollinger_upper
    )
    .with_columns(
        is_alert=(pw.this.volume > 10000)
        & (
            (pw.this.vwap > pw.this.bollinger_upper)
            | (pw.this.vwap  pw.this.bollinger_lower)
        )
    )
    .with_columns(
        action=pw.if_else(
            pw.this.is_alert,
            pw.if_else(
                pw.this.vwap > pw.this.bollinger_upper, "sell", "buy"
            ),
            "hold",
        )
    )
)
alerts = joint_stats.filter(pw.this.is_alert)

 

आप नोटबुक की जांच कर सकते हैं यहाँ उत्पन्न करें गणनाओं की गहरी समझ के लिए. 

5. डैशबोर्ड निर्माण

अब बोके प्लॉट और पैनल टेबल विज़ुअलाइज़ेशन के साथ हमारे विश्लेषण को जीवंत बनाने का समय आ गया है। 

# Function to create the statistics plot


def stats_plotter(src):
    actions = ["buy", "sell", "hold"]
    color_map = bokeh.models.CategoricalColorMapper(
        factors=actions, palette=("#00ff00", "#ff0000", "#00000000")
    )

    fig = bokeh.plotting.figure(
        height=400,
        width=600,
        title="20 minutes Bollinger bands with last 1 minute average",
        x_axis_type="datetime",
        y_range=(188.5, 191),
    )
    fig.line("t", "vwap", source=src)
    band = bokeh.models.Band(
        base="t",
        lower="bollinger_lower",
        upper="bollinger_upper",
        source=src,
        fill_alpha=0.3,
        fill_color="gray",
        line_color="black",
    )
    fig.scatter(
        "t",
        "vwap",
        color={"field": "action", "transform": color_map},
        size=10,
        marker="circle",
        source=src,
    )
    fig.add_layout(band)
    return fig


# Combining the plot and table in a Panel Row

viz = panel.Row(
    joint_stats.plot(stats_plotter, sorting_col="t"),
    alerts.select(
        pw.this.ticker, pw.this.t, pw.this.vwap, pw.this.action
    ).show(include_id=False, sorters=[{"field": "t", "dir": "desc"}]),
)
viz

 

जब आप इस सेल को चलाते हैं, तो प्लॉट और टेबल के लिए आपकी नोटबुक में प्लेसहोल्डर कंटेनर बन जाते हैं। गणना शुरू होते ही वे लाइव डेटा से भर जाएंगे। 

6. संगणना चलाना

सभी तैयारियां पूरी हो चुकी हैं, और डेटा प्रोसेसिंग इंजन चलाने का समय आ गया है।

# Command to start the Pathway data processing engine
%%capture --no-display
pw.run()

 

जैसे ही डैशबोर्ड वास्तविक समय में अपडेट होता है, आप देखेंगे कि बोलिंगर बैंड किस प्रकार गतिविधियों को ट्रिगर करते हैं - खरीदने के लिए हरा मार्कर और बेचने के लिए लाल, अक्सर थोड़ी अधिक कीमत पर। 

नोट: विजेट आरंभ होने और दिखाई देने के बाद आपको मैन्युअल रूप से pw.run() चलाना चाहिए। आप इस GitHub अंक में अधिक विवरण पा सकते हैं यहाँ उत्पन्न करें.

इस ब्लॉग में, हम बोलिंजर बैंड्स को समझते हैं और आपको ज्यूपिटर नोटबुक में वास्तविक समय के वित्तीय डेटा को देखने की यात्रा पर ले जाते हैं। हमने दिखाया कि बोलिंगर बैंड और ओपन-सोर्स पाइथोनिक टूल के मिश्रण का उपयोग करके लाइव डेटा स्ट्रीम को कार्रवाई योग्य अंतर्दृष्टि में कैसे बदला जाए।

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

  • याहू फाइनेंस, पॉलीगॉन, क्रैकेन आदि जैसे एपीआई से लाइव स्टॉक मूल्य प्राप्त करके अपनी पसंद के स्टॉक के लिए ऐसा करें।
  • अपने पसंदीदा स्टॉक, ईटीएफ आदि के समूह के लिए ऐसा करना। 
  • बोलिंजर बैंड्स के अलावा कुछ अन्य ट्रेडिंग टूल का लाभ उठाना।

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

हैप्पी स्ट्रीमिंग!
 
 

मुदित श्रीवास्तव Pathway में काम करता है इससे पहले, वह एआई प्लैनेट के संस्थापक सदस्य थे और एलएलएम और रियल-टाइम एमएल के क्षेत्र में एक सक्रिय सामुदायिक निर्माता हैं।

स्पॉट_आईएमजी

नवीनतम खुफिया

स्पॉट_आईएमजी