Pazar dinamiklerinde uzmanlaşmak: Ultra hassas Onay Geçmişi ile işlem maliyeti analizlerini dönüştürmek – Apache Spark için PCAP ve Amazon Athena | Amazon Web Hizmetleri

Pazar dinamiklerinde uzmanlaşmak: Ultra hassas Onay Geçmişi ile işlem maliyeti analizlerini dönüştürmek – Apache Spark için PCAP ve Amazon Athena | Amazon Web Hizmetleri

Kaynak Düğüm: 3091357

Bu yazı LSEG'in Düşük Gecikme Grubundan Pramod Nayak, LakshmiKanth Mannem ve Vivek Aggarwal ile birlikte yazılmıştır.

İşlem maliyeti analizi (TCA), yatırımcılar, portföy yöneticileri ve komisyoncular tarafından işlem öncesi ve işlem sonrası analiz için yaygın olarak kullanılır ve işlem maliyetlerini ve işlem stratejilerinin etkinliğini ölçmelerine ve optimize etmelerine yardımcı olur. Bu yazıda, opsiyonların teklif-ask spreadlerini analiz ediyoruz. LSEG Kene Geçmişi – PCAP veri kümesi kullanılarak Apache Spark için Amazon Athena. Büyük veri kümeleri için bile altyapı kurma veya Spark'ı yapılandırma konusunda endişelenmenize gerek kalmadan verilere nasıl erişeceğinizi, verilere nasıl uygulayacağınızı, veri kümesini sorgulayıp filtreleyeceğinizi ve analiz sonuçlarını nasıl görselleştireceğinizi gösteriyoruz.

Olayın Arka Planı

Opsiyon Fiyat Raporlama Otoritesi (OPRA), ABD Opsiyonları için son satış raporlarını, fiyat tekliflerini ve ilgili bilgileri toplayan, birleştiren ve dağıtan önemli bir menkul kıymet bilgi işlemcisi olarak hizmet vermektedir. 18 aktif ABD Opsiyon borsası ve 1.5 milyondan fazla uygun sözleşmeyle OPRA, kapsamlı piyasa verileri sağlamada önemli bir rol oynamaktadır.

5 Şubat 2024'te Menkul Kıymetler Endüstrisi Otomasyon Şirketi (SIAC), OPRA feed'ini 48'den 96'ya çok noktaya yayın kanalına yükseltmeye hazırlanıyor. Bu geliştirme, ABD opsiyon piyasasında artan ticaret faaliyeti ve oynaklığa yanıt olarak sembol dağıtımını ve hat kapasitesi kullanımını optimize etmeyi amaçlıyor. SIAC, firmaların saniyede 37.3 GBit'e kadar en yüksek veri hızlarına hazırlanmalarını önerdi.

Yükseltme, yayınlanan verilerin toplam hacmini anında değiştirmese de OPRA'nın verileri çok daha hızlı bir şekilde yaymasını sağlıyor. Bu geçiş, dinamik opsiyon piyasasının taleplerini karşılamak açısından çok önemlidir.

OPRA, 150.4'ün üçüncü çeyreğinde tek günde 3 milyar mesaja ulaşarak zirveye ulaşarak ve tek bir günde 2023 milyar mesajlık kapasite boşluğu gereksinimiyle en hacimli yayınlardan biri olarak öne çıkıyor. Her bir mesajın yakalanması, işlem maliyeti analitiği, piyasa likiditesinin izlenmesi, ticaret stratejisi değerlendirmesi ve pazar araştırması için kritik öneme sahiptir.

Veriler hakkında

LSEG Kene Geçmişi – PCAP 30 PB'yi aşan, ultra yüksek kaliteli küresel pazar verilerini barındıran bulut tabanlı bir depodur. Bu veriler, dünya çapındaki büyük birincil ve yedek değişim veri merkezlerinde stratejik olarak konumlandırılmış yedekli yakalama süreçleri kullanılarak, doğrudan değişim veri merkezlerinde titizlikle yakalanır. LSEG'nin yakalama teknolojisi, kayıpsız veri yakalamayı sağlar ve nanosaniye zaman damgası hassasiyeti için bir GPS zaman kaynağı kullanır. Ek olarak, veri boşluklarını sorunsuz bir şekilde doldurmak için gelişmiş veri arbitraj teknikleri kullanılır. Yakalamanın ardından veriler titiz bir işleme ve tahkime tabi tutulur ve daha sonra kullanılarak Parke formatına normalleştirilir. LSEG'nin Gerçek Zamanlı Ultra Doğrudan özelliği (RTUD) besleme işleyicileri.

