Algoritmik ticarette Python - sayfa 23

 

RNN dizisi verilerini dengeleme - Python, TensorFlow ve Keras ile Derin Öğrenme s.10



RNN dizisi verilerini dengeleme - Python, TensorFlow ve Keras ile Derin Öğrenme s.10

Herkese merhaba ve Python, TensorFlow ve Keras eğitim videosu ile başka bir derin öğrenmeye hoş geldiniz. Bu videoda, tekrarlayan bir sinir ağı (RNN) kullanarak gelecekteki kripto para birimi fiyat hareketi tahmincimizi geliştirmeye devam edeceğiz."

Öğretici video, derin öğrenme tekniklerini kullanarak kripto para birimi fiyat hareketi için bir tahminci oluşturmaya odaklanmıştır.

Sunum yapan kişi, sıralı veriler oluşturmak ve doğrulama verilerini ayırmak da dahil olmak üzere ön işleme adımlarını zaten gerçekleştirdiklerini belirtiyor. Verileri de normalleştirdiler.

Süreçteki bir sonraki adım, verileri dengelemektir. Veri setinde eşit sayıda alış ve satış örneğinin olması önemlidir. Bir dengesizlik varsa, modelin performansını etkileyebilir. Sunucu, hafif bir dengesizlik olsa bile, modelin bir sınıfı diğerine tercih etmesini önlemek için verileri dengelemenin daha iyi olduğunu öne sürüyor.

Verileri dengelemek için sunum yapan kişi iki liste oluşturur: satın alır ve satar. Ardışık verileri yinelerler ve hedefin 0 (satış) mı yoksa 1 (alış) mi olduğunu kontrol ederler. Bu bir satışsa, sırayı satış listesine eklerler. Eğer bir satın alma ise, onu satın alma listesine eklerler. Daha sonra, her iki listeyi de karıştırırlar.

Ardından, iki liste (alış ve satış) arasındaki minimum uzunluğu bulurlar. Alım ve satım listelerini yalnızca daha kısa listenin uzunluğuna kadar olan öğeleri içerecek şekilde güncellerler. Bu, her iki listenin de eşit sayıda örneğe sahip olmasını sağlar.

Ardından sunum yapan kişi, alış ve satış listelerini sıralı_veri listesinde birleştirir. Verilerin sırasını daha fazla rastgele hale getirmek için sıralı_veriler listesini yeniden karıştırırlar.

Bir sonraki adım, sıralı_veriyi özelliklere (X) ve etiketlere (Y) bölmektir. Sırasıyla özellikleri ve etiketleri depolamak için boş x ve y listeleri oluştururlar. Sequential_data üzerinde yinelenirler ve diziyi x listesine ve hedefi y listesine eklerler.

Son olarak, önceden işlenmiş veriler olarak x ve y dizilerini döndürürler.

Sunum yapan kişi daha sonra, eğitim ve doğrulama veri kümelerinin boyutları ve alım ve satım örnekleri arasındaki denge gibi verilerle ilgili bazı istatistiklerin çıktısını almaya devam eder.

Bir sonraki videoda, önceden işlenmiş verileri kullanarak modeli oluşturmayı ve eğitmeyi planlıyorlar.
Balancing RNN sequence data - Deep Learning w/ Python, TensorFlow and Keras p.10
Balancing RNN sequence data - Deep Learning w/ Python, TensorFlow and Keras p.10
  • 2018.09.17
  • www.youtube.com
Welcome to the next part of our Deep Learning with Python, TensorFlow, and Keras tutorial series. In this tutorial, we're going to continue building our cryp...
 

Cryptocurrency-predicting RNN Modeli - Python, TensorFlow ve Keras ile Derin Öğrenme s.11



Cryptocurrency-predicting RNN Modeli - Python, TensorFlow ve Keras ile Derin Öğrenme s.11

Herkese merhaba; Python, TensorFlow ve Keras ile başka bir derin öğrenme eğitimine hoş geldiniz. Bu eğitimde, önceki eğitimde kaldığımız yerden devam edeceğiz. Amacımız, geçmiş fiyatlarına, hacmine ve diğer büyük kripto para birimlerine dayalı olarak belirli bir kripto para biriminin gelecekteki fiyat hareketlerini tahmin etmektir. Bunu tekrarlayan bir sinir ağı (RNN) kullanarak başaracağız.

Başlamak için gerekli kütüphaneleri içe aktarmamız gerekiyor. Zaman kitaplığını daha sonra kullanmak üzere içe aktaracağız. Ardından, birkaç sabit tanımlıyoruz. İlk sabit, modeli eğitmek istediğimiz dönemlerin sayısıdır. Parti boyutunu başlangıçta 64 olarak ayarladık, ancak gerekirse daha sonra ayarlayabiliriz. Son olarak, bir F-string kullanarak model için bir isim tanımlıyoruz. Kolay karşılaştırma ve tanımlama için model ve TensorBoard günlükleri için benzersiz bir isme sahip olmak önemlidir.

Şimdi, gerekli TensorFlow modüllerini içe aktarıyoruz. TensorFlow'u tf ve gerekli alt modüller olarak içe aktarıyoruz: tf.keras.models, tf.keras.layers, tf.keras.optimizers, tf.keras.callbacks ve tf.keras.backend. Ayrıca veri işleme ve görselleştirme için numpy ve matplotlib'i içe aktarıyoruz.

Daha sonra modelimizi oluşturmaya başlıyoruz. model = tf.keras.models.Sequential() kullanarak sıralı bir model oluşturuyoruz. Modelin içinde, model.add() fonksiyonunu kullanarak katmanları ekliyoruz. İlk katmanımız, 128 düğümlü bir LSTM katmanıdır. Çıktıyı bir sonraki katmana geçirmek istediğimiz için return_sequences=True ayarını yapıyoruz. Giriş şeklini train_X.shape[1:] olarak belirtiyoruz, burada train_X giriş verisidir. Ayrıca, 0.2 oranında bir bırakma katmanı ve toplu normalleştirme katmanı da ekliyoruz.

Her biri 128 düğüm içeren iki LSTM katmanı daha ekleyerek bu işlemi iki kez daha tekrarlıyoruz. Ardından yoğun bir katman geleceği için son LSTM katmanı için return_sequences=True öğesini kaldırıyoruz. Ayrıca her LSTM katmanına bırakma ve yığın normalleştirme katmanları da ekliyoruz.

LSTM katmanlarından sonra, 32 düğümlü yoğun bir katman ve düzeltilmiş doğrusal aktivasyon fonksiyonu ekliyoruz. 0.2 oranında bir dropout katmanı ve son olarak iki düğümlü ve bir softmax aktivasyon fonksiyonuna sahip çıkış katmanı ekliyoruz.

Şimdi, modelimiz için optimize ediciyi belirliyoruz. Adam iyileştiriciyi 0.001 öğrenme oranı ve 1e-6 bozulma oranı ile kullanıyoruz. Model.compile() kullanarak modeli derliyoruz ve kayıp işlevini seyrek kategorik çapraz entropi ve metrikleri doğruluk olarak belirtiyoruz.

Ardından, modelimiz için geri aramaları tanımlıyoruz. Günlük dizini 'günlükler' olarak ayarlanmış bir TensorBoard geri araması oluşturuyoruz. Eğitim sırasında en iyi modeli kaydetmek için bir ModelCheckpoint geri araması da oluşturuyoruz. Dize biçimlendirmesini kullanarak kontrol noktalarını kaydetmek için dosya yolunu belirtiyoruz.

Son olarak, modeli model.fit() kullanarak eğitiyoruz. Eğitim verilerini (train_X ve train_Y), parti boyutunu, dönem sayısını ve doğrulama verilerini (validation_X ve validation_Y) iletiyoruz. Daha önce tanımladığımız geri aramaları da geçiyoruz.

Eğitimden sonra, ileride kullanmak üzere model.save() kullanarak modeli kaydedebiliriz.

Bu kadar! Bir kripto para biriminin gelecekteki fiyat hareketlerini tahmin etmek için tekrarlayan bir sinir ağı modelini başarıyla oluşturduk ve eğittik. TensorBoard'u kullanarak eğitim ilerlemesini de görselleştirdik.

Cryptocurrency-predicting RNN Model - Deep Learning w/ Python, TensorFlow and Keras p.11
Cryptocurrency-predicting RNN Model - Deep Learning w/ Python, TensorFlow and Keras p.11
  • 2018.09.18
  • www.youtube.com
Welcome to the next tutorial covering deep learning with Python, Tensorflow, and Keras. We've been working on a cryptocurrency price movement prediction recu...
 

Python'da Algoritmik Ticaret Stratejisi


Python'da Algoritmik Ticaret Stratejisi

Bugünün eğitiminde, Python kullanarak algoritmik bir hisse senedi alım satım stratejisi uygulayacağız. Hemen içine dalalım.

