Algoritmik Altın ve Gümüş Ticareti: Pratik Bir Kılavuz
11 dk okuma
Altın ve gümüşte algoritmik ticarete giriş – veri kaynakları, API erişimi, yaygın strateji türleri (ortalama geri dönme, trend takibi, istatistiksel arbitraj) ve altyapı gereksinimleri.
Temel fikir: Altın ve gümüş için algoritmik ticaret stratejileri geliştirme ve dağıtmanın ilk adımlarını basitleştirmek, veri, bağlantı ve temel strateji kavramları gibi temel bileşenlere odaklanmak.
Giriş: Değerli Metallerde Algoritmik Avantaj
Değerli metaller piyasaları, özellikle altın ve gümüş, değer saklama özellikleri ve enflasyona karşı korunma rolü nedeniyle yatırımcılar için uzun zamandır cazip olmuştur. Geleneksel temel ve teknik analiz hala geçerli olsa da, gelişmiş teknolojinin ortaya çıkışı piyasa katılımı için yeni yollar açmıştır. Önceden tanımlanmış kurallara dayalı olarak işlemleri yürütmek için hesaplama gücünden yararlanan algoritmik ticaret, sistematik, veri odaklı ve genellikle daha hızlı bir yaklaşım sunar. Bu kılavuz, değerli metaller piyasaları ve ticaret ilkeleri hakkında sağlam bir anlayışa sahip bireyler için altın ve gümüş için algoritmik ticaret yeteneklerini geçiş yapmayı veya geliştirmeyi amaçlayan temel bir yol haritası sunmaktadır.
Son derece likit, 7/24 kripto para piyasalarının aksine, altın ve gümüş küresel ekonomik duyarlılık, merkez bankası politikaları ve fiziksel piyasa dinamiklerinden etkilenen farklı ticaret modelleri sergiler. Bu nüansları anlamak, algoritmalar tasarlarken çok önemlidir. Amaç, verimsizliklerden yararlanmak, geçici fırsatları yakalamak ve manuel ticaretle ulaşılamayan bir hassasiyet ve hız seviyesiyle riski yönetmektir. Bu, veri alımı, güvenilir bağlantı, sağlam strateji geliştirme ve gerekli teknolojik altyapının dikkatli bir şekilde değerlendirilmesini içerir.
Veri Edinimi ve API Erişimi: Algoritmaların Can Damarı
Herhangi bir algoritmik ticaret stratejisinin etkinliği, tükettiği verinin kalitesine ve zamanlılığına bağlıdır. Altın ve gümüş için bu veri birkaç temel kategoriyi kapsar:
* **Fiyat Verileri:** Gerçek zamanlı ve geçmiş tick verileri, dakika bazlı barlar ve günlük kapanış fiyatları esastır. Bu, spot fiyatları, vadeli işlem sözleşmelerini (örneğin, COMEX Altın Vadeli İşlemleri, COMEX Gümüş Vadeli İşlemleri) ve potansiyel olarak ilgili ETF'lerin veya madencilik hisselerinin fiyatlarını içerir.
* **Sipariş Defteri Verileri (Seviye 2/3):** Daha gelişmiş stratejiler için piyasanın derinliğini, alış-satış farklarını ve emir akışını anlamak çok önemlidir. Bu, anlık arz ve talep hakkında bilgiler sağlar.
* **Temel Veriler:** Ekonomik göstergeler (enflasyon oranları, GSYİH, faiz oranı kararları), jeopolitik olaylar, merkez bankası açıklamaları ve haber duyarlılığı, daha uzun vadeli veya olay odaklı stratejiler için hayati önem taşıyabilir.
* **Korelasyonlu Varlık Verileri:** Diğer büyük para birimlerinin (USD, EUR, JPY), büyük endekslerin (S&P 500, Dow Jones) ve diğer emtiaların (petrol, sanayi metalleri) fiyatları değerli bağlam ve korelasyon içgörüleri sağlayabilir.
Bu verilere güvenilir ve düşük gecikmeyle erişim, Uygulama Programlama Arayüzleri (API'ler) aracılığıyla sağlanır. Değerli metaller ticareti için önemli API sağlayıcıları şunları içerir:
* **Aracı Kurum API'leri:** Değerli metaller ticareti sunan çoğu saygın aracı kurum, piyasa verilerine ve emir yürütmeye doğrudan erişim sağlayan API'ler sunar. Örnekler arasında Interactive Brokers (IBKR API), OANDA ve Saxo Bank bulunur. Bunlar genellikle bireysel ve kurumsal yatırımcılar için en pratik başlangıç noktasıdır.
* **Veri Satıcıları:** Özel finansal veri sağlayıcıları kapsamlı geçmiş ve gerçek zamanlı veri akışları sunar. Bunlar daha pahalı olabilir ancak genellikle daha yüksek kaliteli, daha temiz veri ve daha geniş kapsam sağlar. Örnekler arasında Refinitiv (eski adıyla Thomson Reuters), Bloomberg ve FactSet bulunur. Daha niş veya özel veri kümeleri için Quandl (şimdi Nasdaq Data Link) veya çeşitli özel emtia veri sağlayıcıları gibi sağlayıcıları düşünün.
* **Borsa API'leri:** Bazı borsalar doğrudan API erişimi sunar, ancak bu genellikle karmaşıklık ve maliyet nedeniyle yüksek frekanslı ticaret firmalarına ayrılmıştır.
Bir API seçerken, veri gecikmesi, veri kapsamı (geçmiş derinliği, varlık türleri), güvenilirlik (çalışma süresi), fiyatlandırma yapısı ve seçtiğiniz programlama diliyle (örneğin, Python, C++, R) entegrasyon kolaylığı gibi faktörleri göz önünde bulundurun.
Değerli Metaller İçin Temel Algoritmik Strateji Türleri
Algoritmik stratejiler evreni geniş olsa da, özellikle altın ve gümüş piyasaları için uygun olan birkaç temel tür vardır. Bu stratejiler farklı piyasa özelliklerinden yararlanmayı amaçlar:
1. Ortalama Geri Dönme Stratejileri
Bu stratejiler, fiyatların zamanla tarihsel ortalamalarına veya ortalamalarına geri döneceği varsayımına dayanır. Değerli metallerde bu birkaç şekilde ortaya çıkabilir:
* **Çiftli Ticaret (Pairs Trading):** Birbirine yüksek oranda bağlı iki varlık (örneğin, altın vadeli işlemleri ve bir altın ETF'si veya altın ve gümüş, eğer tarihsel korelasyonları stabil ise) belirleyerek ve sapmayı alıp satarak. İkisi arasındaki fark belirli bir eşiğin üzerine çıktığında, algoritma altında performans gösteren varlığı satın alır ve aşırı performans göstereni satar, bunların yakınlaşmasını bekler.
* **Bollinger Bant Kırılmaları/Tersine Dönüşleri:** Fiyatların aşırı uzamış olabileceği yüksek volatilite dönemlerini belirlemek için Bollinger Bantlarını kullanmak. Algoritma, fiyat üst banda dokunduğunda aşağı doğru bir tersine dönüş bekleyerek kısa pozisyon alabilir ve alt banda dokunduğunda yukarı doğru bir tersine dönüş bekleyerek uzun pozisyon alabilir.
* **Çapraz Piyasa İlişkilerinde İstatistiksel Arbitraj (Stat Arb):** Tarihsel ilişkilerinin istatistiksel modellerine dayanarak spot altın ile altın vadeli işlemleri veya altın ile gümüş gibi ilgili enstrümanlar arasındaki geçici yanlış fiyatlandırmalardan yararlanmak. Bu, çiftli ticaretin daha gelişmiş bir biçimidir.
**Anahtar Hususlar:** Stabil ilişkileri ve uygun eşikleri belirlemek için sağlam istatistiksel analiz gerektirir. Kayma ve işlem maliyetleri, dikkatli yönetilmezse karları aşındırabilir.
2. Trend Takip Stratejileri
Bu stratejiler, yerleşik fiyat trendlerini belirleyerek ve bunlardan yararlanarak kar elde etmeyi amaçlar. Altın ve gümüş, makroekonomik faktörler tarafından yönlendirilen önemli, sürdürülebilir trendler sergileyebilir.
* **Hareketli Ortalama Kesişimleri:** Bir algoritmanın kısa vadeli bir hareketli ortalama uzun vadeli bir hareketli ortalamanın üzerine çıktığında (yükseliş trendini gösterir) alım yaptığı ve tersi olduğunda (düşüş trendini gösterir) satış yaptığı klasik bir örnektir.
* **Kanal Kırılmaları:** Fiyat kanallarını belirleyerek ve fiyat kanalın dışına çıktığında, yeni bir trendin potansiyel başlangıcını işaret ederek işlemlere girmek.
* **Momentum Göstergeleri:** Bir trendin gücünü ve yönünü doğrulamak için Göreceli Güç Endeksi (RSI) veya MACD gibi göstergeleri kullanmak.
**Anahtar Hususlar:** Dalgalı veya yatay piyasalarda ani kayıplara (whipsaws) eğilimlidir. Doğrulama için dikkatli parametre ayarlaması ve potansiyel olarak birden fazla gösterge gerektirir.
3. Olay Odaklı Stratejiler
Bu stratejiler, belirli ekonomik olaylar veya haber duyurularıyla ilişkili öngörülebilir fiyat hareketlerinden yararlanır.
* **Faiz Oranı Kararları:** Altının faiz getirili varlıklara alternatif olarak cazibesindeki potansiyel kaymaları öngörerek, Federal Rezerv veya ECB duyurularına tepki vermek üzere algoritmalar tasarlanabilir.
* **Enflasyon Veri Yayınları:** Beklenenden yüksek enflasyon genellikle altına olan talebi artırır. Algoritmalar, TÜFE/ÜFE yayınlarını izlemek ve buna göre işlemler yürütmek üzere programlanabilir.
* **Jeopolitik Haberler:** Büyük jeopolitik olaylar altına güvenli liman talebini tetikleyebilir. Haber akışlarının duyarlılık analizi bu tür stratejilere entegre edilebilir.
**Anahtar Hususlar:** Hızlı haber ayrıştırma yetenekleri ve belirli olayların değerli metalleri tipik olarak nasıl etkilediğine dair sağlam bir anlayış gerektirir. Duyuru zamanları etrafında yüksek volatiliteye eğilimli olabilir.
**İlgili Makale:** Sistem yapısı hakkında daha derinlemesine bilgi için 'Değerli Metaller Ticaret Sistemi Oluşturma' bölümüne bakınız.
Altyapı Gereksinimleri: Ticaret Motorunuzu Oluşturma
Altın ve gümüş için algoritmik ticaret stratejilerini dağıtmak ve çalıştırmak, sağlam ve güvenilir bir teknolojik altyapı gerektirir. Belirli gereksinimler, stratejinin karmaşıklığına, gecikme hassasiyetine ve ticaret hacmine göre değişiklik gösterecektir, ancak temel bir kurulum tipik olarak şunları içerir:
* **Aracı Kurum Tarafından Sağlanan Platformlar:** Bazı aracı kurumlar, algoritmik strateji dağıtımına izin veren, genellikle kendi API'lerine sahip entegre platformlar sunar.
* **Özel Yapım Sistemler:** Maksimum kontrol ve esneklik için, yatırımcılar genellikle Python (zipline, backtrader, pyalgotrade gibi kütüphanelerle), C++ veya Java gibi programlama dillerini kullanarak kendi ticaret motorlarını oluştururlar.
* **Bulut Tabanlı Çözümler:** AWS, Google Cloud veya Azure gibi bulut sağlayıcılarından yararlanmak ölçeklenebilirlik, güvenilirlik ve coğrafi dağıtım sunar. Sanal Özel Sunucular (VPS), ticaret botlarını barındırmak için yaygın bir seçenektir.
* **Düşük Gecikmeli Bağlantı:** Hızlı yürütme gerektiren stratejiler için gecikmeyi en aza indirmek kritiktir. Bu şunları içerir:
* **Yüksek Hızlı İnternet:** Kararlı, yüksek bant genişliğine sahip bir internet bağlantısı ön koşuldur.
* **Yakınlık Barındırma (Colocation):** Kurumsal düzeyde Yüksek Frekanslı Ticaret (HFT) için, sunucuları borsa eşleştirme motorlarıyla aynı veri merkezlerinde bulundurmak esastır. Bireysel yatırımcılar için, aracı kurum sunucularına coğrafi olarak yakın bir VPS seçmek marjinal bir avantaj sağlayabilir.
* **Veri Depolama ve Yönetimi:** Geçmiş ve gerçek zamanlı verileri depolamak ve verimli bir şekilde sorgulamak, geriye dönük test, analiz ve canlı ticaret için hayati önem taşır. Bu şunları içerebilir:
* **Veritabanları:** İlişkisel veritabanları (örneğin, PostgreSQL, MySQL) veya zaman serisi veritabanları (örneğin, InfluxDB, TimescaleDB) yaygın olarak kullanılır.
* **Veri Ambarı:** Daha büyük veri kümeleri ve karmaşık analitik sorgular için.
* **Geriye Dönük Test ve Simülasyon Ortamı:** Herhangi bir algoritmayı gerçek sermaye ile dağıtmadan önce, geçmiş veriler üzerinde titiz geriye dönük testler vazgeçilmezdir. Bu, işlem maliyetlerini, kaymayı ve emir yürütmeyi doğru bir şekilde modelleyen sağlam bir simülasyon motoru gerektirir. Python'daki zipline veya backtrader gibi araçlar bu amaçla mükemmeldir. Yürüyen ileri optimizasyon (walk-forward optimization) yeteneği de aşırı uyumu önlemek için önemlidir.
* **Risk Yönetimi Modülü:** Herhangi bir algoritmik ticaret sisteminin kritik bir bileşeni. Bu modül, pozisyonları otomatik olarak izlemeli, maruziyeti hesaplamalı, zarar durdurmaları ayarlamalı ve felaket kayıplarını önlemek için pozisyon büyüklüğü kurallarını uygulamalıdır.
* **İzleme ve Uyarı Sistemi:** Algoritma performansı, sistem sağlığı ve kar/zarar (P&L) hakkında gerçek zamanlı izleme esastır. Kritik olaylar (örneğin, sistem arızaları, beklenmedik fiyat hareketleri, marj çağrıları) için otomatik uyarılar, zamanında müdahale etmek için gereklidir.
* **Geliştirme ve Test Araçları:** Entegre Geliştirme Ortamları (IDE'ler), sürüm kontrol sistemleri (örneğin, Git) ve otomatik test çerçeveleri, verimli geliştirme ve bakım için kritiktir.
Yinelemeli Süreç: Fikirden Dağıtıma
Altın ve gümüş için başarılı algoritmik ticaret stratejileri geliştirmek, araştırma, geliştirme, test etme ve iyileştirme döngüsü olan doğrusal bir süreç değildir. Yolculuk tipik olarak şu aşamaları içerir:
1. **Fikir Üretimi:** Bu genellikle piyasa gözlemi, ilgili makalelerin analizi ('Altın Piyasası Mikro Yapı Analizi' gibi) veya algılanan verimsizliklerin belirlenmesiyle yönlendirilir. Değerli metaller için fikirler, para politikasının altın fiyatları üzerindeki etkisini gözlemlemekten veya altın ve gümüş arasındaki korelasyon dinamiklerini analiz etmekten kaynaklanabilir.
2. **Strateji Formülasyonu:** Ticaret fikrini kesin bir kural ve koşul setine dönüştürün. Giriş ve çıkış tetikleyicilerini, pozisyon büyüklüğünü ve risk yönetimi parametrelerini tanımlayın. Strateji türü seçiminin (ortalama geri dönme, trend takibi vb.) somutlaştığı yer burasıdır.
3. **Veri Edinimi ve Hazırlama:** İlgili geçmiş ve gerçek zamanlı verileri toplayın. Seçtiğiniz programlama dili ve geriye dönük test çerçevesiyle uyumlu olacak şekilde verileri temizleyin, normalleştirin ve biçimlendirin.
4. **Geriye Dönük Test:** Formüle edilen stratejiyi geçmiş veriler üzerinde test edin. Toplam getiri, Sharpe oranı, maksimum düşüş, kazanma oranı ve kar faktörü gibi performans metriklerini analiz edin. Aşırı uyum (overfitting) için dikkatli olun – geçmiş verilerde olağanüstü iyi performans gösteren ancak canlı ticarette başarısız olan bir strateji.
5. **Optimizasyon (Dikkatle):** İlk geriye dönük testler umut vericiyse, parametreler optimize edilebilir. Ancak bu, eğri uydurmaktan (curve-fitting) kaçınmak için dikkatli bir şekilde yapılmalıdır. Basit grid aramaları yerine yürüyen ileri optimizasyon (walk-forward optimization) gibi teknikler tercih edilir.
6. **Kağıt Ticareti (Simülasyon):** Stratejiyi gerçek zamanlı veri akışlarını kullanarak simüle edilmiş bir canlı ortamda (kağıt ticareti) dağıtın. Bu, sermayeyi riske atmadan mevcut piyasa koşullarındaki performansı değerlendirmeye yardımcı olur ve geriye dönük test ile canlı simülasyon arasındaki herhangi bir tutarsızlığı belirler.
7. **Canlı Dağıtım (Küçük Ölçekli):** Güven kazandıktan sonra, stratejiyi küçük bir miktar gerçek sermaye ile dağıtın. Performansını ve sistem kararlılığını yakından izleyin.
8. **İzleme ve İyileştirme:** Canlı ticarette stratejinin performansını sürekli olarak izleyin. Piyasa koşulları değişir ve stratejiler zamanla bozulabilir. Gerekirse stratejileri uyarlamaya, iyileştirmeye veya hatta emekliye ayırmaya hazır olun. Bu sürekli süreç, uzun vadeli başarı için kritiktir.
Disiplinli bir zihniyet ve sürekli öğrenme taahhüdü ile birleşen bu yinelemeli yaklaşım, karmaşık ve dinamik değerli metaller piyasalarında başarılı algoritmik ticaretin temelini oluşturur.
Önemli Çıkarımlar
Güvenilir, düşük gecikmeli veri akışları ve API erişimi, değerli metaller algoritmik ticareti için temeldir.
Yaygın strateji türleri arasında ortalama geri dönme (çiftli ticaret, istatistiksel arbitraj), trend takibi (hareketli ortalamalar, kırılmalar) ve olay odaklı yaklaşımlar bulunur.
Bir ticaret platformu, düşük gecikmeli bağlantı, veri depolama ve risk yönetimi içeren sağlam bir altyapı esastır.
Algoritmik ticaret geliştirme, fikir üretimi, formülasyon, titiz geriye dönük test, kağıt ticareti ve dikkatli canlı dağıtımın yinelemeli bir sürecidir.
Sürekli izleme ve uyum, gelişen piyasa koşullarında strateji etkinliğini sürdürmek için kritiktir.
Sıkça Sorulan Sorular
Altın ve gümüşte algoritmik ticarete başlamak için gereken minimum sermaye nedir?
Minimum sermaye gereksinimi, aracı kuruma, seçilen varlıklara (örneğin, vadeli işlemler veya CFD'ler) ve stratejinin kaldıraç oranına bağlı olarak önemli ölçüde değişir. Bazı aracı kurumlar CFD'ler için birkaç yüz dolarla işlem yapmaya izin verebilirken, vadeli işlem sözleşmelerini, özellikle marjla işlem yapmak, marj gereksinimlerini karşılamak ve potansiyel düşüşleri karşılamak için genellikle binlerce dolar olmak üzere önemli ölçüde daha fazla sermaye gerektirir. Kaybetmeyi göze alabileceğiniz sermaye ile başlamanız ve stratejinizin risk yönetiminin potansiyel oynaklığı kaldırabileceğinden emin olmanız çok önemlidir.
Algoritmik olarak altın vadeli işlemleri veya altın CFD'lerini işlemeyi nasıl seçerim?
Altın vadeli işlemleri, dayanak emtia üzerine doğrudan maruziyet sunar ve genellikle daha yüksek likidite ve şeffaflık ile düzenlenmiş borsalarda işlem görür. Sözleşme vadesi ve teslimat üzerinde hassas kontrol gerektiren stratejiler için uygundurlar. Altın CFD'leri (Fark Sözleşmeleri), aracı kurumlar tarafından sunulan tezgah üstü (OTC) ürünlerdir. Genellikle daha düşük sermaye gereksinimleri ve kaldıraç ile daha erişilebilirdirler ve bazı algoritmik stratejiler için daha basit hale getiren vade sonu tarihleri yoktur. Ancak, CFD'ler aracı kurumdan karşı taraf riski taşır ve farklı fiyatlandırma ve gecelik finansman maliyetlerine sahip olabilir. Fiyat keşfi ve arbitraja odaklanan gelişmiş stratejiler için vadeli işlemler genellikle tercih edilir. Daha düşük sermayeli daha basit trend takip veya ortalama geri dönme stratejileri için CFD'ler uygun bir seçenek olabilir.
Değerli metaller ticaret algoritmalarımın aşırı uyumunu (overfitting) nasıl önleyebilirim?
Aşırı uyum, bir algoritmanın geçmiş verilerde olağanüstü iyi performans gösterdiği ancak genelleştirilebilir piyasa davranışlarından ziyade geçmişin gürültüsünü ve belirli kalıplarını öğrendiği için canlı ticarette başarısız olduğu zamandır. Bunu önlemek için şu teknikleri kullanın:
1. **Örnek Dışı Test (Out-of-Sample Testing):** Stratejinizi eğitilmediği veya optimize edilmediği veriler üzerinde test edin.
2. **Yürüyen İleri Optimizasyon (Walk-Forward Optimization):** Tüm geçmiş veri kümesi üzerinde optimize etmek yerine, dönen bir pencere üzerinde optimize edin ve ardından sonraki dönem üzerinde test edin. Bu işlemi tekrarlayın.
3. **Daha Basit Stratejiler:** Genellikle, daha az parametreye sahip daha basit stratejiler aşırı uyuma daha az eğilimlidir.
4. **Sağlamlık Kontrolleri:** Stratejiyi farklı piyasa rejimlerinde (örneğin, yüksek volatilite, düşük volatilite, trend, dalgalanma) test edin.
5. **Gerçekçi İşlem Maliyetleri:** Geriye dönük testlerinize gerçekçi kayma ve komisyon maliyetlerini dahil edin. Aşırı uyum bazen bu maliyetleri göz ardı ederek maskelenebilir.
Önemli Çıkarımlar
•Reliable, low-latency data feeds and API access are fundamental for precious metals algorithmic trading.
•Common strategy types include mean reversion (pairs trading, stat arb), trend following (moving averages, breakouts), and event-driven approaches.
•A robust infrastructure encompassing a trading platform, low-latency connectivity, data storage, and risk management is essential.
•Algorithmic trading development is an iterative process of idea generation, formulation, rigorous backtesting, paper trading, and careful live deployment.
•Continuous monitoring and adaptation are critical for maintaining strategy efficacy in evolving market conditions.
Sıkça Sorulan Sorular
What is the minimum capital required to start algorithmic trading in gold and silver?
The minimum capital requirement varies significantly based on the broker, the chosen assets (e.g., futures vs. CFDs), and the strategy's leverage. Some brokers may allow trading with a few hundred dollars for CFDs, while trading futures contracts, especially on margin, typically requires substantially more capital, often in the thousands of dollars, to meet margin requirements and absorb potential drawdowns. It's crucial to start with capital you can afford to lose and to ensure your strategy's risk management can handle potential volatility.
How do I choose between trading gold futures or gold CFDs algorithmically?
Gold futures offer direct exposure to the underlying commodity and are traded on regulated exchanges, often with higher liquidity and transparency. They are suitable for strategies that require precise control over contract expiry and delivery. Gold CFDs (Contracts for Difference) are over-the-counter products offered by brokers. They are generally more accessible with lower capital requirements and leverage, and they don't have expiry dates, making them simpler for some algorithmic strategies. However, CFDs carry counterparty risk from the broker and may have different pricing and overnight financing costs. For advanced strategies focused on price discovery and arbitrage, futures are often preferred. For simpler trend-following or mean-reversion strategies with lower capital, CFDs can be a viable option.
How can I avoid overfitting my precious metals trading algorithms?
Overfitting occurs when an algorithm performs exceptionally well on historical data but fails in live trading because it has learned the noise and specific patterns of the past rather than generalizable market behavior. To avoid this, employ techniques such as:
1. **Out-of-Sample Testing:** Test your strategy on data it was not trained or optimized on.
2. **Walk-Forward Optimization:** Instead of optimizing over the entire historical dataset, optimize over a rolling window and then test on the subsequent period. Repeat this process.
3. **Simpler Strategies:** Often, simpler strategies with fewer parameters are less prone to overfitting.
4. **Robustness Checks:** Test the strategy across different market regimes (e.g., high volatility, low volatility, trending, ranging).
5. **Realistic Transaction Costs:** Include realistic slippage and commission costs in your backtests. Overfitting can sometimes be masked by ignoring these costs.