Gecikmesiz Dijital Filtreler Oluşturma

Konstantin Gruzdev | 14 Ocak, 2022

Giriş

Makale, akış verilerinde yararlı bir sinyal (eğilim) belirleme yaklaşımlarından birini açıklamaktadır. Piyasa kotasyonlarına uygulanan küçük filtreleme (düzgünleştirme) testleri, son çubuklarda yeniden çizilmeyen gecikmesiz dijital filtreler (göstergeler) oluşturma potansiyelini gösterir.


Standart Yaklaşım

Bu yaklaşım, klasik zaman serisi düzgünleştirme yöntemlerine dayanmaktadır. Hem bu sitede hem de diğer sitelerde bu konuyla ilgili çok sayıda makale var. Sonuçlar da klasik:

  1. Trendlerdeki değişiklikler gecikmeli olarak görüntülenir;
  2. Düzgünleştirme kalitesindeki düşüş pahasına daha iyi gösterge (dijital filtre) yanıtı elde edildi;
  3. Gecikmesiz göstergeleri uygulama girişimleri, son örneklerde (çubuklar) yeniden çizilmeye yol açar.

Yatırımcılar ekonomik süreçlerin kalıcılığını ve diğer kurnazlıkları kullanarak bunlarla başa çıkmayı öğrenmiş olsalar da, örneğin hava yapılarını test etmek gibi, gerçek zamanlı deneysel verileri değerlendirirken bu kabul edilemez olacaktır.


Ana Sorun

Alım satım sistemlerinin çoğunluğunun zamanla performansının durduğu ve göstergelerin yalnızca belirli aralıklarla gösterge niteliğinde olduğu bilinen bir gerçektir. Bu kolayca açıklanabilir: piyasa kotasyonları durağan değildir. Durağan bir sürecin tanımı Wikipedia'da mevcuttur:

Durağan bir süreç, zaman içinde kaydırıldığında ortak olasılık dağılımı değişmeyen stokastik bir süreçtir.

Bu tanıma göre, durağan zaman serilerinin analiz yöntemleri teknik analizde uygulanamaz. Bu anlaşılabilirdir. Piyasaya giren yetenekli bir piyasa düzenleyici, bilinen bir dizi piyasa kotasyonunun parametreleriyle ilgili olarak bundan önce yapmış olabileceğimiz tüm hesaplamaları alt üst edecektir.

Bu çok bariz gibi gözükse de, birçok gösterge durağan zaman serisi analizi teorisine dayanmaktadır. Bu tür göstergelere örnek olarak hareketli ortalamalar ve bunların modifikasyonları verilebilir. Ancak, uyarlanabilir göstergeler oluşturmaya yönelik bazı girişimler vardır. Piyasa fiyatlarının durağan olmama durumunu bir dereceye kadar hesaba katmaları gerekiyor, ancak harikalar yaratıyor gibi görünmüyorlar. Durağan olmayan serilerin şu anda bilinen analiz yöntemlerini kullanarak piyasa düzenleyiciyi "cezalandırma" girişimleri (dalgacıklar, ampirik modlar ve diğerleri) makalesi de başarılı değildir. Belli bir kilit faktör sürekli olarak göz ardı ediliyor veya tanımlanamıyor gibi görünüyor.

Bunun temel nedeni, kullanılan yöntemlerin akış verileriyle çalışmak için tasarlanmamış olmasıdır. Hepsi (veya neredeyse tamamı) zaten bilinen veya teknik analiz açısından konuşursak geçmiş verilerin analizi için geliştirildi. Bu yöntemler makuldur, örneğin jeofizikte: depremi hissedersiniz, bir sismogram alırsınız ve ardından birkaç ay boyunca analiz edersiniz. Başka bir deyişle, bu yöntemler title"Teknik Analiz: Nasıl Analiz Ediyoruz?" makalesititle, filtreleme sırasında bir zaman serisinin sonunda ortaya çıkan belirsizliklerin nihai sonucu etkilediği durumlarda uygundur.

Deneysel akış verilerini veya piyasa fiyatlarını analiz ederken, geçmişten ziyade alınan en son verilere odaklanırız. Bunlar klasik algoritmalarla ele alınamayacak verilerdir.


Küme Filtresi