Başlamadan önce, bu videonun amacının yatırım veya finansal tavsiye olmadığını vurgulamak istiyorum. Hisse senedi uzmanı, yatırım uzmanı veya finans uzmanı değilim. Bu videonun amacı, Python kullanarak algoritmik bir ticaret stratejisinin nasıl uygulanacağını göstermektir. Yatırımlarınız için kullanıp kullanmamak tamamen sizin kararınız ve sorumluluğunuzdur. Sadece programlama yönüne odaklanacağım.

Başlamak için iki kitaplık kurmamız gerekiyor: stok verileri almak için "pandas-datareader" ve veri görselleştirme için "matplotlib". Komut istemini (CMD) açın ve bu kitaplıkları kurun. Kurduktan sonra kodlamaya geçebiliriz.

İlk olarak, gerekli modülleri içe aktarıyoruz: tarih ve saati işlemek için "datetime", grafikleri çizmek için "matplotlib.pyplot" ve stok verilerini almak için "web" olarak "pandas_datareader".

Ardından, kullanacağımız hareketli ortalamaları (MA) tanımlarız. Hareketli ortalamalar, 30 gün veya 100 gün gibi belirli bir süre boyunca ortalama hisse senedi fiyatını temsil eder. Sırasıyla 30 ve 100 olarak ayarlanacak olan "ma1" ve "ma2" adlı iki değişken oluşturuyoruz. Bu değerler analiz edeceğimiz hareketli ortalamaların uzunluğunu belirler.

Şimdi, analizimiz için zaman çerçevesini ayarlayalım. Geçerli tarihi ve 3 yıllık bir zaman deltasını kullanarak başlangıç ve bitiş tarihlerini tanımlarız. Bu zaman dilimi, stok verilerini almak için kullanılacaktır.

"Veri okuyucu" kitaplığını kullanarak, belirli bir şirketin (bu durumda Facebook) hisse senedi verilerini Yahoo Finance API'sinden alıyoruz. İlgili verileri getirmek için başlangıç ve bitiş tarihlerini geçiyoruz.

Hareketli ortalamaları hesaplamak için DataFrame verilerine iki yeni sütun ekliyoruz. Hem "ma1" hem de "ma2" dönemleri için hareketli ortalamayı hesaplamak için "yuvarlanma" işlevini kullanıyoruz. "Düzeltilmiş kapanış" sütunu, hisse senedi bölünmeleri için ayarlanan kapanış fiyatını temsil eder. Hareketli ortalamaları ilgili sütunlarda saklarız.

Daha fazla ilerlemeden önce, verileri ve hareketli ortalamaları görselleştirelim. Düzeltilmiş kapanış değerlerini hisse senedi fiyatı olarak çiziyoruz ve hareketli ortalamalar aynı grafik üzerinde çiziliyor. Grafik stilini koyu bir arka plan kullanacak şekilde ayarladık ve çizgileri ayırt etmek için uygun etiketler ve renkler verdik. Son olarak, çizilen çizgileri tanımlamak ve grafiği görüntülemek için bir açıklama ekliyoruz.

Şimdi algoritmik ticaret stratejisini uygulamaya geçelim. Sırasıyla alım ve satım sinyallerini saklayacak "buy_signals" ve "sell_signals" olmak üzere iki boş liste oluşturuyoruz. Ek olarak, stratejideki değişiklikleri izlememize yardımcı olacak bir "tetikleyici" değişken sunuyoruz.

Bir for döngüsü kullanarak, DataFrame verileri üzerinde yineliyoruz. Döngünün içinde iki koşulu kontrol ederiz: birinci hareketli ortalama ("ma1") ikinci hareketli ortalamadan ("ma2") büyükse ve tetikleyici 1'e eşit değilse. "buy_signals" listesine bir satın alma sinyali ve "sat_sinyalleri" listesine "NaN" (sayı değil) ekleyin. Ayrıca tetikleyiciyi 1 olarak güncelleriz.

Tersi durumda, "ma1", "ma2" den küçük ve tetikleyici -1'e eşit değilse, "sat_sinyalleri" listesine bir satış sinyali ve "alış_sinyalleri" listesine gerçek hisse senedi fiyatını ekleriz. Tetikleyiciyi -1 olarak güncelliyoruz.

Koşullardan hiçbiri karşılanmazsa, tutarlı uzunlukları korumak için her iki listeye de "NaN" değerleri ekleriz.

Son olarak, al ve sat sinyallerini depolamak için DataFrame verilerine iki sütun daha ekliyoruz.

Satış sinyallerini de dağıtacağız, bu nedenle plt.scatter kullanarak başka bir dağılım grafiği ekleyeceğiz. Bu sefer data.index'teki satış sinyallerini x değerleri olarak ve karşılık gelen satış sinyali fiyatlarını y değerleri olarak dağıtacağız. Bu dağılım grafiğini, satın alma sinyallerinden ayırt etmek için "sat sinyali" olarak etiketleyeceğiz.

Son olarak, farklı öğelerin etiketlerini görüntülemek için plt.legend'i kullanarak çizime bir gösterge ekleyeceğiz. Ardından, grafiği görüntülemek için plt.show()'u çağıracağız.

kod:

plt.plot(data.index, data[ 'Adj Close' ], label= 'Share Price' , color= 'lightgray' )
plt.plot(data.index, data[ 'sma_{}' .format(ma1)], label= 'SMA {}' .format(ma1), linestyle= '--' )
plt.plot(data.index, data[ 'sma_{}' .format(ma2)], label= 'SMA {}' .format(ma2), linestyle= '--' )
plt.scatter(data.index, data[ 'Buy Signal' ], label= 'Buy Signal' )
plt.scatter(data.index, data[ 'Sell Signal' ], label= 'Sell Signal' )
plt.legend(loc= 'upper left' )
plt.show()
Şimdi, kodu çalıştırdığınızda, hisse senedi fiyatını, hareketli ortalamaları ve alım satım sinyallerini gösteren bir grafik görmelisiniz.

Unutmayın, bu sadece Python'da uygulanan basit bir algoritmik ticaret stratejisidir ve finansal veya yatırım tavsiyesi olarak alınmamalıdır. Herhangi bir yatırım kararı vermeden önce kapsamlı araştırma yapmak ve profesyonellere danışmak önemlidir.

Algorithmic Trading Strategy in Python
Algorithmic Trading Strategy in Python
  • 2021.07.04
  • www.youtube.com
In this video we learn how to implement an algorithmic trading strategy in Python.DISCLAIMER: This is not investing advice. I am not a professional who is qu...
 

Günlük En Yüksek ve En Düşük Zamanları Çıkarmak için Alpha Vantage Ücretsiz Gerçek Zamanlı Stok API'si ve Python Nasıl Kullanılır?


Günlük En Yüksek ve En Düşük Zamanları Çıkarmak için Alpha Vantage Ücretsiz Gerçek Zamanlı Stok API'si ve Python Nasıl Kullanılır?

Bu videoda, Alpha Vantage API'sini keşfetmek için bir Jupyter Not Defteri kullanacağız ve bir dakikalık işlem verilerini kullanarak bir hisse senedi için yüksek ve düşük işlem fiyatlarını çıkaracağız. Alpha Vantage, gerçek zamanlı alım satım verilerini elde etmek için kullanılabilen birkaç API'den biridir ve ücretsiz bir model üzerinde çalışır. Başlamak için ücretsiz bir hesap açmamız ve Alpha Vantage web sitesinden bir API anahtarı almamız gerekecek.

API çağrıları yapma sürecini basitleştiren "alpha_vantage" adlı Alpha Vantage yardımcı kitaplığını kullanacağız. Kitaplık kurulu değilse, bunu komut satırınızda "pip install alpha_vantage" komutunu çalıştırarak yapabilirsiniz.

Başlamak için, gerekli üçüncü taraf kitaplıkları içe aktararak ortamımızı kuruyoruz. Bu yapıldıktan sonra, API anahtarımızı bir değişkende saklıyoruz. API anahtarınızı gizli tutmayı tercih ederseniz, onu ayrı bir metin dosyasında saklayabilir ve not defterinizde okuyabilirsiniz. Ardından, API anahtarını ve istenen çıktı biçimini belirterek bir zaman serisi nesnesi oluşturuyoruz. Bu durumda, varsayılan olarak JSON biçiminde olan çıktı verileriyle çalışmanın daha kolay bir yolunu sağladığı için pandas kitaplığını kullanmayı seçiyoruz.

Alım satım verilerini almak için "get_intraday" işlevini kullanarak Alpha Vantage API'ye çağrı yaparız. Bu işlev, hisse senedinin sembolünü ve bir dakika, beş dakika veya bir saat gibi istenen aralığı belirtmemizi sağlar. Almak istediğimiz tarihsel veri miktarını belirleyen çıktı boyutunu da ayarlayabiliriz. Bu video için, bize yaklaşık on günlük veri sağlayan "dolu" olarak ayarladık.

Verileri getirdikten sonra, "meta" özniteliğine erişerek onunla ilişkili meta verileri inceleyebiliriz. Meta nesne, indirilen veriler hakkında verilerin aralığı, tarihi ve içerdiği sütunlar gibi bilgiler sağlar. Ardından, sütun adlarını ve tarih-saat dizinini görüntüleyen "info" yöntemini çağırarak verilerin kendisini inceleyebiliriz.