Verileri analize hazırlamanın ayrılmaz bir parçası olan normalleştirme süreci, günde 6 TB'a kadar sıkıştırılmış Parke dosyası oluşturur. Büyük miktarda veri, OPRA'nın kapsayıcı doğasına, birden fazla borsaya yayılmasına ve farklı niteliklerle karakterize edilen çok sayıda opsiyon sözleşmesi içermesine bağlanıyor. Opsiyon borsalarında artan piyasa oynaklığı ve piyasa yapıcılık faaliyeti, OPRA'da yayınlanan veri hacmine daha da katkıda bulunmaktadır.

Kene Geçmişi – PCAP'ın özellikleri, firmaların aşağıdakiler de dahil olmak üzere çeşitli analizler yürütmesine olanak tanır:

  • İşlem öncesi analiz – Potansiyel ticaret etkisini değerlendirin ve geçmiş verilere dayalı farklı uygulama stratejilerini keşfedin
  • İşlem sonrası değerlendirme – Yürütme stratejilerinin performansını değerlendirmek için karşılaştırmalı değerlendirmelere göre fiili yürütme maliyetlerini ölçün
  • Optimize infaz – Piyasa etkisini en aza indirmek ve genel işlem maliyetlerini azaltmak için geçmiş piyasa modellerine dayalı uygulama stratejilerine ince ayar yapın
  • Risk yönetimi – Kayma modellerini belirleyin, aykırı değerleri belirleyin ve ticari faaliyetlerle ilişkili riskleri proaktif olarak yönetin
  • performans ilişkilendirme – Portföy performansını analiz ederken alım satım kararlarının etkisini yatırım kararlarından ayırın

LSEG Onay Geçmişi – PCAP veri seti şu adreste mevcuttur: AWS Veri Değişimi ve şu adresten erişilebilir: AWS Pazar Yeri. Ile Amazon S3 için AWS Veri DeğişimiPCAP verilerine doğrudan LSEG'lerden erişebilirsiniz. Amazon Basit Depolama Hizmeti (Amazon S3) paketlerini kullanarak firmaların kendi veri kopyalarını saklama ihtiyacını ortadan kaldırır. Bu yaklaşım, müşterilerin yüksek kaliteli PCAP'ye veya normalleştirilmiş verilere kullanım, entegrasyon ve kolaylık ile anında erişmesini sağlayarak veri yönetimini ve depolamayı kolaylaştırır. önemli miktarda veri depolama tasarrufu.

Apache Spark için Athena

Analitik çabalar için, Apache Spark için Athena Athena konsolu veya Athena API'leri aracılığıyla erişilebilen basitleştirilmiş bir dizüstü bilgisayar deneyimi sunarak etkileşimli Apache Spark uygulamaları oluşturmanıza olanak tanır. Optimize edilmiş Spark çalışma süresiyle Athena, Spark motorlarının sayısını bir saniyeden daha kısa sürede dinamik olarak ölçeklendirerek petabaytlarca verinin analizine yardımcı olur. Dahası, pandas ve NumPy gibi yaygın Python kitaplıkları sorunsuz bir şekilde entegre edilerek karmaşık uygulama mantığının oluşturulmasına olanak tanır. Esneklik, not defterlerinde kullanılmak üzere özel kitaplıkların içe aktarılmasına kadar uzanır. Athena for Spark, çoğu açık veri formatını barındırır ve AWS Tutkal Veri Kataloğu.

Veri kümesi

Bu analiz için 17 Mayıs 2023 tarihli LSEG Tick History – PCAP OPRA veri kümesini kullandık. Bu veri kümesi aşağıdaki bileşenlerden oluşur:

  • En iyi teklif ve teklif (BBO) – Belirli bir borsadaki en yüksek teklifi ve en düşük menkul kıymet talebini raporlar
  • Ulusal en iyi teklif ve teklif (NBBO) – Tüm borsalarda en yüksek teklifi ve en düşük menkul kıymet talebini raporlar
  • İşlemler – Tüm borsalarda tamamlanan işlemleri kaydeder