Küme filtresi, ilk sekansa benzeyen bir dizi dijital filtredir. Küme filtreleri küme göstergeleri makalesiyle karıştırılmamalıdır.

Küme filtreleri, durağan olmayan zaman serilerini gerçek zamanlı olarak, diğer bir deyişle akış verilerini analiz ederken kullanışlıdır. Bu, bu filtrelerin esas ilgi alanının, halihazırda bilinen zaman serisi değerlerini düzeltmek için değil, gerçek zamanlı olarak alınan yeni verilerin en olası düzgünleştirilmiş değerlerini elde etmek olduğu anlamına gelir.

Çeşitli ayrıştırma yöntemlerinden veya basitçe istenen frekanstaki filtrelerden farklı olarak, küme filtreleri, ilk sekansın tahmini için daha fazla analiz edilen ilk serilerin olası değerlerinin bir bileşimini veya bir yelpazesini oluşturur. Giriş sekansı, analizin hedefinden çok bir referans görevi görür. Ana analiz, alınan verilerin işlenmesinden sonra bir dizi filtre tarafından hesaplanan değerlerle ilgilidir.

Şekil 1. Basit bir küme filtresinin diyagramı

Şekil 1. Basit bir küme filtresinin diyagramı

Genel durumda, kümeye dahil edilen her filtre kendi bireysel özelliklerine sahiptir ve diğerleriyle hiçbir şekilde ilişkili değildir. Bu filtreler bazen başlangıçtaki durağan olmayan zaman serilerinin bireysel özelliklerini tanımlayan kendi durağan zaman serilerinin analizi için özelleştirilir. En basit durumda, ilk durağan olmayan seri parametrelerini değiştirirse, filtreler "geçer". Böylece, bir küme filtresi, karakteristiğindeki gerçek zamanlı değişiklikleri izler.


Küme Filtresi Tasarım Prosedürü

Herhangi bir küme filtresi üç adımda tasarlanabilir:

1. İlk adım genellikle en zor olanıdır ancak bu, alınan akış verilerinin olasılıklı modellerinin oluşturulduğu yerdir. Bu modellerin sayısı gelişigüzel büyük olabilir. Her zaman yaklaşık verileri etkileyen fiziksel süreçlerle ilgili değildirler. Modeller yaklaşık diziyi ne kadar kesin olarak tanımlarsa gecikmesiz bir küme filtresi elde etme olasılığı o kadar yüksek olur.

2. İkinci adımda her model için bir veya birden fazla sayısal filtre oluşturulur. Bir kümede filtreleri bir araya getirmenin en genel koşulu, bunların yaklaşık diziyi tanımlayan modellere ait olmalarıdır.

3. Böylece, bir kümede bir veya daha fazla filtreye sahip olabiliriz. Sonuç olarak, her yeni numune ile numune değerine ve bir veya daha fazla filtre değerine sahip oluyoruz. Böylece, her örnekle birlikte birkaç (en az iki) değerden oluşan bir vektör veya yapay gürültüye sahibiz. Şimdi tek yapmamız gereken en uygun değeri seçmek.


Basit Bir Küme Filtresi Örneği

Örnek olarak, giriş sırası olarak piyasa kotasyonlarını kullanarak yukarıdaki diyagrama karşılık gelen basit bir küme filtresi uygulayacağız. Herhangi bir zaman diliminin kapanış fiyatlarını kullanabilirsiniz.

1. Model açıklaması. Şu varsayıma göre hareket edeceğiz:

2. Dijital filtrelerin seçilmesi. Basit olması adına iki filtre alıyoruz:

3. Küme filtresi için uygun değeri seçme.

Böylece, her yeni numune ile MA ve EMA değerinin yanı sıra numune değerine (kapanış fiyatı) sahip olacağız. Modelimiz için belirtilen ikinci varsayıma göre kapanış fiyatı göz ardı edilecektir. Ayrıca, son varsayıma dayalı olarak МА veya ЕМА değerini seçiyoruz, yani trend yönünü koruyoruz:

Burada:


Program Kodu ve Küme Filtresi Performansı

Küme filtremizle birlikte göstergenin kodu, hareketli ortalamanın kodundan daha karmaşık değildir. Herhangi bir teknik bilgi içermez, bu nedenle incelemenin bir anlamı yoktur. Kaynak kodu makaleye eklenmiştir.