Verilerin görsel bir temsilini elde etmek için, kapanış fiyatları gibi sütunlardan birini çizebiliriz. Ancak, Alpha Vantage tarafından döndürülen sütun adlarıyla çalışmak uygun olmayabilir, bu nedenle onları daha anlamlı adlarla yeniden adlandırabiliriz.

Daha sonra, normal işlem saatlerine karşılık gelen verileri çıkarıyoruz, mesai dışı işlemler hariç, bu da bozulmalara neden olabilir. Verilere zamana dayalı bir filtre uygulayarak "pazar" adında yeni bir değişken oluşturuyoruz. Pandas, piyasa için başlangıç ve bitiş zamanlarını belirlememize izin veren kullanışlı bir "ara_zaman" işlevi sağlar.

Bu noktada, iniş ve çıkışların tarihlerini ve zamanlarını çıkarmaya hazırız. Bunu iki şekilde yapıyoruz. İlk olarak, verileri işlem tarihine göre gruplandırıyoruz ve sırasıyla düşük ve yüksek sütunlar için minimum ve maksimum değerleri hesaplamak için "ag" yöntemini kullanıyoruz. Bu yaklaşım bize her işlem günü için gerçek düşük ve yüksek değerleri verir.

İkinci olarak, farklı bir yaklaşım benimsiyoruz ve düşük ve yüksek olanın meydana geldiği dakikaya odaklanıyoruz. Her işlem gününde en düşük ve en yüksek değerlerin oluştuğu belirli satırları bulmak için "loc" işlevini kullanıyoruz. Ardından, sırasıyla minimum ve maksimum değerler için dizini (tarih ve saat) çıkarırız. Bu, düşük ve yüksek fiyatlara ulaşıldığı tam dakikayı belirlememizi sağlar.

Sonuçları inceleyerek, işlem günleri boyunca en düşük ve en yüksek zamanlama gibi ilginç modelleri gözlemleyebiliriz.

Bu video, dakika dakika alım satım verilerini almak ve analiz için en yüksek ve en düşük seviyeleri çıkarmak için Alpha Vantage API'sinin kullanımına ilişkin temel bir genel bakış sağlar. Kendi projelerinizde Alpha Vantage API'yi keşfetmek ve kullanmak için bir başlangıç noktası görevi görür.

Sonuç olarak, bu eğitim videosu, bir dakikalık ticaret verilerini kullanarak bir hisse senedi için yüksek ve düşük ticaret fiyatlarını çıkarmak için bir Jüpyter Not Defterinde Alpha Vantage API'sinin ve Alpha Vantage yardımcı kitaplığının nasıl kullanılacağını gösterir. Videoda özetlenen adımları izleyerek, gerçek zamanlı ticaret verilerini alabilir, pandaları kullanarak analiz edebilir ve belirli bir işlem gününde en yüksek ve en düşük zamanlama hakkında fikir edinebilirsiniz.

Alpha Vantage API'nin bu videoda ele alınanların ötesinde çeşitli işlevler ve veri seçenekleri sunduğunu unutmamak önemlidir. Beş dakikalık veya bir saatlik veriler gibi farklı aralıkların yanı sıra günlük veya geçmiş veriler dahil olmak üzere farklı veri türlerini keşfedebilirsiniz. API ayrıca teknik göstergeler ve temel veriler gibi ek özellikler de sağlar.

Analizinizi daha da geliştirmek için, ek veri işleme ve görselleştirme tekniklerini dahil edebilirsiniz. Örneğin, çıkarılan yüksek ve düşük fiyatlara dayalı olarak ek ölçümler hesaplayabilir, istatistiksel analizler yapabilir veya verileri daha sezgisel bir şekilde sunmak için etkileşimli görselleştirmeler oluşturabilirsiniz.

Kullanılabilir API çağrıları, parametreler ve seçenekler hakkında ayrıntılı bilgi için Alpha Vantage belgelerine başvurmayı unutmayın. Ayrıca, ücretsiz hesabınızla ilişkili tüm sınırlamalar veya kullanım kısıtlamaları dahil olmak üzere Alpha Vantage API'nin hüküm ve koşullarına uyduğunuzdan emin olun.

Alpha Vantage API'sinden yararlanarak ve onu Jupyter Notebook ve pandas kitaplığının yetenekleriyle birleştirerek, zengin ticaret verilerinin kilidini açabilir ve yatırım kararlarınızı ve niceliksel analizlerinizi desteklemek için çeşitli stratejiler ve içgörüler keşfedebilirsiniz.

How to Use Alpha Vantage Free Real Time Stock API & Python to Extract Time of Daily Highs and Lows
How to Use Alpha Vantage Free Real Time Stock API & Python to Extract Time of Daily Highs and Lows
  • 2021.01.11
  • www.youtube.com
#alphavantage #pythonUsing the free API to download minute by minute trading data and extract daily highs and lowsTutorial demonstrates using downloaded d...
 

Veri Bilimi için matplotlib Python ile Dağılım Grafiklerine Giriş


Veri Bilimi için matplotlib Python ile Dağılım Grafiklerine Giriş

Bu, Matplotlib'e giriş serimin ikinci videosu. Bu videomuzda dağılım grafiklerine odaklanacağız. Dağılım grafikleri, iki değişken arasındaki ilişkinin gücünü ve doğasını belirlememize yardımcı olan görsel bir yardımcıdır. Temaları ayarlama, renkli harita ekleme, balon grafiği oluşturma ve boyutluluk ekleme dahil olmak üzere dağılım grafikleri oluşturmanın temellerini ele alacağız.

Başlangıç olarak gerekli kütüphaneleri import ederek ortamımızı kuralım. NumPy, Matplotlib ve Pandas veri okuyucusunu içe aktaracağız. Pandas veri okuyucusu, çalışmak için gerçek verileri indirmemize izin verecek. Bu durumda, Google, Amazon ve altın ETF için üç ila dört aylık verileri indireceğiz.

Verileri aldıktan sonra, veri setini tanımak için ilk birkaç satıra göz atabiliriz. Verilerin 1 Ağustos'ta başladığını ve kapanış fiyatlarını da içerdiğini görüyoruz.

Şimdi, Matplotlib'in dağılım yöntemini kullanarak temel bir dağılım grafiği oluşturalım. Veri kümesinden iki sütun seçip çizebiliriz. Ancak, bu temel dağılım grafiği, değişkenler arasındaki ilişki hakkında fazla bilgi sağlamaz.

Daha fazla araştırmak için, her menkul kıymetin anlık getiri oranını hesaplayabiliriz. Bu, fiyattaki değişikliklerin birbiriyle nasıl ilişkili olduğunu daha iyi anlamamızı sağlayacaktır. Mutlak fiyatı kaldırır ve yüzde değişime indiririz. İlk birkaç gözleme baktığımızda, tüm menkul kıymetlerin düştüğünü, Amazon ve Google'ın %1'in üzerinde bir düşüş yaşadığını, altının ise nispeten değişmediğini görebiliriz.

Ardından, bir sayı olmayan ilk gözlemi kaldırıyoruz ve Google'daki değişikliğin Amazon'daki değişiklikle alakalı olup olmadığını görmek için bir dağılım grafiği çiziyoruz. Bu dağılım grafiği öncekinden farklı bir hikaye anlatıyor. Google yükseldikçe Amazon'un da yükseldiği yönünde genel bir eğilim gözlemleyebiliriz, bu da iki değişken arasında güçlü bir pozitif ilişki olduğunu gösterir.

Artık temel dağılım grafiğine sahip olduğumuza göre, onu geliştirmek için bazı özellikler ekleyebiliriz. İlk olarak, daha görünür hale getirmek için grafiğin boyutunu değiştirelim. Bunu, Matplotlib'den parametreler modülünü içe aktararak yapabiliriz.

Noktaların farklı yönlerdeki hareketini göstermek için kılavuz çizgiler ekleyerek dağılım grafiğine görsel çekicilik de ekleyebiliriz. X ve Y eksenlerinde sıfırdan geçen çizgiler çizerek, noktaların ne zaman birlikte hareket ettiğini, birbirinden uzaklaştığını veya zıt yönlerde hareket ettiğini hızlı bir şekilde belirleyebiliriz.

Kılavuz çizgilerin görünürlüğünü iyileştirmek için, RGB gösterimini kullanarak renklerini gri bir gölgeye ayarlayabiliriz. Ek olarak, farklı bir görsel efekt için çizgi stilini kesikli olarak ayarlayabiliriz.

Dağılım grafiğini daha da geliştirmek için bir renk şeması ekleyebiliriz. Temsil edecek üçüncü bir değişkenimiz olmasa da, yine de dağılım grafiğine bir renk haritası ekleyebiliriz. Amazon için iadelerin rengini içerecek şekilde dağılım grafiği kodunu değiştiriyoruz ve spektral renk haritasını seçiyoruz. Bu renk haritası, dönüşlerin değerlerine göre noktalara farklı renkler atar; kırmızı en negatif değerleri temsil eder ve menekşe en pozitif değerleri temsil eder.