Veri kümesi aşağıdaki veri hacimlerini içerir:

  • İşlemler – Yaklaşık 160 sıkıştırılmış Parke dosyasına dağıtılan 60 MB
  • BBO – Yaklaşık 2.4 sıkıştırılmış Parke dosyasına dağıtılan 300 TB
  • NBBO – Yaklaşık 2.8 sıkıştırılmış Parke dosyasına dağıtılan 200 TB

Analize genel bakış

İşlem Maliyeti Analizi (TCA) için OPRA Onay Geçmişi verilerinin analiz edilmesi, belirli bir ticari olay etrafındaki piyasa fiyatlarının ve işlemlerin incelenmesini içerir. Bu çalışmanın bir parçası olarak aşağıdaki ölçümleri kullanıyoruz:

  • Alıntılanan spread (QS) – BBO talebi ile BBO teklifi arasındaki fark olarak hesaplanır
  • Etkili yayılma (ES) – İşlem fiyatı ile BBO'nun orta noktası arasındaki fark olarak hesaplanır (BBO teklifi + (BBO teklifi – BBO teklifi)/2)
  • Efektif/kotalı spread (EQF) – (ES/QS)*100 olarak hesaplanır

Bu spreadleri işlemden önce ve ayrıca işlemden sonra dört aralıklarla (işlemden hemen sonra, 1 saniye, 10 saniye ve 60 saniye sonra) hesaplıyoruz.

Athena'yı Apache Spark için Yapılandırma

Athena'yı Apache Spark için yapılandırmak için aşağıdaki adımları tamamlayın:

  1. Athena konsolunda, altında BAŞLAYINseçin PySpark ve Spark SQL'i kullanarak verilerinizi analiz edin.
  2. Athena Spark'ı ilk kez kullanıyorsanız, Çalışma grubu oluştur.
  3. İçin Çalışma grubu adı¸ çalışma grubu için bir ad girin, örneğin tca-analysis.
  4. içinde Analiz motoru bölümünde, seçin Apache Spark.
  5. içinde Ek yapılandırmalar bölümünden seçim yapabilirsiniz Varsayılanları kullan veya özel bir şey sağlayın AWS Kimlik ve Erişim Yönetimi Hesaplama sonuçları için (IAM) rolü ve Amazon S3 konumu.
  6. Klinik Çalışma grubu oluştur.
  7. Çalışma grubunu oluşturduktan sonra şuraya gidin: Defterler sekme ve seçim Defter oluştur.
  8. Not defteriniz için bir ad girin; örneğin tca-analysis-with-tick-history.
  9. Klinik oluşturmak Not defterinizi oluşturmak için.

Dizüstü bilgisayarınızı başlatın

Zaten bir Spark çalışma grubu oluşturduysanız Not defteri düzenleyicisini başlat altında BAŞLAYIN.


Not defteriniz oluşturulduktan sonra etkileşimli not defteri düzenleyicisine yönlendirileceksiniz.


Artık aşağıdaki kodu not defterimize ekleyip çalıştırabiliriz.

Bir analiz oluşturun

Bir analiz oluşturmak için aşağıdaki adımları tamamlayın:

  • Ortak kitaplıkları içe aktarın:
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go

  • BBO, NBBO ve işlemler için veri çerçevelerimizi oluşturun:
bbo_quote = spark.read.parquet(f"s3://<bucket>/mt=bbo_quote/f=opra/dt=2023-05-17/*")
bbo_quote.createOrReplaceTempView("bbo_quote")
nbbo_quote = spark.read.parquet(f"s3://<bucket>/mt=nbbo_quote/f=opra/dt=2023-05-17/*")
nbbo_quote.createOrReplaceTempView("nbbo_quote")
trades = spark.read.parquet(f"s3://<bucket>/mt=trade/f=opra/dt=2023-05-17/29_1.parquet")
trades.createOrReplaceTempView("trades")

  • Artık işlem maliyeti analizi için kullanılacak bir işlemi tanımlayabiliriz:
filtered_trades = spark.sql("select Product, Price,Quantity, ReceiptTimestamp, MarketParticipant from trades")

Aşağıdaki çıktıyı alıyoruz:

+---------------------+---------------------+---------------------+-------------------+-----------------+ 
|Product |Price |Quantity |ReceiptTimestamp |MarketParticipant| 
+---------------------+---------------------+---------------------+-------------------+-----------------+ 
|QQQ 230518C00329000|1.1700000000000000000|10.0000000000000000000|1684338565538021907,NYSEArca|
|QQQ 230518C00329000|1.1700000000000000000|20.0000000000000000000|1684338576071397557,NASDAQOMXPHLX|
|QQQ 230518C00329000|1.1600000000000000000|1.0000000000000000000|1684338579104713924,ISE|
|QQQ 230518C00329000|1.1400000000000000000|1.0000000000000000000|1684338580263307057,NASDAQOMXBX_Options|
|QQQ 230518C00329000|1.1200000000000000000|1.0000000000000000000|1684338581025332599,ISE|
+---------------------+---------------------+---------------------+-------------------+-----------------+

Ticari ürün (tp), ticari fiyat (tpr) ve ticaret süresi (tt) için öne çıkan ticari bilgileri ileriye dönük olarak kullanırız.

  • Burada analizimiz için bir dizi yardımcı fonksiyon oluşturuyoruz
def calculate_es_qs_eqf(df, trade_price):
    df['BidPrice'] = df['BidPrice'].astype('double')
    df['AskPrice'] = df['AskPrice'].astype('double')
    df["ES"] = ((df["AskPrice"]-df["BidPrice"])/2) - trade_price
    df["QS"] = df["AskPrice"]-df["BidPrice"]
    df["EQF"] = (df["ES"]/df["QS"])*100
    return df

def get_trade_before_n_seconds(trade_time, df, seconds=0, groupby_col = None):
    nseconds=seconds*1000000000
    nseconds += trade_time
    ret_df = df[df['ReceiptTimestamp'] < nseconds].groupby(groupby_col).last()
    ret_df['BidPrice'] = ret_df['BidPrice'].astype('double')
    ret_df['AskPrice'] = ret_df['AskPrice'].astype('double')
    ret_df = ret_df.reset_index()
    return ret_df

def get_trade_after_n_seconds(trade_time, df, seconds=0, groupby_col = None):
    nseconds=seconds*1000000000
    nseconds += trade_time
    ret_df = df[df['ReceiptTimestamp'] > nseconds].groupby(groupby_col).first()
    ret_df['BidPrice'] = ret_df['BidPrice'].astype('double')
    ret_df['AskPrice'] = ret_df['AskPrice'].astype('double')
    ret_df = ret_df.reset_index()
    return ret_df

def get_nbbo_trade_before_n_seconds(trade_time, df, seconds=0):
    nseconds=seconds*1000000000
    nseconds += trade_time
    ret_df = df[df['ReceiptTimestamp'] < nseconds].iloc[-1:]
    ret_df['BidPrice'] = ret_df['BidPrice'].astype('double')
    ret_df['AskPrice'] = ret_df['AskPrice'].astype('double')
    return ret_df

def get_nbbo_trade_after_n_seconds(trade_time, df, seconds=0):
    nseconds=seconds*1000000000
    nseconds += trade_time
    ret_df = df[df['ReceiptTimestamp'] > nseconds].iloc[:1]
    ret_df['BidPrice'] = ret_df['BidPrice'].astype('double')
    ret_df['AskPrice'] = ret_df['AskPrice'].astype('double')
    return ret_df

  • Aşağıdaki fonksiyonda işlem öncesi ve sonrası tüm kotasyonları içeren veri setini oluşturuyoruz. Athena Spark, veri kümemizi işlemek için kaç DPU'nun başlatılacağını otomatik olarak belirler.