Vakit kaybetmeden, göstergemizin performansını görmek için aşağıdaki videoyu izleyebilirsiniz:


Video 1. Basit bir küme filtresinin performansı

Filtre tasarım süreci, katı bir matematiksel yaklaşımdan ziyade daha çok el çabukluğu gibi görünse de, video, küme filtre çizgisinin davranışının bireysel hareketli ortalamalardan daha yeterli olduğunu açıkça göstermektedir. Özellikle ilk serinin testere dişi bölümlerinde belirgindir. Bazılarınız için yeterince etkileyici olmadıysa, küme filtresinin en iyi göstergelerinden biri olarak kabul edilen JJMA ile de karşılaştırabiliriz. Bir sonraki video, JJMA ile bizim küme filtremizin aynı bölümdeki rekabetini gösteriyor. JJMA parametrelerini seçmeye çalıştım, böylece çizgisi bizim gösterge çizgimizle maksimum seviyede eşleşebilir.

Video 2. Basit küme filtresi ve JJMA

Filtremiz, ortalama olarak, herhangi bir zaman serisinde JJMA ile aynı performansı gösteriyor. Ancak JJMA hali hazırda en iyi durumdayken, bizim küme filtremiz daha da geliştirilebilir.


Gelişmiş Düzgünleştirme Etkisi

Şimdiye kadar, küme filtrelerinin bir giriş dizisini gecikme olmadan düzgünleştirebileceğine dair hiçbir kanıt yoktu. Bu sonucu elde etmek için yukarıda ele alınandan daha karmaşık bir filtre gereklidir.

Örnekleme amacıyla, bir GMomentum testi göstergesi geliştirdim. İki gösterge çizgisi içerir:

Göstergenin ayarları, makale için özel olarak hazırlanmış çeşitli test seçeneklerini kapsar. Aşağıda açıklanan testlerde, William Blau makalesinde açıklandığı gibi bir göreli momentum kullanacağız. Kendi deneylerinizi yaparken, diğer momentum varyasyonlarını kullanabilirsiniz; sonuçlar aynı olacaktır. Göstergenin ayrıntılı açıklamasının yanı sıra indirme ve kullanım talimatları göstergenin açıklamasında bulunabilir.

Makalede Momentum kullanılmasının özel bir nedeni yoktur. Momentum çizgisi oldukça gürültülüdür ve bu nedenle filtrenin performansı bence daha açıklayıcı olacaktır. Böylece, GMomentum testi göstergesini çalıştırırsınız ve kırmızı çizginin davranışını mavi çizgiye kıyasla analiz edersiniz.

Öncelikle, ilginç bir şeye bakalım. Bunun için göstergeyi çalıştırmadan önce "Filtre" parametresini "Test No.1 Gelişmiş" olarak ayarlayın. Bu moddaki filtre ayarları, genellikle "yönlendirme etkisi" olarak adlandırılabilecek şeyi ortaya çıkarır. Test ederken, momentumun tüm başlangıç çizgisinin düzgünleştirilmesini göremeyeceksiniz. Filtre, yönlendirme etkisi elde etme olasılığının iyi olduğu alanları izler. Elbette, bu her zaman başarılı olmaz. Yine de, farkedilecek sıklıkta meydana gelir.

Filtre performansının en açıklayıcı kısımlarından biri aşağıdaki grafikte gösterilmektedir.

Şekil 2. Momentum çizgisinin düzgünleştirilmesinde yönlendirme etkisi

Şekil 2. Momentum çizgisinin düzgünleştirilmesinde yönlendirme etkisi

Sadece yönlendirme filtrelemesi gibi göründüğüne dikkat edilmelidir. Bu etki, filtrenin vaktinden önce olması nedeniyle değil, münhasıran momentum çizgisinin gürültü hareketlerinden dolayı meydana gelir. Diğer göstergelerle ilgili benzer çalışmalar (basit bir MA'dan JJMA'ya), düzgünleştirmenin yönlendirme etkisinin her birinde gözlemlenebileceğini doğrulamaktadır. Belirtilen dönem ne kadar küçükse etki o kadar sık görülür. Son çalışmalar, etkinin artırılabileceğini göstermektedir. Her şey, olası değerler vektörü oluşturma yöntemine ve analizine bağlıdır.