Ancak, renk gradyanı nedeniyle orta aralıktaki bazı noktaların görülmesi zor olabilir. Bunu ele almak için noktaların kenar rengini siyaha çevirerek onları daha belirgin hale getirebiliriz.

Renk geçişleri hakkında ek bilgi sağlamak için bir renk çubuğu ekleyebiliriz. Renk çubuğu, getirilere dayalı olarak renk eşlemesini gösteren bir açıklama çizer.

Ayrıca, bir tema uygulayarak olay örgüsünün genel görünümünü iyileştirebiliriz. Görsel olarak çekici bir stil sağlayan Matplotlib'in etrafını saran Seaborn'u tema olarak kullanabiliriz. Bu tema, arka planı değiştirir ve çizilen verilerden uzaklaşmadan kılavuz çizgileri ekler.

Son olarak, kılavuz çizgileri ortalamak için grafiğin sınırlarını ayarlayabiliriz.

Son olarak, kılavuz çizgileri ortalamak ve dağılım grafiğini görsel olarak daha dengeli hale getirmek için çizimin sınırlarını ayarlayabiliriz. Kılavuz çizgilerin çizimin merkezinde kesişmesini sağlamak için x ekseni ve y ekseni sınırlarını dönüşlerin minimum ve maksimum değerlerine ayarlayabiliriz. Bu ayarlama, noktaların hareketini kılavuz çizgilere göre daha etkili bir şekilde görselleştirmemize yardımcı olur.

Artık bu geliştirmeleri yaptığımıza göre, dağılım grafiğimiz daha bilgilendirici ve görsel olarak çekici. Google ve Amazon'un getirileri arasındaki ilişkiyi ve getirilerin renk haritasına göre dağılımını net bir şekilde görebiliyoruz. Kılavuz çizgiler, noktaların hareketini farklı yönlerde yorumlamak için görsel bir referans sağlar.

Temel dağılım grafiklerine ek olarak, Matplotlib'i kullanarak bir balon grafiği de oluşturabiliriz. Balon grafiği, işaretçilerin boyutunu üçüncü bir değişkene göre değiştirerek çizime üçüncü bir boyut ekler. Bizim durumumuzda, her menkul kıymetin hacmini üçüncü değişken olarak kullanabiliriz.

Bir kabarcık grafiği oluşturmak için, boyut parametresini belirleyerek ve her bir menkul kıymetin hacmini işaretçi boyutu olarak ileterek dağılım grafiği kodumuzu değiştiririz. Bu, her menkul kıymetin hacmiyle orantılı boyutlarda daireler oluşturarak getiriler, hacim ve puanların hareketi arasındaki ilişkiyi görselleştirmemizi sağlar.

Bu üçüncü boyutu dağılım grafiğine ekleyerek, değişkenler arasındaki ilişkiyi daha iyi anlarız. Daha büyük dairelerin daha yüksek işlem hacimlerini temsil ettiğini ve puan hareketinin hem getiri hem de hacimle ilişkilendirilebileceğini görebiliriz.

Sonuç olarak, dağılım grafikleri ve kabarcık grafikleri, değişkenler arasındaki ilişkiyi anlamamıza yardımcı olan güçlü görselleştirme araçlarıdır. Bunları verileri analiz etmek ve yorumlamak, kalıpları ve eğilimleri belirlemek ve bilinçli kararlar almak için kullanabiliriz. Matplotlib ile özelleştirilmiş ve görsel olarak çekici dağılım grafikleri oluşturabilir ve bunları renkli haritalar, kılavuz çizgiler ve temalar gibi çeşitli özelliklerle geliştirebiliriz.

Introduction to Scatter Plots with matplotlib Python for Data Science
Introduction to Scatter Plots with matplotlib Python for Data Science
  • 2019.11.18
  • www.youtube.com
#scatterplot #matplotlib #python‡‡‡Learn how to use matplotlib with examples of scatter plots Please SUBSCRIBE:https://www.youtube.com/subscription_cente...
 

Python ile Algoritmik Ticarete Giriş: Ortalama Bir Geri Dönen Ticaret Algoritması Oluşturun


Python ile Algoritmik Ticarete Giriş: Ortalama Bir Geri Dönen Ticaret Algoritması Oluşturun

Bu videoda, yalnızca eğitim amaçlı bir ortalamaya dönüş ticaret algoritmasını keşfedeceğiz. Bu videonun yatırım tavsiyesi sağlamadığını belirtmek önemlidir. Algoritma bir Jupyter Not Defteri kullanılarak uygulanacak ve not defterini indirmek için bir bağlantı video açıklamasında sağlanacaktır. Bu video, daha önce tartışılan momentum ticaret stratejisine eşlik eder ve bu videoya bir bağlantı da sağlanacaktır.

Ortalamaya dönüş ticaret stratejisi, bir menkul kıymetin ondan çok uzaklaştığında ortalama bir değere geri döneceğini varsayar. Bu stratejiye yaklaşmanın doğrusal regresyon veya hareketli ortalama kullanmak gibi birçok yolu vardır. "Çok uzak" ifadesinin belirlenmesi ve kullanılan ölçü değişebilir. Bazı insanlar mutlak bir dolar değeri kullanırken, bu videoda yüzdelikler kullanacağız. Ek olarak, ortalama değeri belirlemek için hareketli bir ortalama kullanılacaktır.

Başlamak için, veri manipülasyonu için Pandas, canlı verileri indirmek için Pandas DataReader (diğer hizmetler de kullanılabilir), sayısal işlemler için NumPy, grafik çizmek için Matplotlib ve çizimleri şekillendirmek için Seaborn dahil olmak üzere gerekli kitaplıkları içe aktarıyoruz. İlgili kod hücresi çalıştırılarak gerekli kütüphaneler içe aktarılır.

Ardından, analiz için verileri alıyoruz. İyi bir alım satım algoritması birden çok menkul kıymete genelleştirilebilir olsa da, bu video tek bir menkul kıymete odaklanıyor: altın ETF. Pandas DataReader, altın ETF için yaklaşık beş yıllık verileri indirmek için kullanılır. Sadece kapanış fiyatı ilgilendirdiği için indirmeyi o sütunla sınırlıyoruz. Veriler elde edildikten sonra, uygun şekilde alındığından emin olmak için ilk birkaç satırı inceleriz.

Verileri elde ettikten sonra veri çerçevesine bazı sütunlar ekliyoruz. Eklenen ilk sütun hareketli ortalama içindir. Kolayca manipüle edilebilen hareketli ortalama dönemini tanımlamak için bir değişken belirledik. Bir önceki günün kapanışına göre anlık getiri oranı hesaplanır ve yeni bir sütunda saklanır. 21 günlük (veya bir işlem ayı) ortalama kullanılarak kapanış fiyatına dayalı ortalama değeri izlemek için "hareketli ortalama" adlı başka bir sütun oluşturulur. Ek olarak, kapanış fiyatının hareketli ortalamaya bölünmesini temsil eden bir "oran" sütunu eklenir. Bu sütun, fiyatın ortalamadan çok uzak olduğunu belirlemeye yardımcı olur.

Veri dağılımı hakkında bilgi edinmek için "oran" sütunu için tanımlayıcı istatistikler hesaplanır. Beklendiği gibi, fiyatlar genellikle ortalama değere yakın seyrediyor. 25. ve 75. yüzdelikler verilerin alt ve üst sınırlarını tanımlarken, minimum ve maksimum değerler ortalamadan aşırı sapmaları gösterir. Ortalamadan önemli sapmaları belirlemek için analiz için 5., 10., 90. ve 95. yüzdelikler gibi ek fiyat noktaları seçilir. Numpy yüzdelik işlevi, "altın oran" sütununa dayalı olarak ilgili değerleri hesaplamak için kullanılır. Hesaplama yapılmadan önce eksik değerler çıkarılır.

Oran sütununun ortalama etrafındaki hareketini görselleştirmek için bir grafik oluşturulur. Alakasız değerler çıkarılır ve oran sütunu bir gösterge ile çizilir. Seçilen yüzdelik dilimlerdeki (5., 50. ve 95.) fiyat kırılmalarını temsil etmek için yatay çizgiler eklenir. Bu görsel sunum, oran sütununun ortalama etrafındaki döngüsel hareketini gözlemlemeye yardımcı olur ve sapmaları düzeltme eğilimini gösterir.

Ardından, ne zaman kısa veya uzun gidileceğini belirlemek için belirli eşikler tanımlanır. Kısa pozisyon 95. yüzdelik dilim, uzun pozisyon ise 5. yüzdelik dilim olarak tanımlanır. Veri çerçevesine, konumun uzun veya kısa olduğunu gösteren yeni bir sütun eklenir. Numpy'nin "nerede" işlevi, altın oran sütununa göre değer atamak için kullanılır. Oran kısa eşikten küçük olduğunda -1 değeri atanır, bu kısa pozisyonu belirtir ve oran uzun eşikten büyük olduğunda 1 değeri atanır, uzun pozisyonu gösterir. Son olarak, konumları görselleştirmek için bir grafik oluşturulur. Çizim, oran sütununu gösterir ve uzun ve kısa pozisyonları farklı renklerle vurgular.

