Python ve Pine Script Backtestleri: Aynı İşlem Stratejisi Neden Farklı Sonuçlar Verir?
Gerçekleşme zamanı, miktar, tick ile baz puan maliyetleri ve hesap özsermayesi üzerine Bitcoin araştırması: ölçülmüş Python sonuçları ve açık bir Pine Script karşılaştırma yöntemi.
Aynı işlem sinyalleri, aynı backtest sonucunu garanti etmez: emir zamanı, miktar, kayma birimi ve açık pozisyon muhasebesi sonucu değiştirebilir. Sabit BTC-USDT günlük kırılım stratejimiz, 2024–2025 döneminde modellenen maliyetlerden sonra +24.46% getiri sağladı; karşılaştırılabilir al ve tut hesabının getirisi +96.28% oldu. Python ile dört gerçekleşme kuralının etkisini ölçüyor, zarar eden bir işlemi nakit bakiyesine kadar uzlaştırıyor ve değerlendirme dönemindeki her mumu borsa API’siyle karşılaştırıyoruz. Burada ele alınan Pine uygulaması TradingView üzerinde çalıştırılmadı; motorlar arası karşılaştırma henüz doğrulanmış değil.
BU ARAŞTIRMA NEYİ AÇIKLIYOR?
- Sabit işlem kurallarının sinyallere, emirlere, gerçekleşmelere ve nakit muhasebesine nasıl bağlandığı.
- Sonraki açılış ve aynı kapanış gerçekleşmelerinin, sinyal anındaki miktarın, tick ile baz puan farkının ölçülen etkileri.
- Brüt ve net sonuçlar, zirveden düşüş, karşılaştırma ölçütü, dokuz geliştirme seçeneğinin tamamı ve iki ileri yürütme dönemi.
- Motorları karşılaştırmadan önce Pine uygulamasının kurallarını belirleme ve dışa aktarılan kayıtları ortak şemaya dönüştürme yöntemi.
İşlem kuralı, backtestin yalnızca bir parçasıdır
İki uygulama Bitcoin’in kırılım yaptığı konusunda aynı karara varıp satın alınan miktar, gerçekleşme maliyeti ve raporlanan kâr bakımından ayrışabilir. Kapanışta oluşan sinyal, bir emir oluşturma talimatıdır; emrin o kapanış fiyatından gerçekleştiğinin kaydı değildir. TradingView sıradan bir piyasa emrini normalde bir sonraki uygun fiyat güncellemesinde, çoğunlukla sonraki mumun açılışında işler; ayarlar bu kuralı değiştirebilir. [1]
Bu farkları tek ve sabit bir günlük Bitcoin kırılım kuralıyla inceliyoruz. Önceden tanımlanmış dört gerçekleşme kuralı aynı mumlar üzerinde çalıştırılıyor. Aşağıdaki sayısal karşılaştırmaların tamamı Python ile hesaplandı. Burada ele alınan Pine Script uygulaması TradingView üzerinde derlenmedi veya çalıştırılmadı; bu araştırmada Pine’dan dışa aktarılmış bir işlem kaydı bulunmuyor. Dolayısıyla tamamlanmış bir platformlar arası performans testi iddia etmek yerine, açıkça belirlenen kuralların sonuçlarını ölçüyoruz.
| Python hesabı | Miktar ve gerçekleşme kuralı | Değerlendirme getirisi |
|---|---|---|
| reference-next-open | Komisyon dahil nakdin 90% kadarı, sonraki açılışta miktar; 5 bp olumsuz gerçekleşme | +24.46% |
| signal-qty-bps | Sinyal kapanışından sabit miktar; sonraki açılışta 5 bp olumsuz düzeltme | +24.47% |
| signal-qty-ticks | Aynı sinyal anı miktarı; sonraki açılışta beş adet 0.01-USDT tick | +25.13% |
| same-close | Tamamlanmış sinyal kapanışında 5 bp olumsuz düzeltmeyle gerçekleşme; zamanlama karşı-olgusu | +24.46% |
Bu çalışma, işlem algoritması geliştirme araştırmamızı ileri taşıyor. Önceki makale eksiksiz bir araştırma süreci kurmuş, Pine uygulamasındaki miktar ve kayma farklarını ele almıştı. Burada bu farkları doğrudan deney değişkenlerine dönüştürüyoruz. Son bölüm, kendi Python ve TradingView uygulamalarınızın kayıtlarını nasıl karşılaştırabileceğinizi açıklıyor.
Çalıştırmadan önce ekonomik soruyu ve muhasebeyi sabitleyin
Ekonomik hipotez, kalıcı trendlerden elde edilen kazançların tekrar eden başarısız kırılımları karşılayabilmesidir. Bu hipotez, 55 ve 20 sayılarının benzersiz biçimde kârlı olduğu anlamına gelmez. Gerçekleşme araştırmasının konusu sabit kalsın diye önceki makaledeki bu süreleri koruyoruz. Özsermaye eğrisi çekici göründüğü için yeni bir kural seçmek farklı bir soruyu yanıtlar ve seçim yanlılığı için yeni bir fırsat yaratır.
| Öğe | Kaydedilen kural |
|---|---|
| Piyasa ve veri | BTC-USDT spot fiyatları, günlük UTC mumları; 2020-02-20–2025-12-31 girdisi |
| Giriş | Pozisyonsuzken: tamamlanmış kapanış, mevcut mum hariç önceki 55 mumun en yüksek HIGH değerinden kesin olarak büyük |
| Çıkış | Uzun pozisyondayken: tamamlanmış kapanış, mevcut mum hariç önceki 20 mumun en düşük LOW değerinden kesin olarak küçük |
| Emirler | Kapanıştan sonra sinyal; sonraki açılışta gerçekleşme; son mumun emirleri gerçekleşmeden kalır |
| Sermaye | Her dönem başlangıcında 10,000 USDT ve sıfır pozisyon; giriş komisyonu dahil 90% nakit bütçesi, kesirli BTC |
| Birincil maliyetler | Her yönde 10 bp komisyon ve 5 bp olumsuz fiyat düzeltmesi |
| Diğer varsayımlar | Kaldıraç, kısa pozisyon, fonlama, nakit faizi, vergi veya sabit işletme maliyeti yok; ayrı spread bedeli yok |
| Son pozisyon | Son kapanışla değerleme; zorunlu satış veya varsayımsal çıkış maliyeti karşılığı yok |
| Dönemler | Geliştirme 2021–2022; doğrulama 2023; değerlendirme 2024–2025; önceki veri göstergeleri ısıtır |
Strateji tanımını, yapılandırmayı ve veri değişikliğini, bu iş akışının performans hesaplamasından önce kaydettik. Bu kurum içi bir araştırma kaydıdır; bağımsız bir ön kayıt değildir. Aynı kural ve örtüşen piyasa geçmişi sitede daha önce incelendi. 2024–2025 bölümü, dondurulmuş uygulamanın kronolojik değerlendirmesidir; daha önce bilinmeyen piyasalardan gelen yeni kanıt değildir.
Birincil kabul koşulu mekaniktir: gerçekleşmeler kaydedilen bilgi zamanlamasına uymalı, hesap borçlanmamalı ve kapanmış işlemler ile açık pozisyon kârının toplamı hesap özsermayesiyle uzlaşmalıdır. Ekonomik değerlendirme için aynı bütçeli al ve tut hesabını, zirveden düşüşü, maliyet duyarlılığını ve kâr yoğunlaşmasını raporluyoruz. Pozitif getiri tek başına canlı kullanıma geçme koşulunu karşılamaz.
Yeni veri kontrolü neyi ortaya koyuyor?
Birincil hesaplama, önceki araştırmamızda kullanılan veri setindeki 2,142 günlük gözlemi kullanır: her UTC günündeki altı adet dört saatlik mum tek güne birleştirilmiştir; kaynak, humblefool06 tarafından Hugging Face üzerinde CC BY 4.0 beyanıyla yayımlanmıştır. Araştırma kayıtları, sabitlenmiş kaynak sürümünü, atfı, dönüşüm notunu ve SHA-256 özetlerini içerir. Önceki araştırmanın eksik bir önceki günü çıkarmasının ardından seri 20 Şubat 2020 tarihinde başlar. Bu analiz, 31 Aralık 2025 tarihinde biten sabit alt kümeyi kullanır. [3] [9]
Ayrıca Binance’in herkese açık piyasa verisi API’sinden 2024–2025 dönemindeki 731 günlük mumun tamamını aldık. Açılış, yüksek, düşük, kapanış ve hacim için yapılan 3,655 karşılaştırmanın tümü tam olarak eşleşti. Doğrulama raporu, istek adreslerini, yanıt özetlerini ve karşılaştırma yöntemini kaydeder. Ham API yanıtı birincil veri seti olarak yeniden dağıtılmıyor. Binance belgelerine göre varsayılan mum sınırları UTC’dir ve mumlar açılış zamanlarıyla tanımlanır. [4]
Bu, yalnızca dosya özetini kontrol etmekten daha güçlüdür: farklı bir veri iletim yolunun aynı değerlendirme mumlarını bildirip bildirmediğini sınar. Yine de aynı borsaya dayalı bir çapraz kontroldür; bağımsız fiyat denetimi değildir ve bir emrin OHLC değerlerinden işlem görebileceğini kanıtlamaz. Isınma ve geliştirme geçmişi, 731 mumluk bu API karşılaştırmasının kapsamı dışındadır.
Araştırma verisini yüklerken zaman sürekliliğini, yinelenen tarihleri, sonlu ve pozitif fiyatları ve OHLC tutarlılığını kontrol ettik. Yeniden üretilebilen hatalı bir seri yine hatalıdır; kaynak kartı ile burada açıklanan doğrulama yöntemi, kalan belirsizliği görünür kılar. Sunumu güçlendirmek için uzman incelemesi veya ikinci bir bağımsız veri akışı uydurmuyoruz.
Kapanışta oluşan sinyal, önceki açılıştan alım yapamaz
Referans döngü önce dünden bekleyen emri bugünün açılışında gerçekleştirir; ardından pozisyonu bugünün tamamlanmış kapanışıyla değerler ve bugünün bir sonraki talimatını hesaplar. Giriş ve çıkış kanalları yalnızca önceki mumları içerir. Bugünün en yüksek fiyatını giriş kanalına katmak, geçerli OHLC verisinde kapanışın kanalın kesin olarak üzerine çıktığı bir kırılımı imkânsız hale getirir. Bilginin ne zaman kullanılabilir olduğunu sınamak için geleceği görme hatası araştırmamıza bakın.
entry_level = max(b.high for b in bars[i-55:i])
exit_level = min(b.low for b in bars[i-20:i])
# Evaluate only after today's completed close.
if quantity == 0 and bar.close > entry_level:
pending = ("buy", bar.date)
elif quantity > 0 and bar.close < exit_level:
pending = ("sell", bar.date)
# Execute pending on the next bar; never at this bar's earlier open.Gerçekleşme anında, nakit tahsisli referans q = 0.9 × nakit / [gerçekleşme fiyatı × (1 + komisyon oranı)] kadar alır. Aracı kurum veya simülatör, fiyat bilindiğinde bu miktarı hesaplayabilir. Önceki kapanışta açık miktarla gönderilen bir Pine emri ise o anda mevcut bilgiyi kullanmalıdır. Alternatif modelimiz miktarı sinyal kapanışıyla sabitler; sonraki fiyatla karşılanamayan emri, nakit yaratmak veya miktarı sessizce küçültmek yerine reddeder.
Yapay bir fiyat boşluğu farkı açıkça gösterir: 10,000 USDT nakit, 100 sinyal kapanışı, 110 sonraki açılış, sıfır maliyet ve 90% tahsiste, gerçekleşme anında miktar belirleyen model 81.818182 birim alır ve 1,000 nakit bırakır. Sinyal anında miktar belirleyen model 90 birim ister, 9,900 harcar ve 100 bırakır. Her iki hesap da gerçekleşme anında 10,000 özsermayeye sahiptir; bundan sonraki piyasa riskleri farklıdır. Bu aritmetik örnek açıklama amaçlıdır ve ölçülen Bitcoin geçmişinden ayrıdır.
Getirileri karşılaştırmadan önce Pine’ın kurallarını açıkça yazın
Burada ele alınan Pine v6 tasarımı, tamamlanmış günlük mumları, önceki mumlardan hesaplanan kanalları, sinyal anında açıkça belirlenen miktarı, yüzdesel komisyonları ve yerel kayma ayarında beş tick kullanır. Bağımsız bir karşılaştırmada standart BTCUSDT spot günlük mum grafiği, sabit tanımdaki tarih aralığı, yeterli geçmiş veri ve belirtilen ayarlar kullanılmalıdır. Bu araştırmada TradingView derlemesi veya Strategy Tester doğrulaması yapılmadı.
İki birim kolayca karıştırılır: beş baz puan, fiyatın 0.05% kadarıdır; her biri 0.01 USDT olan beş tick ise 0.05 USDT’dir. Varsayımsal 100,000-USDT Bitcoin fiyatında bunlar sırasıyla 50 USDT ve 0.05 USDT olumsuz fiyat düzeltmesi anlamına gelir. Tick sayısı yüzde değildir. Pine’ın yerleşik slippage ayarı tick kabul eder; açıkça belirtilen giriş qty değeri de varsayılan yüzdesel miktar ayarının önüne geçer. [1]
Python’daki signal-qty-ticks modeli, belirtilen Pine kuralları için bir uzlaştırma hedefidir; TradingView’in eksiksiz kopyası değildir. Veri akışı güncellemeleri, asgari sözleşme adımları, miktar yuvarlaması, ödeme gücü ve teminat kuralları yine farklı olabilir. Referans model, borsanın lot filtreleri olmadan kesirli birimlere izin verir; simüle edilen bu miktarlar, canlı emirlerin borsa kurallarına uygun olduğu iddiasını taşımaz.
calc_on_every_tick ve calc_on_order_fills ayarlarını belirtilen varsayılan değerlerde tutun; process_orders_on_close devre dışı olsun. Hesaplama veya emir işleme kuralını değiştirmek deneyi değiştirir. Pine’ın yürütme modeli tarihsel güncellemelerle gerçek zamanlı güncellemeleri ayırır; bu nedenle tamamlanmış mumlarda eşdeğer görünen bir strateji, mum henüz oluşurken farklı davranabilir. [2]
Referans para kazandı, fakat getiri karşılaştırmasını geçemedi
1 Ocak 2024 ile 31 Aralık 2025 arasındaki 731 değerlendirme gününde referans hesap, 10,000 USDT’yi 12,445.81 USDT’ye çıkardı: varsayılan değişken maliyetlerden sonra +24.46%. Karşılaştırılabilir başlangıç tahsisli al ve tut hesabı +96.28% getirdi. Bunlar belirtilen aralığın birikimli getirileridir; yıllıklandırılmış rakamlar değildir.
| Dönem | Gün | Brüt strateji | Net strateji | 90% al ve tut | Kapanmış işlem |
|---|---|---|---|---|---|
| 2021–2022 geliştirme | 730 | +22.64% | +21.32% | -38.60% | 4 |
| 2023 doğrulama | 365 | +17.97% | +16.55% | +139.71% | 4 |
| 2024–2025 değerlendirme | 731 | +26.50% | +24.46% | +96.28% | 6 |
Stratejinin günlük kapanışlarla ölçülen azami düşüşü 20.04%, al ve tut hesabınınki 30.86% oldu. Piyasaya yatırılmış değerin özsermayeye ortalama oranı 37.59% idi; 731 kapanışın 300 tanesinde pozisyon vardı. Toplam işlem tutarının başlangıç özsermayesine oranı 12.96 kattı; bu devir ölçüsü, gidiş-dönüş işlem sayısı yerine hem alımları hem satışları sayar.
Al ve tut hesabı ilk tahsisi dönem boyunca korurken kırılım stratejisi nakit ile Bitcoin arasında geçiş yapar. Daha yüksek düşüşle birlikte gelen daha yüksek getiri, risk düzeltilmiş tam bir sıralama sağlamaz. Somut sonuç daha dardır: kırılım hesabı, belirlenen birikimli getiri karşılaştırmasını geçemedi. Günlük kapanıştan hesaplanan düşüş, gün içinde gerçekleşip toparlanan kayıpları da kapsamaz.
Zarar eden bir işlemi emirden nakit bakiyesine kadar denetleyin
Değerlendirme döneminin zarar eden ilk kapanmış işlemi, 2024-01-02 tarihli sinyalin ardından 2024-01-03 tarihinde açıldı; 2024-01-22 tarihli sinyalin ardından 2024-01-23 tarihinde kapandı. Miktar 0.19993623 BTC idi. Kayıtlar, ham referans fiyatını olumsuz kaymayla düzeltilmiş gerçekleşmeden ayrı tutar; aşağıdaki tablo simülasyonda kullanılan gerçek gerçekleşme fiyatlarını gösterir.
Giriş işlem tutarı 8,991.01 USDT, giriş komisyonu 8.99 idi. Nakit 10,000.00 düzeyinden 1,000.00 düzeyine indi. Çıkışta gerçekleşme fiyatlarıyla hesaplanan kâr/zarar -1,083.88 oldu; iki komisyon çıkarıldığında net sonuç -1,100.78 USDT’dir. Dönem sonu nakdi 8,899.22 oldu. Gösterilen tutarlar toplandığında oluşabilecek küçük farklar yuvarlamadan kaynaklanır; araştırma hesaplamaları tam hassasiyeti korur.
| Kayıt öğesi | Değer |
|---|---|
| Giriş gerçekleşmesi | 44,969.38 |
| BTC miktarı | 0.19993623 |
| Giriş komisyonu | 8.99 |
| Giriş sonrası nakit | 1,000.00 |
| Çıkış gerçekleşmesi | 39,548.24 |
| Çıkış komisyonu | 7.91 |
| Komisyon öncesi gerçekleşme fiyatı kâr/zararı | -1,083.88 |
| Kapanmış işlem net kâr/zararı | -1,100.78 |
| Çıkış sonrası nakit | 8,899.22 |
Kayma, giriş ve çıkış gerçekleşme fiyatlarını zaten değiştirmiştir. Gösterilen kayma farkını gerçekleşme fiyatlarından hesaplanan kâr/zarardan tekrar çıkarmak, aynı maliyeti iki kez sayar. Bu kayıtlarda “brüt işlem kârı”, komisyon öncesi fakat gerçekleşme fiyatına gömülü kayma sonrası sonucu belirtir; ayrı brüt strateji çalıştırması hem komisyonu hem kaymayı kaldırır. Bu etiketler farklı hesaplamaları tanımlar.
Kapanmış işlem kârı ile hesap özsermayesi farklı soruları yanıtlar
Değerlendirme dönemi pozisyonsuz biter; dolayısıyla altı kapanmış işlem, hesap kârının tamamını açıklar. 2023 doğrulama hesabı daha öğretici bir örnektir: kapanmış işlemler 669.03 USDT kaybederken kalan 0.25356187 BTC, ödenmiş giriş komisyonu düşüldükten sonra 2,323.63 açık pozisyon kârı taşıyordu. Toplam hesap kârı bu nedenle 1,654.60 USDT, yani +16.55% oldu. Kapanış nakdi yalnızca 933.10 idi; eldeki Bitcoin, 11,654.60 hesap değerinin geri kalanını oluşturuyordu.
Uzlaştırma eşitliği şöyledir: başlangıç özsermayesi + kapanmış net kâr/zarar + açık pozisyonun piyasa değeriyle hesaplanan kâr/zararı = nakit + piyasa değeriyle eldeki varlıklar = dönem sonu özsermayesi. Her çalıştırmada bunu tam hassasiyetle kontrol ediyoruz. Bir platformun kapanmış işlem istatistiği ile toplam hesap getirisi, ikisi de aritmetik olarak doğruyken farklı olabilir. Bu ayrılığı hata saymadan önce aynı büyüklükleri karşılaştırın.
Son kapanışta zorunlu satış yapmak başka bir soruyu yanıtlar; ek satış komisyonu ve olumsuz gerçekleşme maliyeti doğurur. Gerçekleşmiş ve gerçekleşmemiş sonuçlar arasında sessizce geçiş yapmak yerine, açık pozisyonu piyasa değeriyle koruyor ve kullanılan kuralı açıklıyoruz.
Bu mumlarda hangi gerçekleşme farkı önem taşıyor?
Yalnızca miktar hesabını gerçekleşme anında nakit tahsisinden sabit sinyal kapanışı miktarına geçirmek, değerlendirme getirisini +0.0099 yüzde puan değiştirir. Bu miktar modelinde beş baz puan yerine beş tick kullanmak getiriyi +0.6651 puan, yani 66.507521 USDT değiştirir. Aynı kapanışta gerçekleşme ise referansın dönem sonu bakiyesini yalnızca +0.002848 USDT değiştirir. Bunlar Python’da ölçülen kural etkileridir; gözlemlenmiş TradingView uyuşmazlıkları değildir.
Bitcoin sürekli işlem gördüğünden bu örneklemde birbirini izleyen günlük kapanışlar ve açılışlar çok yakın olabilir. Buradaki küçük zamanlama etkisi; başka bir piyasa, likit olmayan bir aralık veya gecikmeli canlı uygulama için önceki kapanıştan gerçekleşmeyi geçerli kılmaz. Yapay fiyat boşluğu örneği, aynı programlama tercihinin başka fiyat yollarında neden çok daha önemli olabileceğini gösterir.
Uygulamaları uzlaştırırken özsermaye eğrilerinden önce gerçekleşme kayıtlarını karşılaştırın. İlk farklı miktarı veya fiyatı bulun, ardından nakit üzerindeki etkisini ileri doğru izleyin. Farklar birikir: sonraki tahsisler önceki nakde bağlıdır. Benzer dönem sonu getirileri, işlem mekaniklerinin eşleştiğini kanıtlamaz.
Maliyetleri ve olağanüstü işlemlere bağımlılığı sınayın
Referans 12 gerçekleşmede 129.58 USDT komisyon ödedi. Maliyet tablosu, her yöndeki komisyonu 10 bp düzeyinde tutup olumsuz fiyat düzeltmesini değiştirir. Burada sıfır fiyat düzeltmesi, sıfır maliyetli hesap anlamına gelmez; önceki tablodaki brüt strateji satırı, komisyonsuz ve kaymasız ayrı hesaplamadır. Varsayımlar, tarihsel alış-satış farkını tahmin etmek yerine spread ile gerçekleşme kaybını tek bir olumsuz fiyat düzeltmesinde birleştirir. Daha geniş maliyet sınıfları için işlem maliyeti analizimize bakın.
| Her yönde komisyon | Her yönde olumsuz düzeltme | Net getiri | Günlük kapanış azami düşüşü |
|---|---|---|---|
| 10 bp | 0 bp | +25.13% | 19.79% |
| 10 bp | 5 bp | +24.46% | 20.04% |
| 10 bp | 10 bp | +23.79% | 20.30% |
| 10 bp | 20 bp | +22.45% | 20.80% |
Kapanmış işlemlerde ortalama net kâr/zarar 407.63 USDT idi. Ortalama kazanan işlem 1,748.18, ortalama kaybeden işlem -932.91; kapanmış işlem kâr faktörü 1.87, kazanan işlem oranı 50.00% oldu. Parasal ortalamalar, zamanla değişen hesap büyüklüğüne bağlıdır. Bunlar bir sonraki işleme ilişkin sabit tahminler değil, bu kayıtların betimleyici özetleridir.
En büyük üç kapanmış işlem 5,244.53 USDT katkı yaptı. Bu katkılar toplam hesap kâr/zararından çıkarılınca -2,798.72 kalır. Bu aritmetik, yoğunlaşmayı sınar; işlemlerin atlandığı ve sonraki miktarların yeniden hesaplandığı bir tekrar değildir. Yıllık getiriler de yolu gösterir: 2024 +38.44%; 2025 -10.10%. Takvim getirileri, her yıl yeniden başlatılan hesaplardan değil, kesintisiz değerlendirme hesabından gelir.
Elenen seçenekleri okuyucunun görebileceği yerde tutun
Dokuz birleşim belirledik: 35, 55 ve 80 giriş sürelerinin her biri için 10, 20 ve 30 çıkış süreleri. Tablo, maliyet sonrası geliştirme sonuçlarının tamamını verir. Sıralamasından bağımsız olarak 55/20 kuralını koruyoruz; böylece karşılaştırma sessizce en çekici gerçekleşme başlığını aramaya dönüşmüyor.
| Giriş süresi | Çıkış 10 | Çıkış 20 | Çıkış 30 |
|---|---|---|---|
| 35 | +4.00% | +10.03% | -9.22% |
| 55 | +14.61% | +21.32% | +17.48% |
| 80 | +9.12% | +15.55% | +11.89% |
Dokuz hücrenin sekizi pozitif, ancak getiriler −9.22% ile +21.32% arasında değişiyor; 35/30 birleşimi kaybediyor ve çıkış ayarları sonucu önemli ölçüde değiştiriyor. Korunan 55/20 kuralı aynı zamanda ilk sırada. Seçim kaydı bu çalıştırmadan önce yazıldı; fakat önceki makale sayesinde kuralı zaten tanıyorduk: bu örtüşme bağımsız doğrulama değildir. Ortak piyasa geçmişi bu sonuçları ilişkili kılar; ne veri bölmek ne de parametre tablosu ön bilgiyi siler. Bailey ve çalışma arkadaşları backtest seçiminin nasıl aşırı uyuma yol açabileceğini inceler; bizim tablomuz onların resmî backtest aşırı uyum olasılığı tahmincisi değildir. [5]
İki ileri yürüyen bölüm, yalnızca önceki veriyi kullanan kayıtlı bir seçim sürecini sınar: eğitim getirisi en iyi olan dokuz seçenekten birini seçip sonraki yılı değerlendirin. Test bölümleri 2022 ve 2023’tür; seçimde 2024–2025 hiç kullanılmaz. Bu bölümler tanı amaçlı uzantılardır; son hesap için ek, daha önce görülmemiş kanıt değildir.
Bir seçim süreci, bir sonraki dönemde de sınanmalıdır
Her bölüm 10,000 USDT ile yeniden başlar, göstergeleri önceki mumlarla ısıtır ve seçilen parametreleri ek değişiklik yapmadan uygular. Elverişli bir eğitim sırası, adayı sınamayı gerekçelendirebilir; test sonucunun yerine geçmez.
| Eğitim dönemi | Sonraki test yılı | Seçilen giriş/çıkış | Test net getirisi |
|---|---|---|---|
| 2021-01-01–2021-12-31 | 2022 | 35/20 | -30.54% |
| 2021-01-01–2022-12-31 | 2023 | 55/20 | +16.55% |
Hem seçilen parametreleri hem sonraki getiriyi koruyoruz. Sonraki dönem zarar ederse bu başarısızlık raporda kalır. Makale kazanan bir sonuç verene kadar yeni filtreler eklemiyor, temel kuralı yeniden ayarlamıyor veya son dönemi tekrar tekrar açmıyoruz.
Monte Carlo yolları sıralamayı değiştirir, kanıt miktarını değil
Referans hesabın gözlemlenen 731 günlük net özsermaye getirisini, serinin sonunda başa dönen 20 günlük kesintisiz dairesel bloklarla yeniden örnekliyoruz. Her simülasyon yolu aynı sayıda gün içerir ve aynı sermayeyle başlar. Sabit tohum 6142026’dır; 5,000 yol hesaplamayı yeniden üretilebilir kılar. Bloklar, günleri tek tek karıştırmanın aksine, yerel zamansal bağımlılığın bir kısmını korur. Blok uzunluğu açık bir modelleme tercihidir; tahmin edilmiş optimum değildir. [6]
Simülasyonun ortanca birikimli getirisi +20.98%, 5. ve 95. yüzdelikleri -38.34% ve +166.29% oldu. Ortanca azami düşüş 30.22%, 95. yüzdelik 50.12% idi. Zarar eden simülasyon yollarının oranı 32.28% çıktı. Bunlar koşula bağlı yol özetleridir; gelecekte zarar etmenin kalibre edilmiş olasılığı veya alfa için bir güven aralığı değildir.
Hesap getirilerini yeniden örneklemek yeni mumlar üretmez, kırılım kararlarını yeniden çalıştırmaz, yeni likidite koşullarını modellemez veya eksik krizleri geri getirmez. Burada karşılaştırma hesabına göre getirileri bootstrap etmiyoruz. Daha fazla simülasyon yolu, seçilen yöntemdeki Monte Carlo gürültüsünü azaltır; temel tarihsel kanıt aynı 731 gün ve aynı işlem dizisi olarak kalır.
Her aşamada asistana sınanabilir bir görev verin
ChatGPT ve Claude, kuralı açıklaştırmaya, muhasebe farkını açıklamaya ve raporu sorgulamaya yardımcı olabilir. Codex ve Claude Code bir depoyu inceleyebilir, dosyalarını düzenleyebilir ve geliştirme komutlarını çalıştırabilir. Belgelenen bu yetenekler iş akışını destekler; kârlı bir işlem algoritmasını kanıtlamaz. Bu araştırmada depo geliştirme için Codex, hesaplamalar için Python kullanıldı. Kontrollü bir ChatGPT–Claude deneyi yürütmedik veya işlem sinyallerini tahmin etmek için bu asistanları kullanmadık. [7] [8]
Önce bilginin hangi anda kullanılabilir olduğunu belirleyin. Asistan, uygulamadan önce çözülmemiş ayrıntıları ortaya çıkarmalıdır: katı veya eşitlik içeren karşılaştırma, önceki mum pencereleri, emir zamanı, nakit bütçesi, yuvarlama ve dönem sonu varlıkları. İlk istem yeniden kullanılabilir bir görev tanımıdır; model karşılaştırma deneyi kaydettiğimiz iddiası değildir.
Bu işlem fikrini kod yazmadan önce çalıştırılabilir bir tanıma dönüştür. Ekonomik hipotezi; giriş ve çıkışı; her girdinin kullandığı mumları; sinyalin kullanılabilir olma anını; emir ve gerçekleşme zamanını; miktar ve nakit sınırlarını; maliyetleri; saat dilimini; dönem sonu değerlemesini; kronolojik dönemleri; karşılaştırma hesabını ve karar ölçütlerini belirt. Çözülmemiş tercihleri listele. Tarihsel sonuçları iyileştirdiği için kural seçme.Ardından uygulamayı sınırlandırın. Bir durum makinesi ve test örnekleri isteyin; hata düzeltme talebinin içine gizlenmiş strateji optimizasyonuna izin vermeyin. Yararlı bir gelecek veri testi, t tarihinden sonraki fiyatları değiştirip önceki hiçbir kararın veya gerçekleşmenin değişmediğini kontrol eder. Yararlı bir muhasebe testi, son işlem açık kalsa bile nakdi, eldeki varlıkları ve komisyonları uzlaştırır.
Ekli dondurulmuş tanımı aynen uygula. Sinyalleri, emir oluşturmayı, gerçekleşmeleri, nakit muhasebesini ve raporlamayı ayır. Filtre ekleme veya parametre optimizasyonu yapma. Mevcut mumun dışlanması, sonraki açılış zamanlaması, komisyon dahil miktar, nakitle karşılanamayan emir ve açık son pozisyon için yapay test örnekleri kullan. Her kuralın hangi kod ve testle karşılandığını göster.Hata ayıklarken ilk ayrışan satırdan başlayın. Raporlamada, dosyalardan türetilmiş rakamlar ve çalıştırılmamış bileşenler için açık durum etiketleri isteyin. Piyasa verisi gözlemleri sağlar, çalıştırılabilir kod hesaplamayı yapar; hangi varsayımlara ve karşılaştırmalara güvenileceğine araştırmacı karar verir.
Bu iki standartlaştırılmış kaydı zaman sırasıyla karşılaştır. Girdi mumu, sinyal, istenen miktar, gerçekleşme fiyatı, komisyon, pozisyon veya özsermayedeki en erken farkı bul. Kaydedilen ayarlar ve satır değerleriyle açıkla. Başlangıç özsermayesi ile kapanmış ve açık kâr/zararı dönem sonu özsermayesine uzlaştır. Stratejiyi yeniden ayarlama veya yalnızca son getiriden hata çıkarımı yapma.Raporu yalnızca sağlanan yapılandırma, veri manifestosu ve çalıştırılmış sonuç dosyalarından üret. Sınanan tüm seçenekleri, dönem sınırlarını, brüt ve net getirileri, karşılaştırma hesabını, zirveden düşüşü, yatırılmış oranı, işlem devrini, kâr yoğunlaşmasını ve açık pozisyon muhasebesini ekle. Her tabloyu kaynak dosyasına bağla. Çalıştırılmamış kodu ve yapılamayan kontrolleri açıkça işaretle. Olumsuz sonuçları koru; inceleme veya model karşılaştırması uydurma.Gerçek TradingView çalıştırmanızı nasıl kontrol edersiniz?
Kendi Pine ve Python uygulamalarınızı karşılaştırmak için aynı sembol ve dönemin standart günlük mum grafiğini kullanın; Pine kaynak kodunu, ayarları, grafik veri akışını ve dışa aktarılmış işlemleri saklayın. Sinyalleri ayırırken sıfır maliyetle başlayın; ardından her iki motora komisyonları ve aynı tick tabanlı kaymayı ekleyin. Hesap getirilerinden önce sinyal tarihlerini ve işlemleri karşılaştırın. Lot adımları veya veri geçmişi farklarını yuvarlayarak gizlemek yerine uyuşmazlık olarak kaydedin.
İki gerçekleşme kaydını ortak bir şemaya dönüştürün: zaman damgası, yön, istenen miktar, referans fiyatı, gerçekleşme fiyatı, komisyon, oluşan pozisyon, nakit ve özsermaye. Her dışa aktarma alanını saat dilimi, birimi ve yuvarlamasıyla açıkça eşleyin. Burada açıklanan sinyal anındaki miktarı ve tick maliyetini kullanan Python kuralını karşılaştırma hedefi yapın. Bu bir tanı yöntemidir; yerelleştirilmiş bütün Strategy Tester çıktılarının aynı biçimde olduğu iddiası değildir. Dışa aktarılmış bir Pine çalıştırması olmadan motorlar arası sonuç doğrulanmamış kalır.
Bu sıra, kârlı bir backtestin canlıda neden zarar edebileceğini de açıklar: canlı sistem farklı mumlar alabilir, emri daha geç oluşturabilir, daha az miktar gerçekleştirebilir veya farklı bir spread ödeyebilir. Bu kayıtlar uzlaştığında geriye kalan performans sorunu, gerçekleşme varsayımlarını sürekli değiştirmek için bir gerekçe değil, strateji ve piyasa hakkında bir soru haline gelir.
Eşleşen backtest getirilerine güvenmeden önce
- Enstrümanı, veri akışını, UTC mum sınırlarını, tarih aralığını ve gösterge ısınmasını eşleştirin.
- Kesin emir zamanını, miktar formülünü, tick büyüklüğünü, komisyonu ve nakit yeterliliği kuralını kaydedin.
- Son bakiyeyi karşılaştırmadan önce ilk ayrışan gerçekleşmeyi karşılaştırın.
- Kapanmış kârı, açık varlıkları, komisyonları, nakdi ve piyasa değeriyle hesaplanan özsermayeyi uzlaştırın.
- Belirlenen her seçeneği koruyun; yeniden kullanılan geçmişi yeni ileriye dönük kanıttan ayırın.
- Bir sonraki ileri testi dondurun; sinyalleri, gönderilen emirleri ve teyit edilmiş gerçekleşmeleri saklayın.
Pratik sorular
Python ve Pine Script backtestleri neden farklı çıkar?
Programlama dili tek başına nadiren yeterli açıklamadır. Veri, sinyalin kullanılabilir olduğu an, emir zamanı, miktar, maliyetler ve hesap tanımları sonucu belirler. Bu araştırma bu kuralları Python’da açıkça değiştirir; ayrı ayrı dışa aktarılmış kayıtlar için Pine karşılaştırma yöntemini açıklar.
ChatGPT veya Claude kârlı bir işlem botu geliştirebilir mi?
Kodu geliştirmeye ve incelemeye yardımcı olabilirler. Referansımız belirtilen tarihsel dönemde varsayılan değişken maliyetlerden sonra +24.46% üretti; fakat bu, asistanlardan birinin yatırım avantajı sağladığını göstermez. Karşılaştırmalı yapay zekâ yatırım deneyi veya canlı kârlılık testi yapılmadı.
Bir stratejinin avantajı olup olmadığını nasıl anlarım?
Önce kodun amaçlanan bilgi ve muhasebe kurallarını uyguladığını belirleyin. Ardından dondurulmuş seçim sürecini uygun bir karşılaştırma hesabına, gerçekçi maliyetlere ve daha sonraki gözlemlere göre değerlendirin. Kâr yoğunlaşması, önceki araştırma tercihleri ve gerçekleşme değişiklikleri yorumu etkiler; tek pozitif backtest bunları çözemez.
İşlem stratejilerinde aşırı uyumu nasıl önlerim?
Her denemeyi kaydedin, isteğe bağlı değişiklikleri sınırlayın, kronolojik seçim ile değerlendirmeyi ayırın ve kaybeden seçenekleri koruyun. Buradaki dokuz hücreli tablo ve iki ileri yürüyen bölüm duyarlılığı görünür kılar; kalan kuralın dayanıklı olduğunu belgelemez veya önceki çalışmadan gelen bilgiyi silmez.
Monte Carlo simülasyonu işlem avantajını kanıtlar mı?
Hayır. Bu blok bootstrap, gözlemlenen günlük net hesap getirilerini açık bir bağımlılık varsayımı altında yeniden düzenler. Yollar, koşullu düşüş ve getiri duyarlılığını incelemeye yardımcı olur. Yeni tarihsel veri oluşturmaz, yeni piyasa rejimleri üretmez veya tahmin değeri kanıtlamaz.
Pine Script stratejisi Python’a karşı doğrulandı mı?
Hayır. Python hesaplamaları ve testleri çalıştırıldı. Sinyal anında miktar ve sabit tick kayması kullanan Pine örneği TradingView üzerinde derlenmedi veya çalıştırılmadı. Gerçek dışa aktarma kayıtlarının hâlâ belirtilen Python hedefiyle karşılaştırılması gerekir.
Kaynaklar ve yöntem
Tablolar ve grafikler, aşağıdaki kaynakların bulguları değil, atıf yapılan girdilerden çalıştırdığımız hesaplamalardır. Araştırma sürecimiz; tanımı, hesaplama öncesi değişiklikleri, kaynak özetlerini, API çapraz kontrollerini, testleri ve sinyalden özsermayeye muhasebeyi kaydetti. Makale, savı değerlendirmek için gerekli varsayımları ve ölçülen sonuçları sunar. Dış belgeler platform davranışı ve yöntemleri destekler; stratejiyi onaylamaz. Bağımsız uzman incelemesi iddia edilmiyor.
- TradingView: Pine Script stratejileri ve aracı kurum emülatörü
- TradingView: Pine Script yürütme modeli
- humblefool06: BTC-USDT dört saatlik veri seti ve kaynak kartı
- Binance: herkese açık spot mum verisi belgeleri
- Bailey ve diğerleri: Backtest Aşırı Uyum Olasılığı
- Politis ve White: Bağımlı Bootstrap için Otomatik Blok Uzunluğu Seçimi
- OpenAI: kod üretimi ve Codex
- Anthropic: Claude Code genel bakış
- Creative Commons: Atıf 4.0 koşulları
Modellenen değişken maliyetlerle yapılan geriye dönük eğitsel araştırmadır. Vergiler ve sabit işletme maliyetleri hariçtir. Canlı işlem, TradingView performans çalıştırması veya karşılaştırmalı yapay zekâ yatırım deneyi yapılmadı.