Kobra Etkisi

Göstergeyi çalışırken görmüş olanlarınız başka bir anormalliği fark edebilir. Son tamamlanmamış çubuktaki gösterge çizgisi her zaman fiyatı takip etmez. Örneğin, gösterge aşağı hareket ederken fiyat yükseliyor olabilir ve bunun tersi de geçerlidir. Pazar hızlı olduğunda veya görselleştiriciden bakıldığında, bazen bir kobranın dilini takip eden avına benzer.

Video 3. Pürüzsüzleştirmenin öncü etkisi ve kobra etkisi


Trendin Önünde Hatalar

Yukarıda, momentumun ilk çizgisi trendin tersine gittiğinde (gürültülü hale geldiğinde), düzleştirilmiş çizginin ilk çizgi üzerinde öncü etkisi ile sonuçlandığını görebiliriz. Görünüşe göre, momentum çizgisi diğer yönde de yanlış bir hareket yapabilir, yani beklenmedik bir şekilde trend yönünde çok uzağa ateş edebilir, bazen trend zaten tersine dönmüş olsa bile çok uzun süre kalabilir. Filtrenin bu tür hareketleri yavaşlatabilmesi mantıklı olacaktır.

Algoritmanın bu trendin ötesindeki hataları nasıl filtrelediğini görelim. Bunun için göstergeyi çalıştırmadan önce "Filtre" parametresini "Test No.2 Yumuşatma" olarak ayarlamalısınız. Bu test sırasında küme filtresinin çalışması iki bölüme ayrılmıştır.

Grafik alt penceresinde görüntülenen kısa gösterge adı "GMomentum(Parametre 1, Parametre 2)" parantez içinde iki parametreye sahiptir. İkinci parametre -1 ise algoritma trendin önündeki hataları düzeltmeye (düzleme) çalışır. İkinci parametre sıfıra eşit veya sıfırdan büyükse gelişmiş yumuşatma ayarları devreye girer.

Aşağıdaki video, hassasiyetini minimumdan kabul edilebilir değere ve sonra geriye değiştirdikten sonra filtre işlemini göstermektedir. Videoda gösterilen efekti elde etmek için Yukarı ve Aşağı tuşları kullanılarak filtre hassasiyeti (gösterge penceresinin aktif olması şartıyla) kontrol edilebilir.

Video 4. Trendin önündeki hataları filtreleme.

Yukarıdaki video, fiyatın ani hareketlerine ve momentumun başlangıç çizgisine rağmen, filtre hassasiyeti arttıkça momentum çizgisinin gecikmesiz olarak düzleştiğini gösteriyor. Maksimum yumuşatmanın ardından kabul edilebilir giriş noktaları elde ederiz.

Ek olarak düz alanlar göstergelerin çoğu için bir sorun teşkil etmektedir. Ancak burada bazıları mevcut ayarlarla bile neredeyse düz bir çizgiye kolayca yozlaşır. Teorik olarak bu teknik, ek bir gecikme yaratmadan mevcut göstergelerden herhangi birini iyileştirmek için kullanılabilir. Pratik açıdan, kontrol edilmesi gerekiyor.

Bir sonraki videoda, lütfen dikkatinizi filtrenin ilk momentum çizgisinin ana zirvelerini nasıl düzleştirdiğine ve neredeyse hiç gecikme olmadan fiyat hareketine daha yumuşak bir trend çizgisi çizdiğine odaklayın. Bunun neden böyle olduğuna ilişkin açıklama, William Blau'nun göstergeleri hakkındaki makalesinde verilmektedir.

Video 5. İlk momentum çizgisinin tepe noktalarının yumuşatılması.

Elde edilen etkileyici sonuçlar, tüm alıntı tarihi boyunca aynı değildir. Ancak momentumun çok fazla gürültüye sahip olduğu ve göstergenin yalnızca akış verilerinin gecikmesiz olarak filtrelenmesini göstermek için uygulandığı gerçeğini göz önünde bulundurarak, bunu oldukça kabul edilebilir görebiliriz. Ayrıca, göstergenin yeniden çizilmediğine dikkat edilmelidir.


Dürtü Yanıtı