Pozisyonları belirledikten sonraki adım, günlük getirileri hesaplamaktır. Bu, pozisyon sütununu, tutulan pozisyona göre her gün için getiriyi veren günlük getiri oranı sütunuyla çarpılarak yapılır. Günlük getirileri saklamak için veri çerçevesine "strateji" adlı yeni bir sütun eklenir.

Stratejinin performansını değerlendirmek için kümülatif getiriler hesaplanır. Kümülatif getiriler, strateji getirilerinin kümülatif ürünü alınarak sonuca 1 eklenerek ve yüzde gösterimi için 100 ile çarpılarak elde edilir. Zaman içindeki kümülatif getirileri görselleştirmek için bir grafik oluşturulur.

Ardından, stratejinin performansını değerlendirmek için ek performans ölçütleri hesaplanır. Toplam getiri, ortalama günlük getiri, günlük getirilerin standart sapması, Sharpe oranı ve maksimum düşüş hesaplanır. Bu ölçümler, stratejinin karlılığı, riski ve riske göre ayarlanmış getirisi hakkında fikir verir. Değerler kolay başvuru için yazdırılır.

Son olarak, ortalamaya döndürme stratejisinin kümülatif getirilerini al ve tut stratejisiyle karşılaştırmak için bir grafik oluşturulur. Al ve tut stratejisi, herhangi bir alım satım kararı olmaksızın varlığın tüm dönem boyunca elde tutulduğunu varsayar. Bu çizim, iki stratejinin görsel olarak karşılaştırılmasını sağlar.

Özet olarak, bu video, Python ve Jupyter Notebook kullanılarak ortalamaya dönüş yapan bir ticaret stratejisinin uygulanmasını göstermektedir. Veri alma, hareketli ortalamaların hesaplanması, eşiklerin belirlenmesi, pozisyonların görselleştirilmesi, günlük getirilerin hesaplanması, performans metriklerinin değerlendirilmesi ve bir satın alma ve tutma stratejisiyle karşılaştırmayı kapsar. Ekteki Jupyter Not Defteri, stratejiyi yeniden oluşturmak ve uygulanmasını daha fazla keşfetmek için adım adım bir kılavuz sağlar. Bu videonun yalnızca eğitim amaçlı olduğunu ve yatırım tavsiyesi sağlamadığını unutmayın.

Introduction to Algorithmic Trading with Python: Create a Mean Reverting Trading Algorithm
Introduction to Algorithmic Trading with Python: Create a Mean Reverting Trading Algorithm
  • 2021.05.14
  • www.youtube.com
#python #stocktrading #algorithmHow to create a Trading Algorithm - Algorithmic Trading Using Pythonhttps://alphabench.com/data/python-algorithm-trading...
 

Python Pandaları || Hisse Senedi Fiyatları için Hareketli Ortalamalar ve Hareketli Pencere İstatistikleri


Python Pandaları || Hisse Senedi Fiyatları için Hareketli Ortalamalar ve Hareketli Pencere İstatistikleri

Bu video eğitiminde, hareketli ortalamalar ve yuvarlanan standart sapmalar için hesaplamaları otomatikleştiren pandalar yuvarlanma yönteminin nasıl kullanılacağını göstereceğim. Dönen yöntem, dönen pencere toplamalarını gerçekleştirmek için güçlü bir araçtır ve pandas sürüm 0.21 kullanılarak kolayca uygulanabilir. Referans olması için bu eğitimde kullanılan Jupyter Notebook'a bir bağlantı sağlayacağım.

Başlamak için ortamı ayarlamamız gerekiyor. Pandalar buna güvendiği için numpy kitaplığını içe aktarıyoruz. Numpy'yi doğrudan yoğun bir şekilde kullanmayacak olsak da, pandaların düzgün çalışması için gereklidir. Ek olarak, veri almak için pandas veri okuyucusunu ve çizim amacıyla matplotlib'i içe aktarıyoruz. Sihirli fonksiyonu kullanarak çizimlerin Jupyter Defter içerisinde görüntülenmesini sağlıyoruz.

Ardından, analiz için verileri alıyoruz. Altın ETF (Borsa Yatırım Fonu) için verileri Yahoo Finance'ten indireceğim. İstenen zaman dilimini belirlemek için, başlangıç tarihini yaklaşık bir yıl önceki cumhurbaşkanlığı seçimi gününe ayarladım. Verilerin doğru bir şekilde getirildiğini doğrulamak için veri kümesinin ilk birkaç satırını gösteriyorum. Bu gösteri için öncelikle kapanış fiyatlarıyla ilgilendiğimiz için diğer sütunları kaldırıyorum. Ayrıca, indirilen veri çerçevesi bir seri olduğundan ve ihtiyacım olan bazı özelliklerden yoksun olduğundan, onu bir veri çerçevesi olarak yayınlıyorum.

Şimdi haddeleme yöntemini göstermeye hazırız. Dokuz günlük hareketli ortalamayı temsil etmek için "MA9" adlı veri çerçevesine yeni bir sütun ekleyeceğim. Yuvarlama yöntemini kullanarak, belirtilen sayıda nokta veya satır için ortalamayı hesaplarım. Bu işlemi 21 günlük daha uzun bir pencere için tekrarlıyorum. Bu iki yeni sütun, hesapladığımız hareketli ortalamaları temsil ediyor. Verileri görselleştirmek için kapanış fiyatlarını, dokuz günlük hareketli ortalamayı ve 21 günlük hareketli ortalamayı çiziyorum.

Bazen hareketli ortalamaları geciktirmek yararlıdır. Rolling yöntemini kullanırken "center=True" parametresini ekleyerek, 21 günlük pencere için hareketli ortalama çizgisini 10 gün geriye kaydırabiliriz. Bu, karşılık gelen verilerle hizalanan gecikmeli bir çizgi oluşturur. Bu kaymayı çizilen grafikte gözlemleyebiliriz.

Hareketli ortalamalar hesaplanırken mevcut gözlemin ortalamaya dahil edildiğini not etmeliyim. Bunu geleneksel bir tahmin aracı olarak kullanmak istiyorsanız, hareketli ortalamayı ileriye kaydırmak isteyebilirsiniz. Kaydırma yöntemini kullanarak ve pozitif bir tamsayı belirterek, hareketli ortalamayı istenen sayıda periyot ileriye kaydırabiliriz. Bu, mevcut gözlemin ortalamaya dahil edilmemesini sağlar.

Ek olarak, yuvarlama yöntemi, herhangi bir gecikme değeri belirleme veya hatta negatif bir tamsayı kullanarak hareketli ortalamayı ilk güne kaydırma gibi başka parametreler sunar.

Ayrıca, genellikle opsiyon fiyatlamasında kullanılan tarihsel volatilitenin nasıl hesaplanacağını gösteriyorum. Bunu yapmak için veri çerçevesine başka bir sütun eklememiz gerekiyor. Numpy kullanarak, kapanış fiyatlarını bir önceki günün kapanışına bölerek logaritmik getirileri hesaplıyorum. Bu getirilerin çizilmesi, sıfır etrafında ortalanmış gürültülü bir grafik görüntüler.

Tarihsel volatiliteyi elde etmek için, bir ayda tipik olarak 21 işlem günü olduğundan, 21 günlük pencereli hareketli bir standart sapma kullanıyoruz. Bu hesaplama yirmi birinci gözlemi içerir, bu nedenle oynaklığı doğru bir şekilde yansıtmak için sonucu bir gün ileri kaydırırız. Bu, gelecekteki bilgiye sahip olduğumuzu ima etmekten kaçınır. Oynaklığın çizilmesi, verilerin daha net bir şekilde temsil edilmesini sağlar ve altın fiyatlarındaki yüksek ve düşük oynaklık dönemlerini ortaya çıkarır.

Gelecekteki bir videoda, pandaları kullanarak ek fiyat analizi tekniklerini ele alacağım. Umarım bu eğitim, pandalarda hareketli ortalamalar ve yuvarlanan standart sapmalar için yuvarlanma yöntemini kullanmaya yönelik yararlı bir giriş sağlamıştır.

Python Pandas || Moving Averages and Rolling Window Statistics for Stock Prices
Python Pandas || Moving Averages and Rolling Window Statistics for Stock Prices
  • 2017.12.21
  • www.youtube.com
#pandas #python #rollingPlease SUBSCRIBE:https://www.youtube.com/subscription_center?add_user=mjmacartyTry my Hands-on Python for Finance course on Udemy...
 

Python Kullanarak Algoritmik Ticarete Giriş - Ticaret Algoritması Nasıl Oluşturulur ve Test Edilir