def get_tca_analysis_via_df_single_query(trade_product, trade_price, trade_time):
    # BBO quotes
    bbos = spark.sql(f"SELECT Product, ReceiptTimestamp, AskPrice, BidPrice, MarketParticipant FROM bbo_quote where Product = '{trade_product}';")
    bbos = bbos.toPandas()

    bbo_just_before = get_trade_before_n_seconds(trade_time, bbos, seconds=0, groupby_col='MarketParticipant')
    bbo_just_after = get_trade_after_n_seconds(trade_time, bbos, seconds=0, groupby_col='MarketParticipant')
    bbo_1s_after = get_trade_after_n_seconds(trade_time, bbos, seconds=1, groupby_col='MarketParticipant')
    bbo_10s_after = get_trade_after_n_seconds(trade_time, bbos, seconds=10, groupby_col='MarketParticipant')
    bbo_60s_after = get_trade_after_n_seconds(trade_time, bbos, seconds=60, groupby_col='MarketParticipant')
    
    all_bbos = pd.concat([bbo_just_before, bbo_just_after, bbo_1s_after, bbo_10s_after, bbo_60s_after], ignore_index=True, sort=False)
    bbos_calculated = calculate_es_qs_eqf(all_bbos, trade_price)

    #NBBO quotes
    nbbos = spark.sql(f"SELECT Product, ReceiptTimestamp, AskPrice, BidPrice, BestBidParticipant, BestAskParticipant FROM nbbo_quote where Product = '{trade_product}';")
    nbbos = nbbos.toPandas()

    nbbo_just_before = get_nbbo_trade_before_n_seconds(trade_time,nbbos, seconds=0)
    nbbo_just_after = get_nbbo_trade_after_n_seconds(trade_time, nbbos, seconds=0)
    nbbo_1s_after = get_nbbo_trade_after_n_seconds(trade_time, nbbos, seconds=1)
    nbbo_10s_after = get_nbbo_trade_after_n_seconds(trade_time, nbbos, seconds=10)
    nbbo_60s_after = get_nbbo_trade_after_n_seconds(trade_time, nbbos, seconds=60)

    all_nbbos = pd.concat([nbbo_just_before, nbbo_just_after, nbbo_1s_after, nbbo_10s_after, nbbo_60s_after], ignore_index=True, sort=False)
    nbbos_calculated = calculate_es_qs_eqf(all_nbbos, trade_price)

    calc = pd.concat([bbos_calculated, nbbos_calculated], ignore_index=True, sort=False)
    
    return calc

  • Şimdi seçtiğimiz ticaretteki bilgilerle TCA analiz fonksiyonunu çağıralım:
tp = "QQQ 230518C00329000"
tpr = 1.16
tt = 1684338579104713924
c = get_tca_analysis_via_df_single_query(tp, tpr, tt)

Analiz sonuçlarını görselleştirin

Şimdi görselleştirmemiz için kullandığımız veri çerçevelerini oluşturalım. Her veri çerçevesi, her veri beslemesi (BBO, NBBO) için beş zaman aralığından biri için alıntılar içerir:

bbo = c[c['MarketParticipant'].isin(['BBO'])]
bbo_bef = bbo[bbo['ReceiptTimestamp'] < tt]
bbo_aft_0 = bbo[bbo['ReceiptTimestamp'].between(tt,tt+1000000000)]
bbo_aft_1 = bbo[bbo['ReceiptTimestamp'].between(tt+1000000000,tt+10000000000)]
bbo_aft_10 = bbo[bbo['ReceiptTimestamp'].between(tt+10000000000,tt+60000000000)]
bbo_aft_60 = bbo[bbo['ReceiptTimestamp'] > (tt+60000000000)]

nbbo = c[~c['MarketParticipant'].isin(['BBO'])]
nbbo_bef = nbbo[nbbo['ReceiptTimestamp'] < tt]
nbbo_aft_0 = nbbo[nbbo['ReceiptTimestamp'].between(tt,tt+1000000000)]
nbbo_aft_1 = nbbo[nbbo['ReceiptTimestamp'].between(tt+1000000000,tt+10000000000)]
nbbo_aft_10 = nbbo[nbbo['ReceiptTimestamp'].between(tt+10000000000,tt+60000000000)]
nbbo_aft_60 = nbbo[nbbo['ReceiptTimestamp'] > (tt+60000000000)]

Aşağıdaki bölümlerde farklı görselleştirmeler oluşturmak için örnek kod sağlıyoruz.

Ticaretten önce QS ve NBBO'yu planlayın

İşlem öncesinde kote edilen spreadi ve NBBO'yu çizmek için aşağıdaki kodu kullanın:

fig = px.bar(title="Quoted Spread Before The Trade",
    x=bbo_bef.MarketParticipant,
    y=bbo_bef['QS'],
    labels={'x': 'Market', 'y':'Quoted Spread'})
fig.add_hline(y=nbbo_bef.iloc[0]['QS'],
    line_width=1, line_dash="dash", line_color="red",
    annotation_text="NBBO", annotation_font_color="red")
%plotly fig

Her pazar için QS grafiğini ve işlemden sonra NBBO'yu çizin

Her bir piyasa ve NBBO için kote edilen spreadi işlemin hemen ardından çizmek için aşağıdaki kodu kullanın:

fig = px.bar(title="Quoted Spread After The Trade",
    x=bbo_aft_0.MarketParticipant,
    y=bbo_aft_0['QS'],
    labels={'x': 'Market', 'y':'Quoted Spread'})
fig.add_hline(
    y=nbbo_aft_0.iloc[0]['QS'],
    line_width=1, line_dash="dash", line_color="red",
    annotation_text="NBBO", annotation_font_color="red")
%plotly fig

BBO için her zaman aralığı ve her pazar için QS grafiğini çizin

BBO için her zaman aralığı ve her pazar için teklif edilen spreadi çizmek üzere aşağıdaki kodu kullanın:

fig = go.Figure(data=[
    go.Bar(name="before trade", x=bbo_bef.MarketParticipant.unique(), y=bbo_bef['QS']),
    go.Bar(name="0s after trade", x=bbo_aft_0.MarketParticipant.unique(), y=bbo_aft_0['QS']),
    go.Bar(name="1s after trade", x=bbo_aft_1.MarketParticipant.unique(), y=bbo_aft_1['QS']),
    go.Bar(name="10s after trade", x=bbo_aft_10.MarketParticipant.unique(), y=bbo_aft_10['QS']),
    go.Bar(name="60s after trade", x=bbo_aft_60.MarketParticipant.unique(), y=bbo_aft_60['QS'])])
fig.update_layout(barmode='group',title="BBO Quoted Spread Per Market/TimeFrame",
    xaxis={'title':'Market'},
    yaxis={'title':'Quoted Spread'})
%plotly fig

BBO için her zaman aralığı ve pazar için ES grafiği

BBO için her zaman aralığı ve pazar için etkili yayılmayı çizmek üzere aşağıdaki kodu kullanın:

fig = go.Figure(data=[
    go.Bar(name="before trade", x=bbo_bef.MarketParticipant.unique(), y=bbo_bef['ES']),
    go.Bar(name="0s after trade", x=bbo_aft_0.MarketParticipant.unique(), y=bbo_aft_0['ES']),
    go.Bar(name="1s after trade", x=bbo_aft_1.MarketParticipant.unique(), y=bbo_aft_1['ES']),
    go.Bar(name="10s after trade", x=bbo_aft_10.MarketParticipant.unique(), y=bbo_aft_10['ES']),
    go.Bar(name="60s after trade", x=bbo_aft_60.MarketParticipant.unique(), y=bbo_aft_60['ES'])])
fig.update_layout(barmode='group',title="BBO Effective Spread Per Market/TimeFrame",
    xaxis={'title':'Market'}, 
    yaxis={'title':'Effective Spread'})
%plotly fig

BBO için her zaman aralığı ve pazar için EQF grafiğini çizin

BBO için her zaman aralığı ve pazar için etkin/kotalı spreadi çizmek için aşağıdaki kodu kullanın:

fig = go.Figure(data=[
    go.Bar(name="before trade", x=bbo_bef.MarketParticipant.unique(), y=bbo_bef['EQF']),
    go.Bar(name="0s after trade", x=bbo_aft_0.MarketParticipant.unique(), y=bbo_aft_0['EQF']),
    go.Bar(name="1s after trade", x=bbo_aft_1.MarketParticipant.unique(), y=bbo_aft_1['EQF']),
    go.Bar(name="10s after trade", x=bbo_aft_10.MarketParticipant.unique(), y=bbo_aft_10['EQF']),
    go.Bar(name="60s after trade", x=bbo_aft_60.MarketParticipant.unique(), y=bbo_aft_60['EQF'])])
fig.update_layout(barmode='group',title="BBO Effective/Quoted Spread Per Market/TimeFrame",
    xaxis={'title':'Market'}, 
    yaxis={'title':'Effective/Quoted Spread'})
%plotly fig

Athena Spark hesaplama performansı

Bir kod bloğunu çalıştırdığınızda Athena Spark, hesaplamayı tamamlamak için kaç DPU'ya ihtiyaç duyulduğunu otomatik olarak belirler. Son kod bloğunda dediğimiz yer tca_analysis işlevinde aslında Spark'a verileri işlemesi talimatını veriyoruz ve ardından ortaya çıkan Spark veri çerçevelerini Pandas veri çerçevelerine dönüştürüyoruz. Bu, analizin en yoğun işlem kısmını oluşturur ve Athena Spark bu bloğu çalıştırdığında ilerleme çubuğunu, geçen süreyi ve o anda kaç DPU'nun veri işlediğini gösterir. Örneğin aşağıdaki hesaplamada Athena Spark 18 DPU kullanıyor.