Yerleşik bir filtre ile momentum parametrelerinin incelenmesi oldukça ilginç görünebilir. Örneğin dürtü yanıtı, gösterge çizgisinden tepe noktalarının nasıl ve nerede kaybolduğuna dair iyi bir örnek sağlar. Testi gerçekleştirmek için "Filtre" parametresi "Test No.3 Dürtü" olarak ayarlanmalıdır. Test sırasında, her 1024'üncü çubuk bir birim dürtü alır. Göstergeyi çalıştırdıktan sonra tablodaki ilgili yeri bulun. Şöyle görünmelidir:

Şekil 3. Momentum dürtü yanıtı

Şekil 3. Momentum dürtü yanıtı

Gösterge çalışırken filtre devre dışı bırakılır. Bu nedenle, mavi ve kırmızı çizgi üzerinde iki tepe noktası görebileceksiniz: birim darbe anında ortaya çıkan ve buna eşit olan bir tepe noktası ve belirtilen sayıda periyottan sonra ortaya çıkan zıt yönlü diğer tepe noktası. "Çıplak" momentumun dürtü yanıtı böyle görünüyor. Ayrıca, Yukarı ve Aşağı tuşlarını kullanarak filtre hassasiyetini kademeli olarak artırın veya azaltın. Bunun gibi bir şey elde edebilmelisiniz:

Video 6. Momentum dürtü yanıtı

Görülebileceği gibi, ikinci tepe filtre tarafından tamamen düzleştirilirken, birincisi kesinlikle bozulmadan kalır. Filtre, tüm momentum etkilerini düzeltir ve ilk resmi doğru bir şekilde yeniden oluşturur: kendi başına bir birim dürtü. Gecikme yoktur. Birim darbenin genliğinde veya biçiminde herhangi bir bozulma yoktur. Eylemdeki mükemmel filtre olabilir mi?


Mükemmel Filtre

Söz konusu filtrenin mükemmel olduğuna hemen hükmetmenize izin vermeyen bir materyal faktör var. Bu biraz sonra açıklanacaktır.

Mükemmel filtrenin olamayacağına ve tüm filtrelerin (göstergelerin) geciktiğine inanılmaktadır. Ancak o zaman elde edilen sonuçları nasıl açıklayabiliriz? Hepsi gözlemlenebilir bir şey olarak sunulur. Bir geliştiricinin hilesi mi? Bir birim dürtü kodunda muhtemelen bir kodlama hilesi kullanılabilir. Ancak etki herhangi bir alıntı üzerinde gözlemlenebilir. Ayrıca her alım satım aracı için göstergeyi özel olarak ayarlamaya veya sıfırlamaya gerek yoktur.

Fiziksel nesneler (kondenser, indüktör vb.) kullanılarak bir filtre oluşturulduğunda mükemmel filtre mevcut olamaz. Bu, doğanın kendisi tarafından halledildi. Peki kusursuz filtrenin varlığı dijital dünyada imkansız mı? Bu sorunun cevabı kesinlikle bilgisayar sistemlerinin fiziksel sınırları (doğruluk, hesaplama hızı vb.) dikkate alınmadan verilmelidir.

Göstergemize geri dönelim. Yerleşik dijital filtre, doğrusal filtrelere ait değildir. Yerleşik filtreli bir gösterge için, yukarıda ele alınan dürtü yanıtı, iyi sonuç veren filtrelemenin yalnızca özel bir durumudur. Geniş kapsamlı sonuçlara varabilmek için daha yeterli ve dikkatli bir çalışma gereklidir.


Sonuç

Makalede verilen bilgilerin dijital filtreler (göstergeler) oluşturma konusunda bazı klişeleri kırmaya yardımcı olacağını umuyorum.

Açıklanan her şey, önerilen göstergeler kullanılarak incelenebilir. GMomentum testinin tanıtılan sürümü, küme filtrelerinin performansını ve potansiyel yeteneklerini değerlendirmenize olanak tanırken, basit filtre örneği geliştiricilere kendi filtrelerini oluşturmaları için bir dürtü verebilir.

Son olarak şu sonuca varıyorum: tam özellikli gecikmesiz göstergeler (dijital filtreler) oluşturmak potansiyel olarak mümkündür.