Python Kullanarak Algoritmik Ticarete Giriş - Ticaret Algoritması Nasıl Oluşturulur ve Test Edilir

Bu videoda, algoritmik bir ticaret stratejisinin geliştirilmesini inceleyeceğiz. Bu videonun yalnızca eğitim amaçlı olduğunu ve yatırım tavsiyesi olarak değerlendirilmemesi gerektiğini unutmamak önemlidir. Keşfedeceğimiz strateji, terimin kendisi belirsiz ve yoruma açık olabilse de, genellikle momentum stratejisi olarak bilinir.

Temel olarak, bir momentum stratejisi, net bir yönlü hareket sergileyen menkul kıymetlerin tanımlanmasını içerir. Bizim durumumuzda, 50 günlük hareketli ortalamasının veya araştırdığımız önceden belirlenmiş herhangi bir ölçümün üzerinde işlem gören menkul kıymetleri belirlemek için bir tarama süreci yürüterek başlayacağız.

Bu stratejiye, yukarı veya aşağı doğru belirli bir yönde hareket eden menkul kıymetlerden yararlanmayı amaçladığından, genellikle trend takip eden bir strateji denir. Bu yaklaşımın, çeşitli menkul kıymetler arasında uygulanabilecek potansiyel karlı ticaret sinyallerini belirlemek için kapsamlı bir araştırma gerektirdiğine dikkat etmek önemlidir.

Bu videonun amaçları doğrultusunda, potansiyelini belirlemek için tek bir güvenliği analiz etmeye odaklanacağız. Başlamak için gerekli kütüphaneleri içe aktaracağız ve ortamımızı kuracağız. Kodu içeren not defteri, video açıklamasında bulunabilecek bir GitHub bağlantısında kullanıma sunulacaktır.

Ardından, analiz için gerekli verileri indireceğiz. Bu durumda, "GLD" sembollü Altın ETF (Borsa Yatırım Fonu) verilerini almak için Yahoo Finance API'sini kullanacağız. Sembolü belirterek ve başlangıç ve bitiş tarihlerini varsayılan olarak bırakarak verileri almak için Pandas veri okuyucusunu kullanacağız, bu bize yaklaşık beş yıllık veri sağlayacaktır. İndirdikten sonra, doğruluğundan emin olmak için verilerin ilk birkaç satırını inceleyeceğiz.

Analizimizi kolaylaştırmak için veri çerçevesine ek sütunlar ekleyeceğiz. İlk olarak, zaman serisinde günü takip etmek için bir gün sayacı sütunu ekleyeceğiz. Bu, altın veri çerçevesindeki gözlem sayısıyla eşleşen bir aralık dizisi oluşturmak için NumPy kitaplığı kullanılarak gerçekleştirilecektir. Gün sayacı sütunu daha sonra veri çerçevesine eklenecek ve günün tarih sütununu takip etmesini sağlamak için sütun sırasını ayarlayacağız.

Ek olarak, özel analizimiz için ayarlanmış kapanış ve hacim gibi gereksiz sütunları çıkaracağız. Belirli menkul kıymetler için ayarlanmış kapanışın, özellikle hisse bölünmelerinin olduğu durumlarda yararlı olabileceğini belirtmekte fayda var. Ancak amaçlarımız doğrultusunda bu sütunları hariç tutacağız.

Ön adımları tamamladıktan sonra data frame üzerinde info komutunu çalıştırarak datanın yapısını inceleyebiliriz. Bu, veri çerçevesinde bulunan gözlem sayısı ve veri türleri hakkında bilgi sağlayarak tüm sütunların sayısal olduğunu doğrular.

Ardından, veri çerçevesine hareketli ortalama sütunları ekleyerek momentum stratejisini tanıtacağız. İşlemleri tetiklemek için hızlı (9 günlük) ve yavaş (21 günlük) olmak üzere iki hareketli ortalama kullanacağız. Spesifik olarak, hızlı hareket eden ortalama yavaş hareket eden ortalamanın üzerine çıktığında bir ticarete gireceğiz ve hızlı hareket eden ortalama yavaş hareket eden ortalamanın altına düştüğünde çıkacak veya satış yapacağız. Bu stratejinin, ister uzun ister kısa olsun, her zaman bir ticarette olduğumuzu varsaydığına dikkat etmek önemlidir.

Kapanış fiyatına dayalı hareketli ortalamaları hesaplamak için Pandas tarafından sağlanan yuvarlanma yöntemini kullanacağız. Bu yöntem, hareketli ortalama için gün sayısını belirlememizi sağlar. Ayrıca istenirse standart sapma veya medyan gibi farklı toplayıcılar da uygulayabiliriz. Bu durumda, yalnızca yuvarlanan ortalamaya odaklanacağız. Bu işlemi hem hızlı hem de yavaş hareket eden ortalamalar için çoğaltacağız ve veri çerçevesinde iki ek sütun elde edeceğiz.

Hareketli ortalamalar sırasıyla 9 ve 21 gün gecikmeli olduğu için Pandas'taki shift yöntemini kullanarak verileri bir gün ileri kaydırarak düzeltmemiz gerekiyor.

Hareketli ortalamaları hesapladıktan sonra Pandas'ta shift yöntemini kullanarak verileri bir gün ileri kaydırarak ayarlayacağız. Bu, o günün hareketli ortalamalarının bir sonraki günün fiyat hareketiyle uyumlu olmasını sağlar.

Artık hareketli ortalama sütunlarını ayarladığımıza göre, hızlı ve yavaş hareketli ortalamaların kesişmesine dayalı ticaret sinyalleri üretebiliriz. Bunu yapmak için, "Sinyal" adlı yeni bir sütun oluşturacağız ve buna, hızlı hareket eden ortalama yavaş hareket eden ortalamanın üzerinde olduğunda, bir yükseliş sinyali olduğunu gösteren 1 ve hızlı hareket eden ortalama, yavaş hareket eden ortalamanın altında olduğunda -1 değerini atayacağız. hareketli ortalama, düşüş sinyali veriyor.

İşlemlerimiz için giriş ve çıkış noktalarını belirlemek için "Pozisyon" adlı bir sütun daha ekleyeceğiz. Başlangıçta, bir ticarette olmadığımızı belirtmek için ona 0 değeri atayacağız. Bir yükseliş sinyali oluştuğunda (hızlı hareket eden ortalama, yavaş hareket eden ortalamanın üzerine çıkarsa) ve şu anda bir işlem yapmıyorsak (Pozisyon = 0), Pozisyon sütununa uzun bir pozisyonu belirten 1 değeri atarız. Tersine, bir düşüş sinyali oluştuğunda (hızlı hareket eden ortalama, yavaş hareket eden ortalamanın altına düşer) ve şu anda bir işlem yapmıyorsak, Pozisyon sütununa bir kısa pozisyon belirten -1 değeri atarız. Bu, yalnızca yeni bir sinyal olduğunda ve halihazırda bir ticarette olmadığımızda bir ticarete girmemizi sağlar.

Ticaret stratejimizin günlük getirilerini takip etmek için "Strateji Getirileri" adlı başka bir sütun oluşturacağız. Pozisyon sütununu kapanış fiyatındaki günlük yüzde değişim ile çarparak günlük getirileri hesaplayacağız. Bu bize, ticaret sinyallerini takip etmiş olsaydık elde edeceğimiz getiriyi verecektir.

Son olarak Strateji Getirileri sütununa cumprod yöntemini uygulayarak stratejimizin kümülatif getirilerini hesaplayacağız. Bu bize stratejimizin belirtilen zaman aralığındaki genel performansını sağlayacaktır.

Bu noktada kümülatif getirileri çizerek stratejimizin performansını görselleştirebiliriz. Stratejimizin getirilerinin zaman içindeki büyümesini gösteren bir çizgi grafiği oluşturmak için matplotlib kitaplığını kullanacağız.

Çizimde, momentum stratejimizin etkinliği hakkında bize bir fikir vermesi gereken kümülatif getiri eğrisini gözlemleyebiliriz. Pozitif kümülatif getiriler karlılığı, negatif kümülatif getiriler ise kayıpları gösterir.

Bunun bir momentum ticaret stratejisinin basitleştirilmiş bir örneği olduğunu ve gerçek dünya ticaret stratejisi geliştirirken işlem maliyetleri, kayma ve risk yönetimi gibi dikkate alınması gereken birçok faktör olduğunu unutmayın. Herhangi bir ticaret stratejisini gerçek dünya ticaretine uygulamadan önce baştan sona geriye dönük test etmek ve doğrulamak önemlidir.

<
Introduction to Algorithmic Trading Using Python - How to Create & Test Trading Algorithm
Introduction to Algorithmic Trading Using Python - How to Create & Test Trading Algorithm
  • 2021.04.12
  • www.youtube.com
#python #algorithmic #trading How to create a Trading Algorithm - Algorithmic Trading Using Pythonhttps://alphabench.com/data/python-algorithm-trading...
 

Python, pandalar, NumPy matplotlib ve SciPy ile Kantitatif Hisse Senedi Fiyat Analizi