Athena Spark dizüstü bilgisayarınızı yapılandırdığınızda kullanabileceği maksimum DPU sayısını ayarlama seçeneğiniz vardır. Varsayılan değer 20 DPU'dur ancak Athena Spark'ın analizimizi yürütmek için nasıl otomatik olarak ölçeklendiğini göstermek için bu hesaplamayı 10, 20 ve 40 DPU ile test ettik. Athena Spark'ın doğrusal olarak ölçeklendiğini, dizüstü bilgisayar maksimum 15 DPU ile yapılandırıldığında 21 dakika 10 saniye, dizüstü bilgisayar 8 DPU ile yapılandırıldığında 23 dakika 20 saniye ve dizüstü bilgisayar maksimum 4 DPU ile yapılandırıldığında 44 dakika 40 saniye sürdüğünü gözlemledik. XNUMX DPU ile yapılandırılmıştır. Athena Spark, DPU kullanımına dayalı olarak saniye başına ayrıntı düzeyinde ücret aldığından, bu hesaplamaların maliyeti benzerdir ancak daha yüksek bir maksimum DPU değeri ayarlarsanız Athena Spark, analiz sonucunu çok daha hızlı döndürebilir. Athena Spark fiyatlandırması hakkında daha fazla bilgi için lütfen tıklayın okuyun.

Sonuç

Bu yazıda, Athena Spark'ı kullanarak işlem maliyeti analitiğini gerçekleştirmek için LSEG'nin Tick History-PCAP'ındaki yüksek kaliteli OPRA verilerini nasıl kullanabileceğinizi gösterdik. OPRA verilerinin zamanında kullanılabilirliği, AWS Data Exchange for Amazon S3'ün erişilebilirlik yenilikleriyle tamamlandığında, kritik ticaret kararları için eyleme dönüştürülebilir öngörüler oluşturmak isteyen firmaların analiz süresini stratejik olarak azaltır. OPRA her gün yaklaşık 7 TB normalleştirilmiş Parquet verisi üretiyor ve OPRA verilerine dayalı analizler sağlayacak altyapıyı yönetmek zorlu bir iş.

Athena'nın Tick History – OPRA verileri için PCAP için büyük ölçekli veri işlemeyi yönetmedeki ölçeklenebilirliği, onu AWS'de hızlı ve ölçeklenebilir analiz çözümleri arayan kuruluşlar için cazip bir seçim haline getiriyor. Bu gönderi, AWS ekosistemi ile Tick History-PCAP verileri arasındaki kusursuz etkileşimi ve finansal kurumların, kritik ticaret ve yatırım stratejileri için veriye dayalı karar almayı desteklemek amacıyla bu sinerjiden nasıl yararlanabileceğini gösteriyor.


Yazarlar Hakkında

Pramod Nayak LSEG'de Düşük Gecikme Grubunun Ürün Yönetimi Direktörüdür. Pramod'un finansal teknoloji endüstrisinde yazılım geliştirme, analitik ve veri yönetimine odaklanan 10 yılı aşkın deneyimi vardır. Pramod eski bir yazılım mühendisidir ve piyasa verileri ve niceliksel ticaret konusunda tutkuludur.

LakshmiKanth Mannem LSEG'in Düşük Gecikme Grubunda Ürün Yöneticisidir. Düşük gecikmeli piyasa veri endüstrisi için veri ve platform ürünlerine odaklanmaktadır. LakshmiKanth, müşterilerin pazar verisi ihtiyaçları için en uygun çözümleri oluşturmalarına yardımcı oluyor.

Vivek Aggarwal LSEG'in Düşük Gecikme Grubunda Kıdemli Veri Mühendisidir. Vivek, yakalanan piyasa veri akışlarının ve referans veri akışlarının işlenmesi ve sunulması için veri hatları geliştirmek ve sürdürmek üzerinde çalışıyor.

Alket Memuşaj AWS'de Finansal Hizmetler Piyasası Geliştirme ekibinde Baş Mimardır. Alket, en zorlu sermaye piyasası iş yüklerini bile AWS Cloud'a dağıtmak için iş ortakları ve müşterilerle birlikte çalışan teknik stratejiden sorumludur.

Zaman Damgası:

Den fazla AWS Büyük Veri