Python, pandalar, NumPy matplotlib ve SciPy ile Kantitatif Hisse Senedi Fiyat Analizi

Bu videoda konuşmacı, hisse senedi fiyat değişikliklerini analiz etmek için kantitatif analitik yöntemleri tanıtıyor. Temel amaç, hisse senedi fiyat değişiminin normal bir dağılım izleyip izlemediğini belirlemek, günlük değişimde herhangi bir yönlü eğilimi belirlemek ve fiyat hareketinin rastgele bir yürüyüş olarak tanımlanıp tanımlanamayacağını değerlendirmektir. Konuşmacı bir Jupyter not defteri kullanmaktan bahseder ve not defterini indirmek için bir bağlantı sağlar.

Konuşmacı, ortamı ayarlayarak ve NumPy, Pandas ve Matplotlib gibi veri analizi kitaplıklarını içe aktararak başlar. Ayrıca, Yahoo API'sinden canlı verileri indirmek için Pandas Data Reader kitaplığının kullanılmasından da bahsediyorlar. Konuşmacı daha sonra, varsayılan olarak son beş yıllık fiyat verilerine göre başlangıç ve bitiş tarihlerini belirterek Amazon hisse senedi verilerini alır.

Verileri aldıktan sonra, konuşmacı mevcut bilgileri doğrulamak için ilk birkaç satırı inceler. Yüksek, düşük, açılış, kapanış, hacim ve düzeltilmiş kapanış fiyatlarını temsil eden sütunları gösterirler. Öncelikle kapanış fiyatıyla ilgilendiklerinden, "kapanış" veya "düzeltilmiş kapanış" sütununu kullanma seçeneğini tartışıyorlar, ikincisi bölünmüş hisse senetleri için kullanışlı. Bu durumda, Amazon'un son bölünmesi 1999'da olduğu için, iki sütun arasındaki seçim önemli değil.

Ardından, konuşmacı kapanış fiyatı sütununu ayrı bir değişkene ayırır ve ardışık kapanış fiyatları arasındaki farkın logaritmasını kullanarak anlık getiri oranını hesaplar. İlk gün için geri dönüş hesaplanamadığı için ilk satırın bir NaN (sayı değil) değeri içerdiğine dikkat çekerek sonuç değerlerini görüntülerler.

Konuşmacı daha sonra verileri Matplotlib kullanarak bir çizgi grafik olarak çizerek günlük fiyat değişimini görselleştirir. Fiyat değişiminin önemli ölçüde dalgalandığını ve sıfır civarında kümelendiğini ve beş yıllık süre boyunca ara sıra öngörülemeyen büyük olayların meydana geldiğini gözlemliyorlar. Belirli bir zaman dilimini analiz etmek için, daha az yoğunluk gösteren ancak aynı genel modeli koruyan geçen yılın verilerinin değerini çiziyorlar.

Fiyat hareketi için tanımlayıcı istatistikler, Pandalar "açıkla" işlevi kullanılarak elde edilir. Konuşmacı, istatistikleri bireysel olarak veya başka araçlar kullanarak elde etme olasılığından bahsediyor ancak Pandalar yöntemini amaçları için yeterli buluyor. Ayrıca SciPy kitaplığını tanıtıyorlar ve SciPy istatistiklerinden "açıkla" işlevini kullanarak tanımlayıcı istatistikleri hesaplamanın başka bir yolunu gösteriyorlar. NumPy ve SciPy'deki eksik değerlerin işlenmesi nedeniyle bazı değerlerin "NaN" olarak göründüğünden bahsediyorlar.

Sayıları daha yorumlanabilir hale getirmek için konuşmacı değerleri 100 ile çarparak yüzdeye dönüştürür. Bu değişiklik, verileri değiştirmeden çıktının okunabilirliğini artırır.

Devamında konuşmacı, günlük fiyat değişiminin dağılımını normal bir dağılımdan alınan bir örnekle karşılaştırır. Amazon getiri verilerinin bir histogramını çizerler ve merkez çevresinde önemli bir etkinlik gösterdiğini gözlemlerler; getiriler sağa ve sola doğru yayılarak normal bir dağılıma kıyasla daha kalın kuyruklar gösterir. Daha sonra SciPy istatistik modülünü kullanarak normal bir dağılımdan aynı boyutta bir örnek oluştururlar ve bunu Amazon iade verilerinin yanında bir histogram olarak çizerler. Normal dağılım örneği, Amazon verilerinden daha dağınık ve daha düzenli bir şekilde yayılmış görünüyor.

Daha sonra konuşmacı, hem normal değişken hem de Amazon getirileri üzerinde istatistiksel bir test, özellikle bir basıklık testi gerçekleştirir. Basıklık testi, normal bir dağılım varsayan sıfır hipotezi ile dağılımın normal kabul edilip edilemeyeceğini inceler. Test istatistiği ve p-değeri, konuşmacının sonuçların yorumunu açıklamasıyla elde edilir. Normal değişken için, test istatistiği biraz negatiftir ve sıfır hipotezine karşı güçlü bir kanıt olmadığını gösterir. Buna karşılık, Amazon getirileri için, test istatistiği çok daha büyüktür, sıfır hipotezinin reddedildiğini ve Amazon'un fiyat değişiminin normal dağılmış olarak tanımlanamayacağı sonucuna varır.

Farkı daha fazla görselleştirmek için konuşmacı, frekanslar yerine oranları ve dağılıma ne kadar iyi uyduğunu göstererek histogramı değiştirir. Bunu yapmak için ilk histogramda birkaç değişiklik yapacağım. Frekansları göstermek yerine oranları göstereceğim. Bu şekilde, histogramın üzerine teorik bir normal eğri yerleştirebilir ve bunun ne kadar iyi uyduğunu görebilirim.

Devam edelim ve histogramı normal eğri ile çizelim. Normal eğriyi oluşturmak için scipy.stats'taki norm modülünü kullanacağım ve sonra onu histogramla aynı grafik üzerinde çizeceğim.

import matplotlib.pyplot as plt

# Plot histogram
plt.hist(amazon_return, bins= 50 , density=True, alpha= 0.5 , label= 'Amazon Returns' )

# Generate normal curve
x = np.linspace(amazon_return.min(), amazon_return.max(), 100 )
normal_curve = norm.pdf(x, mu, sigma)

# Plot normal curve
plt.plot(x, normal_curve, 'r-' , label= 'Normal Distribution' )

# Add labels and legend
plt.xlabel( 'Daily Price Change' )
plt.ylabel( 'Proportion' )
plt.title( 'Histogram of Amazon Returns with Normal Distribution' )
plt.legend()

# Show the plot
plt.show()
Şimdi olay örgüsüne bir göz atalım. Amazon getirilerinin histogramına ve teorik normal dağılım eğrisinin kaplamasına sahibiz. Bu görsel karşılaştırma, günlük fiyat değişikliklerinin normal dağılımla ne kadar uyumlu olduğunu değerlendirmemizi sağlar.

Grafiği gözlemlediğimizde, Amazon getirilerinin histogramının normal dağılım şeklinden önemli ölçüde saptığını görebiliriz. Dağılım, normal bir dağılımdan bekleyeceğimizle karşılaştırıldığında aşırı fiyat hareketlerinin daha yüksek bir şekilde meydana geldiğini gösteren daha kalın kuyruklara sahiptir. Bu, Amazon iade verilerinde aşırı basıklığı gösteren önceki basıklık analizimizle uyumludur.

Sonuç olarak, uyguladığımız kantitatif analitik yöntemlere dayanarak, Amazon'un hisse senedi fiyat değişiminin normal dağılan bir olgu olarak tanımlanamayacağını belirleyebiliriz. Veriler, normal dağılımdan sapmaları gösteren, çarpıklık ve aşırı basıklık gibi özellikler sergiler. Günlük fiyat değişiklikleri, daha büyük, öngörülemeyen hareketlerin sık sık meydana gelmesiyle sıfır etrafında daha fazla kümelenmiştir. Bu bilgiler, Amazon'un hisse senedi fiyatı davranışının doğasını anlamak için değerlidir ve yatırım stratejileri veya risk yönetimi yaklaşımları geliştirmede faydalı olabilir.

Quantitative Stock Price Analysis with Python, pandas, NumPy matplotlib & SciPy
Quantitative Stock Price Analysis with Python, pandas, NumPy matplotlib & SciPy
  • 2021.06.07
  • www.youtube.com
#pythonprogramming #Stock #DataAnalysishttps://alphabench.com/data/pandas-quantitative-analysis-tutorial.html✅ Please SUBSCRIBE:https://www.youtube...
 

Python, NumPy, pandalar ve Seaborn ile Doğrusal Regresyon Modeli Teknikleri


Python, NumPy, pandalar ve Seaborn ile Doğrusal Regresyon Modeli Teknikleri

Bu videoda Python'da bazı basit regresyon tekniklerini keşfedeceğiz. Python'da regresyon uygulamak için çeşitli araçlar mevcuttur, ancak bunlardan birkaçına, özellikle NumPy'yi kullanarak odaklanacağız. Lütfen bu eğitimin kapsamlı olmadığını ve herhangi bir istatistiksel test yapmayacağımızı unutmayın. Basitçe bir çizgiyi sığdıracağız ve çıktıyı görselleştireceğiz.

Devam etmek için GitHub'daki video açıklamasında verilen bağlantıdan not defterini indirebilirsiniz. Ortamımızı kurup gerekli kütüphaneleri import ederek başlayalım. Canlı verileri almak için NumPy, pandas, Yahoo Finance API, görselleştirme için matplotlib ve planlarımıza bir tema uygulamak için seaborn kullanacağız.

Ardından, verileri almamız gerekiyor. Google ve S&P 500 ETF için yaklaşık bir yıl öncesine ait verileri alacağız. Bu amaçla pandas veri okuyucusunu ve Yahoo Finance API'sini kullanacağız. Verilere sahip olduğumuzda, ona hızlı bir şekilde bakabiliriz. Analizimiz için yalnızca "kapanış" fiyatlarıyla ilgilendiğimiz için verileri buna göre ayarlayacağız.

Regresyon gerçekleştirmek için, hem Google hem de S&P 500 ETF için anlık getiri oranını hesaplayacağız. Herhangi bir geçersiz değeri bıraktıktan sonra, iki değişken arasındaki korelasyonu hesaplamaya hazırız. Bunların güçlü bir şekilde ilişkili olduğunu bulduk, ancak bu analizde nedenselliği belirlemeye çalışmayacağız. Bunun yerine S&P 500'ü bağımsız değişken olarak ele alacağız.

Görselleştirmeyi kolaylaştırmak için veri noktalarının daha küçük bir alt kümesini örnekleyeceğiz. Bu durumda, rastgele 60 dönüşü örnekliyoruz ve genel veri kümesine benzer kalan korelasyonu gözlemliyoruz. Ardından, x ekseninde S&P 500 ve y ekseninde Google ile bir dağılım grafiği çizerek verileri görselleştirmeye devam ediyoruz.

Regresyona geçerek, NumPy'nin polyfit fonksiyonunu kullanarak lineer bir model uyduracağız. Bağımsız değişken olarak S&P 500 ve bağımlı değişken olarak Google ile örnek verileri ve polinomumuzun derecesini (basit doğrusal regresyon için 1) iletiyoruz. Bu bize beta değeri olarak yorumlanabilecek en uygun doğrunun eğimini ve y-kesişimini verir.

Eğilim çizgisini çizmek için, NumPy'nin regresyon ve bağımsız değişkenden geçen polival fonksiyonunu kullanıyoruz. Bu trend çizgisini dağılım grafiğinin üzerine yerleştirebiliriz. Ek olarak, regresyon, gelecekteki fiyatları tahmin etmek için teknik bir gösterge olarak kullanılabilir. Bu örnekte, S&P 500 kapanış fiyatlarını zamana karşı geriletiyoruz.

Regresyon katsayılarını elde ettikten sonra, gelecekteki zaman noktaları için tahmin edilen değerleri hesaplayabiliriz. Gerçek verileri zamana karşı çiziyoruz, trend çizgisini ekliyoruz ve lineer modele bir standart sapma ekleyip çıkararak bir kanal oluşturuyoruz. Bu kanal, tahminin güven aralığının görsel bir temsilini sağlar.

Son olarak, regresyon modelini kullanarak belirli zaman noktaları için nasıl tahminde bulunulacağını gösteriyoruz. Regresyon katsayılarına sahip bir poly1d nesnesi oluşturarak, bir değer (gelecekteki bir zaman noktasını temsil eden) girebilir ve tahmin edilen değeri elde edebiliriz. Ayrıca, dağılım grafiğini bir trend çizgisi ve güven aralığı ile görselleştirmek için alternatif bir yol sağlayan Seaborn'un reglot'undan da kısaca bahsediyoruz.

Bu öğreticiyi izleyerek Python'da doğrusal regresyona başlayabilir ve çeşitli analiz ve tahmin tekniklerini keşfedebilirsiniz.

Artık Python'da doğrusal regresyonun temellerini ele aldığımıza göre, bazı ek teknikleri ve kavramları keşfedelim.

Regresyon analizinin önemli bir yönü, modelin uyum iyiliğini değerlendirmektir. Başka bir deyişle, lineer regresyon çizgisi değişkenler arasındaki ilişkiyi ne kadar iyi temsil ediyor? Bağımlı değişkendeki varyansın bağımsız değişken(ler) tarafından açıklanabilen oranını gösteren R-kare değeri gibi uyumu değerlendirmek için kullanılabilecek çeşitli istatistiksel ölçüler vardır.

R-kare değerini hesaplamak için Python'daki statsmodels kütüphanesini kullanabiliriz. Gerekli modülü import edip lineer regresyon modelini verilerimize uyduracağız. Ardından, modelin rsquared özelliğini kullanarak R-squared değerini çıkartabiliriz.

Bunu bir örnekle gösterelim. X ve Y olmak üzere iki değişkenli bir veri setimiz olduğunu ve X'e dayalı olarak Y'yi tahmin etmek için doğrusal bir regresyon modeline uydurmak istediğimizi varsayalım. Regresyonu gerçekleştirmek için statsmodels kitaplığından sm.OLS (Sıradan En Küçük Kareler) işlevini kullanacağız. analiz.

İlk olarak, gerekli modülleri içe aktarıyoruz:

import statsmodels.api as sm
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
Ardından, verileri bir pandas DataFrame'e yüklüyoruz ve X ve Y değişkenlerini çıkarıyoruz:

data = pd.read_csv( 'data.csv' )
X = data[ 'X' ]
Y = data[ 'Y' ]
Daha sonra X bağımsız değişkenine bir sabit terim ekliyoruz. Bu, statsmodels kitaplığının kesme terimini regresyon modeline dahil etmesi için gereklidir:

X = sm.add_constant(X)
Şimdi lineer regresyon modelini uydurabilir ve R-kare değerini hesaplayabiliriz:

model = sm.OLS(Y, X).fit()
r_squared = model.rsquared
Son olarak, uyumun iyiliğini değerlendirmek için R-kare değerini yazdırabiliriz:

print( "R-squared:" , r_squared)
R-kare değeri 0 ile 1 arasında değişir ve 1 mükemmel uyumu gösterir. Genel olarak, daha yüksek bir R-kare değeri, modelin verilere daha iyi uyduğunu gösterir.

R-kare değerine ek olarak, doğrusal regresyon varsayımlarının ihlal edildiğini gösterebilecek herhangi bir model veya eğilimi kontrol etmek için artık çizimleri incelemek de önemlidir. Artıklar, bağımlı değişkenin gözlenen ve tahmin edilen değerleri arasındaki farklardır. İyi bir lineer regresyon modeli, sıfır civarında rastgele ve eşit dağılmış kalıntılara sahip olmalıdır.

Artıkları görselleştirmek için, artıklara karşı tahmin edilen değerlerin bir dağılım grafiğini çizebiliriz. Çizim, rastgelelikten bir model veya herhangi bir sistematik sapma gösteriyorsa, doğrusal regresyon modelinin veriler için uygun olmayabileceğini düşündürür.

Artık çizimi oluşturmak için Python'da matplotlib kitaplığını kullanabiliriz:

predicted_values = model.predict(X)
residuals = Y - predicted_values

plt.scatter(predicted_values, residuals)
plt.axhline(y= 0 , color= 'r' , linestyle= '-' )
plt.xlabel( 'Predicted Values' )
plt.ylabel( 'Residuals' )
plt.title( 'Residual Plot' )
plt.show()
Artıklara karşı tahmin edilen değerlerin dağılım grafiği, net bir yapı veya eğilim içermeyen bulut benzeri bir model göstermelidir. Eğri bir şekil veya artan/azalan yayılma gibi herhangi bir belirgin model gözlemlersek, bu doğrusal regresyon varsayımlarının geçerli olmayabileceğini düşündürür.

Sonuç olarak, doğrusal regresyon, değişkenler arasındaki ilişkiyi modellemek için güçlü ve yaygın olarak kullanılan bir tekniktir. Verilere bir regresyon çizgisi uydurarak, bağımsız değişkenlere dayalı olarak bağımlı değişken hakkında tahminler yapabilir ve içgörüler kazanabiliriz. Uyumun iyiliğini R-kare değeri gibi ölçütler kullanarak değerlendirmek ve regresyon modelinin geçerliliğini değerlendirmek için artık çizimleri kontrol etmek önemlidir.

Linear Regression Model Techniques with Python, NumPy, pandas and Seaborn
Linear Regression Model Techniques with Python, NumPy, pandas and Seaborn
  • 2021.07.05
  • www.youtube.com
#Python #Regression #NumPyhttps://alphabench.com/data/python-linear-regression.html✅ Please SUBSCRIBE:https://www.youtube.com/subscription_center?add...
Neden: