Vaka incelemesi: Go diliyle algoritmik trading
(massive.com)- NYSE ve NASDAQ’ta listelenen 5.500’den fazla hisseyi gerçek zamanlı izleyip otomatik alım satım yapan bir perakende trading botunun Go diliyle oluşturulduğu kişisel proje örneği
- Başlangıçta hızla zarar ettiren bir seviyedeyken, yıllar süren deneme yanılmanın ardından başabaş seviyesine gelişti; zaman zaman kâr eden bir aşamaya kadar evrildi
- Veri sağlayıcı, Go uygulaması ve broker olmak üzere üç temel bileşenden oluşur; piyasa açılış ve kapanışlarında saniyede 60 binden fazla olayı bellek içinde işler
- Rastgele alımlarla sistem testi, tick bar tabanlı özel candlestick üretimi, bellek içi işleme geçiş gibi pratikte edinilen dersler merkezdedir
- Finans, programlama ve veri analizinin kesiştiği alanda kişisel bir trading platformu kurmanın gerçek karmaşıklığını ve olasılıklarını gösteren bir örnek
Projenin arka planı ve motivasyonu
- Tüm borsa genelinde yaklaşık 500 kısa vadeli işlemi otomatik yürütüp yönetme ve her işlemden küçük kârlar alma fikrine dayanan bir trend takip yaklaşımıyla başladı
- Manuel trading’in sınırları nedeniyle otomasyona geçildi
- Tek bir hisseye tüm sermayeyle yatırım yapmanın riski son derece yüksekti; ancak onlarca kısa vadeli bahsi aynı anda izlemek insan kapasitesinin dışındaydı
- Hızlı giriş ve çıkış yalnızca likiditesi yüksek hisselerde mümkündü; hızlı gerçekleşme için küçük miktarlarda alım gerekiyordu
- Pozisyon yönetimi de büyük bir sorundu; 25’ten fazla eşzamanlı bahiste giriş ve çıkış zamanlamasını tutturmak oldukça karmaşıktı
- Sermaye büyüdükçe bahis sayısının da artmasını gerektiren bir ölçeklenebilirlik sorunu vardı
- Spread, komisyon, slippage, API ücretleri ve vergiler gibi işlem maliyetlerini hızla hesaplayıp işlemin anlamlı olup olmadığını değerlendirme ihtiyacı vardı
Çözüm mimarisi
- NYSE ve NASDAQ’taki 5.500’den fazla hisseyi gerçek zamanlı izleyerek hızlı trading kararları veren otomasyon aracı yıllar içinde geliştirildi
- Linux ortamında yüksek performanslı bir oyun sisteminde çalıştırıldı: 16 çekirdek, 128 GB RAM, 8 TB NVMe depolama, 1 Gbps internet
-
Üç temel bileşen
- Data Provider (Massive.com): Tüm piyasanın geçmiş ve gerçek zamanlı verilerini kapsar; geliştirici dostu, sezgisel API ve dokümantasyon sunar. Yapay sınırlamalar olmadan tüm piyasa verilerine erişim sağlayan basit bir ücretlendirme modeli vardır
- Go uygulaması: Veri feed’lerini toplayıp yorumlayan, hesaplanmış trading kararları vererek alım-satım emirlerini broker API’sine gönderen çekirdek motor
- Broker (Interactive Brokers): Emir gerçekleştirmeyi üstlenen basit bir API sunar
-
Go dilinin seçilme nedeni
- Hedge fon sektörü C++ ve Python’a dayanıyor olsa da, yıllardır Go kullanıldığı ve veri akışı işleme ile API entegrasyonuna çok uygun olduğu görüldüğü için seçildi
Go uygulamasının başlıca özellikleri
-
Data Ingestion Loop
- Massive.com üzerinden 5.500’den fazla hissenin gerçek zamanlı verilerini sürekli toplar
- Başlangıçta veritabanına kaydetmeyi denedi; ancak piyasa açılış ve kapanışlarında saniyede 60 binden fazla olayı işleyemediği için tamamen bellek içi yaklaşıma geçildi
-
Build Our View Of The Stock Market
- Toplanan verilerle tüm piyasanın gerçek zamanlı bellek içi görünümünü oluşturur (fiyat, spread, işlem aktivitesi vb. izlenir)
- Ana akım haberlerden önce fırsatları yakalayıp işlem yapmayı mümkün kılar
- Premarket, normal piyasa ve after-hours işlem aktivitelerine erişebilir
-
BUY Signal Loop
- Fırsat yakalandığında broker API’sine alım emri isteği gönderir
- Basit bir tetikleyici değildir; spread tabanlı kâr tahmini, gerekli hisse adedinin belirlenmesi, komisyon ve vergi etkisinin hesaba katılması gibi ön hesaplamalar yapar
- Fiyat hareketi, kısmi gerçekleşme ve emir iptali gibi durumlara yönelik mantık içerir
-
Position Tracking System
- Açık pozisyonları sürekli izleyen bir döngüdür; pozisyon tablosunu ve güncel fiyatı gerçek zamanlı karşılaştırarak kâr-zararı takip eder
- GUI üzerinden işlemin neden tetiklendiği, mevcut durumu ve satış zamanı görülebilir
- BUY ve SELL mantığının rafine edilmesinde kritik rol oynar
-
SELL Signal Loop
- İyi kâr veya aşırı zarar algılandığında broker API’sine satış emri gönderir
- Hızlı hareket eden hisselerde fiyat güncellemeleri, kısmi gerçekleşmelerin işlenmesi gibi karmaşık mantıklar içerir
Web arayüzü ve ekran görüntüleri
- Yerleşik web arayüzü üzerinden tüm veri yapıları gezilebilir, veriler görselleştirilebilir, işlem tetikleme nedenleri ve mevcut durum kontrol edilebilir
- 5.500’den fazla ticker’ın fiyat ve spread gibi bilgilerini gösteren tüm piyasa özeti ekranı
- Tekil sembol sayfasında (ör. Tesla TSLA) tick bar’lar ve ilgili bilgiler gösterilir
- Kazanç/kayıp oranını ve mevcut açık pozisyonları gösteren arayüz (örnek oturumda yaklaşık -900 $ zarar kaydedildi)
- Gerçek zamanlı işlemlerin metadata’sını ve grafiklerini gösteren ekran (alım noktası turuncu çizgiyle işaretlenir)
- Gerçek zamanlı olayları (alım-satım emirleri) kaydeden konsol log’u ekranı
Strateji geliştirme ve backtesting
- Go uygulaması, strateji ve backtesting üç ayrı temel unsur olarak ele alınır
- Tartışmaların çoğu stratejiye (ortalama dönüş, trend takibi, doğrusal regresyon vb.) ve backtesting’e odaklansa da, gerçek zamanlı gün içi trading’de strateji uygulamanın pratiği ve lojistiği genellikle göz ardı edilir
- Massive.com’un geniş kapsamlı geçmiş işlem ve kotasyon verileriyle Python’da strateji keşfi ve backtesting yapılır (8 TB NVMe depolamanın kullanılma nedeni)
- Backtesting, “dikiz aynasına bakarak ileri doğru araba sürmeye” benzetilse de spread, vergi, komisyon, giriş ve çıkış noktaları konusunda karar dayanağı sağlayan değerli bir doğrulama aracıdır
- Strateji geliştirme ve backtesting’den elde edilen içgörüler BUY Signal Loop mantığına dönüştürülür
Kod örneği
- Üst düzey sözde kod ve gerçek Go kodu örnekleri içerir (gerçek uygulama yaklaşık 7.000 satır büyüklüğünde)
- Başlıca veri yapıları: TrackedSymbols (tüm sembol map’i, işlem etkinleştirme bayrağı, global lock), Symbol (ham işlem ve kotasyon verileri, Aggregate, Position vb.), TradeEvent, QuoteEvent, Aggregate, Position
- Ana döngü yapısı
- WebSocket bağlantısıyla işlem ve kotasyon verilerini toplar, olayları parse eder
- Sembol map’ine kaydettikten sonra işlem + kotasyon verilerini Aggregate içinde birleştirir
- Go channel’ları üzerinden alım-satım mantığına sinyal iletir
- HTTP sunucusuyla tüm semboller, pozisyonlar ve özel watchlist sorgulama özellikleri sunar
Temel dersler (Lessons Learned)
-
Soyutlamayı anlamak
- NYSE ve NASDAQ tek bir sistem değil, 19’dan fazla borsadan oluşan büyük ölçekli dağıtık sistemlerdir
- Candlestick verisi, ham işlem (tick) verilerinden oluşturulan büyük bir soyutlamadır; bunu derinlemesine anlamak şarttır
- Premarket, normal piyasa ve after-hours gibi piyasa işlem zaman dilimlerine göre farklı kurallar uygulanır
-
Emir yönetimi
- Basitçe alım-satım emri göndermek değil; önceden pozisyon boyutlandırma, hızlı işlem yapabilme, 25’ten fazla pozisyonu aynı anda yönetme, vergi ve komisyon hesaplama, slippage yönetimi ve emir durumunu izleme gibi unsurların tamamı başarılı trading’e katkı sağlar
-
Edge case’ler
- Emir gerçekleştirme, izleme, değiştirme, iptal, kısmi gerçekleşme ve piyasa işlem durdurmaları gibi çok sayıda edge case vardır; gözden kaçırılırsa parasal kayıp doğurur
- Gerçek para yerine paper trading (simülasyon) ile test yapmak şarttır
- Premarket’te %40 yükselen bir hisseyi tepe noktadan aldıktan sonra sert düşüş yaşandı; satış emrini ayarlamayı başaramama nedeniyle dakikalar içinde %40 zarar deneyimlendi. Premarket ve after-hours, normal piyasadan farklı kurallara sahip olduğundan aşırı oynaklık hızla ortaya çıkabilir
-
Rastgele alım kullanımı
- Gizli bir strateji keşfetmekten çok sistemin temel işlevlerini test etmek önemlidir
- Bir hafta boyunca günde 1.000 rastgele hisse alımı yapmak; alım-satım mantığını, kısmi gerçekleşme yönetimini, iptal mantığını ve pozisyon takip sistemini etkili biçimde doğrulayabilir
- Paper trading hesabında rastgele alımı test sürecine entegre etmek, sistemin birden fazla yönünü aynı anda doğrulayan verimli bir yöntemdir
-
Tick bar vs time bar
- Broker tarafından sağlanan candlestick bar’lar sabit zaman aralıklarını (ör. 30 saniye) kapsar; ancak piyasa hızla değiştiğinde aynı süre içinde 100 işlem ile binlerce işlemin bir arada bulunması sorunu doğar
- Ham tick ve kotasyon verileriyle işlem sayısı tabanlı özel bar’lar oluşturmak, piyasa açılış ve kapanışı gibi yüksek aktiviteli dönemlerde çok daha yüksek çözünürlük sağlar; spread gibi özel metriklerin eklenmesine imkân verir
-
Bellek içi işleme geçiş
- Başlangıçtaki veritabanı yaklaşımı, piyasa açılış ve kapanışlarında görülen büyük aktivite sıçramalarını kaldıramadı
- Mutex lock uygulanmış büyük map’ler kullanan tamamen bellek içi yaklaşıma geçilerek ölçeklenebilirlik sorunu çözüldü
- Tüm verileri içeren struct, kaydetmek için sıkıştırılmış gob dosyası olarak dump edilir ve yeniden başlatmada tekrar yüklenebilir. Gün içinde 40 GB’tan fazla büyür; bu boyuttaki gob dump’ını desteklemek için Go build’inin patch’lenmesi gerekti
- Elektrik kesintisi nedeniyle canlı durumda tüm state verilerini kaybetme deneyiminden sonra kesintisiz güç kaynağı (UPS) kullanmanın şart olduğu görüldü
-
Karmaşıklık ve yalnızlık hissi
- Beklenenden çok daha zorlu ve zaman alıcı bir projeydi; küçük bir hobiden ciddi bir takıntıya dönüştü
- Önemli olan tek şey hesap bakiyesini artırmak olduğundan yalnız hissettirebilir ve yoğun bir duygusal iniş çıkış yaratır
-
Go ve Python’u birlikte kullanma
- Trading sistemi Go ile yazılırken, veri keşfi için Python’un geniş veri bilimi kütüphanelerinden yararlanan hibrit bir yaklaşım kullanılır
-
Kişisel PC kullanımı
- Modern masaüstü PC’ler, yeterli optimizasyonla tüm borsanın gerçek zamanlı izlenmesini kaldırabilecek kadar güçlüdür
-
ChatGPT kullanımı
- Bir sorunu nasıl çözeceğini bilmeden arama ve okumaya dayanmak yerine, sorunu ChatGPT’ye açıklayıp çözüm yolu sormaya ve kod üretmesini istemeye geçildi; üretkenlikte 3 kat artış hissedildi
Piyasa olayları deneyimi
- Meme stock olayı, büyük IPO etkinlikleri, piyasa rallileri ve çöküşleri, Fed haberleri ve faiz artırımları gibi çeşitli piyasa anomalileri kendi sistemiyle tespit edilip haberlerden önce görülebildi
- Piyasa olaylarının gözünün önünde gelişmesini izlemek, en ön sıradan izleme deneyimi gibiydi
1 yorum
Hacker News yorumları
Bir süre HFT’de çalıştım; bu alanın tamamı gerçekten çok ilginçti ve asıl yazının yazarının da benzer bir keyif aldığını görmek sevindirici
Platformun kendisi tartışmalarda sık sık geri planda kalıyor; çünkü trading, ileri düzey teknoloji, karmaşıklık, sıkı regülasyon ve aşırı rekabetin aynı anda yığıldığı bir alan
Emir giriş sistemi, risk yönetim sistemi ve pozisyon takip sistemi kurmak başlı başına büyük bir başarı ama trading şirketi açısından bu zaten neredeyse oyuna giriş maliyeti sayılıyor
Bu yüzden insanlar stratejiden bahsediyor. Temel platform zaten kurulmuş oluyor; sonraki aşama onunla nasıl para kazanılacağını bulmak
Üstelik piyasa katılımcıları da aynı oyunu oynamıyor. HFT’de birkaç saniyelik alfa için FPGA üzerinde nanosaniye kısaltılır, New Jersey kablosuz ağlarında mikrosaniye azaltma yarışı yapılır; ama bankalar Carteret’teki havadan çok seçimleri ve jeopolitiği önemser. Yağmur yağarsa o gün mikrodalga ağ çalışmaz
Ortada ise birkaç saatten birkaç haftaya kadar süren alfayı hedefleyen sayısız strateji var; bu yüzden kamusal forumlarda aynı dille konuşmak bile zor. Yine de eğlenceli bir dünya, bazen özlüyorum
Buna karşılık strateji, keşif gerektiren alan. İyi bilinen ve hâlâ kârlı olan birkaç strateji var ama bunlar genelde en büyük şirketler tarafından kapılmış durumda; geri kalanı ise arayış süreci. Bazı stratejiler yalnızca çok kısa piyasa rejimlerinde kâr bırakıyor
Ben de bazen özlüyorum ama artık fazla konsolide olduğu için büyük ölçüde büyük şirketlerin dünyası hâline geldi
Bu konuların çoğu her şirketin içinde silo hâlinde tutuluyor ve dışarıda konuşulmuyor gibi
HFT tamamen başka bir oyun oynuyor. Borsa mimarisini ve gerçek kablolama düzenini okudum; ben veriyi SIP üzerinden alırken HFT doğrudan borsaya bağlanıyor [1]
Ben saniye ölçeğinde işlem yapıyorum, HFT ise dediğin gibi mikrosaniye ölçeğinde işlem yapıyor; kıyas kabul etmez. Bir bakıma onlarla doğrudan rekabet etmiyor olmak hoşuma da gidiyor. Ya da belki rekabet ediyoruzdur ama yine de biraz para kazanılabiliyordur
[1] https://www.researchgate.net/figure/Latencies-in-the-Electro...
Temelde bunun orta frekanslı trading’i daha hızlı yapmak mı olduğunu, yoksa emir kuyruğunda öncelik almak gibi daha somut avantajlar da sağlayıp sağlamadığını merak ediyorum
Bu projeyle ilgili sorular varsa yanıtlayabilirim. Bir yan proje olarak başladı, sonra tamamen takıntı hâline geldi
Sistemin kendisinde çok gizli bir şey yok; asıl mesele, içine strateji takılabilecek sağlam bir platform kurmak
Muhtemelen açık kaynak da yapabilirim ama önce içine eklediğim her türlü hack’i temizlemem gerekir
Tech Trader, 10 yılı aşkın süredir insan müdahalesi veya güncelleme olmadan canlı işlemlerde çalışan tam otonom bir trading sistemi olarak tanıtılıyor
Geleneksel algoritmik sistemlerden farkının; nicel, istatistiksel arbitraj veya yüksek frekans yaklaşımı yerine, bir insanın hisseye bakma biçimine benzer şekilde görüp makinenin soğukkanlı disiplini ve sınırsız odaklanmasını kullanması olduğu söyleniyor
Aralık 2012’de yayına alındığından beri gerçek sermayeyle tam otomatik işlem yaptığı, arkasında da pftq oyun takma adını kullanan, kendi kendini yetiştirmiş tek bir geliştiricinin olduğu belirtiliyor
Farklı stratejileri takıp çıkarma yaklaşımını paylaşabilir misin diye merak ediyorum. Eklenti tarzı bir strateji sistemi birden fazla katmana yayılabildiği için hızla karmaşıklaşıyor
Backtest tarafında tüm kotasyon ve tick verisini saklayıp yeniden oynatıyor musun, yoksa yalnızca geçmiş toplulaştırılmış veriyi mi kullanıyorsun, onu da merak ediyorum
Yazıyı görünce Polygon ile bir WebSocket kurulumu deneyeyim dedim ama WebSocket içeren ilk paketin 29 dolar, gerçek zamanlı veri içeren Advanced paketinse aylık 200 dolar olduğunu gördüm
Sınırsız API çağrısıyla gelen gerçek zamanlı veri oldukça iyi görünüyor ama stratejim normal sermaye ölçeğinde en fazla %78 kazanma oranına ulaştığı için aylık 200 doları gerekçelendirmek zor olur
Hangi paketi kullandığını ve onun artılarını eksilerini öğrenmek isterim. E-postayla yanıtlamak istersen profilimde var
IB’nin fiyat akışını gerçek zamanlı gönderip göndermediğini bilmiyorum. TWS ekranı sürekli yenileniyor, yani veriyi gerçek zamanlı iletiyor gibi görünüyor; ama derinlikli emir defterinin API üzerinden de verilip verilmediğini merak ediyorum
Bu yazının polygon.io blogunda yayımlandığını biliyorum ama sadece IB/TWS API ile de çalışabilecek bir yapı olup olmadığını merak ediyorum
Algoritmik işlemde en çok yanlış anlaşılan kavramlardan biri, çoğu sistemde hızın belirleyici unsur olmamasıdır
Benim sistemimdeki https://grizzlybulls.com/models/vix-ta-macro-mp-extreme gibi modeller, 3 yılı aşkın süredir gerçek işlemlerde piyasayı belirgin biçimde geçti, ancak ortalama olarak yalnızca 18 işlem gününde bir kez işlem yapıyor ve sinyaller de sadece saatlik dönüm noktaları civarında üretiliyor
Son 18 ay, yüksek enflasyon ve hızlı faiz artışları gibi büyük yapısal değişimler nedeniyle ilk döneme göre daha zayıftı, ancak sitenin Ocak 2022'de açılmasından bu yana +14.11% getiri sağladı; SPX ise -7.83%'te kaldı
Bunu kaldıraç kullanmadan başardı ve aynı dönemde maksimum düşüşü de -16.48% ile SPX'in -27.57%'sinden daha düşüktü
Bu, model gerçekten piyasayı açık ara yenmiş gibi gösteren bir kurgu. Gerçekten bakir bir altın madeni bulduysan etkileyici olurdu, ama kişisel olarak birkaç uyarı işareti yüzünden buna inanmak zor
Algoritmik işlemle ilgileniyorsanız Collective2'ye bakmaya değer. Mühendislerin alım-satım sinyallerini abonelik ücreti karşılığında sunduğu bir yer
Algoritmik işlemin bir tür minör ligi gibi hissettiriyor ve oldukça ilginç
Sistem kâr-zararı takip ettiği için performans raporlarını kandırmak zor ve Collective2'nin Interactive Brokers hesabınıza erişmesine izin verirseniz işlem sinyallerini sizin yerinize uygulayabiliyor
En az 10 yıllık bir hizmet olduğu için uzun vadeli performans da görülebiliyor, ancak çoğu sistem o kadar uzun ömürlü olmuyor
https://collective2.com/leader-board
Şu anda üst sıralardakiler bile orada uzun süre kalmamış; genelde 1-2 yıl kadar. Bu da çoğu sistemin alfasının oldukça hızlı kaybolduğunu gösteriyor
Getiri eğrileri de dalgalı ve birkaç işlemin kârın büyük kısmını oluşturduğu bir yapıya sahip
Otomatik işlem sistemi geliştirirken önemli eksenler; veri akışı ve toplama, özellik üretimi, sinyal üretimi, gerçek işlem ve emir yönetimi ile genel orkestrasyondur
Ham veri karar vermede nadiren doğrudan kullanılır; iyi özellik üretimi çoğu zaman başarının ana etkenidir. Hareketli ortalama bunun bir örneğidir ama bugünlerde bu kadarı neredeyse hiç işe yaramaz
Bu yazı, veriyi işleme ve emir yönetiminin teknik yönlerini ve genel pipeline'ı gösteriyor, ancak çözümün ölçeklenmesi ve asenkron uygulamaya dair daha fazla ayrıntı olsaydı güzel olurdu
Özellikle Go kullanıldığı için, bu amaca uygun channel yapısı da olduğundan daha çok merak ediyorum
Bunun yazının odağı olmadığını anlıyorum, ancak işlem mantığı, yeni stratejilerin nasıl takılacağı ve mevcut stratejilerin nasıl parametreleştirileceğine dair genel bilgiler de faydalı olurdu
Sondaki bağlantı ilginçti; ben de makine öğrenimi ve özellik mühendisliği tabanlı akıllı bir işlem botu geliştiriyorum (https://github.com/asavinov/intelligent-trading-bot), bu yüzden bu tür yazılar önemli olabilir
Yapı basitçe, birbirleriyle iletişim kuran goroutine ve channel'lardan ve her şeyi tek bir büyük mutex ile kilitlemekten oluşuyor
Yeni veri geldiğinde gerekli agregasyonlar, yani tick tabanlı candlestick'ler oluşturuluyor ve bu veri BUY mantığı döngüsünü tetikliyor. Bir şey algılanırsa IB API üzerinden emir gönderiliyor
Oldukça basit; karmaşık bir tarafı yok. Aynı anda 100'den fazla pozisyonu takip ettiğim de oldu ve sorunsuz çalıştı, bu yüzden karmaşık asenkron mantıklarla pek uğraşmadım
Parametreler ise gerçekten BUY döngüsünün içinde hardcode durumda. Kulağa garip gelebilir ama küçük ölçekli bir kurulumda bunlar o kadar sık değişmiyor
Birkaç işlem çalıştırıp değerleri ayarlıyor, yeniden başlatıp tekrar test ediyorum. Kurumsal bir ortamda muhtemelen resmi bir dil ya da hot loading gibi şeyler olurdu, ama benim durumumda hardcode etmek fazlasıyla iyi çalışıyor
Go’nun kendisi ya da herhangi bir dil büyük bir avantaj sağlamaz. Avantaj sağlayan şey trading algoritmasıdır ve onu bulmak her zaman zordur
Aylarca en iyi parametreleri aradım ama sonunda sadece geçmiş veride işe yaradı, gerçekte ise durum tamamen farklıydı
Algoritma ve strateji mükemmelse Visual Basic bile Go, Rust ya da başka herhangi bir dilden daha iyi olabilir. Dil sadece bir araçtır
Go kullanmak iyiydi ama başlık biraz yanlış anlaşılmaya açık olabilir. İnsanlar bunu bir tür avantaj gibi algılayabilir ama öyle değil
Ayrıca HFT için çöp toplayıcısı olan bir dilin iyi bir seçim olduğunu düşünmüyorum
Böyle bir mantığı, yani stratejiyi elle geliştirmek doğal olarak zordur; bu yüzden geçmiş veriden işlem stratejileri çıkaran akıllı bir trading botu yaptım
https://github.com/asavinov/intelligent-trading-bot
Şu anda kriptoda çalışıyor ama başka piyasalara da uygulanabilir
https://t.me/intelligent_trading_signals
Sadece geçmiş veride iyi çalışıp gerçekte farklı sonuç vermesi çok tipik bir durumdur. Asıl mesele, gelecekteki görülmemiş veride de çalışan stratejiler üretmektir
Backtest algoritması da geleceğe ait verinin geçmişe sızmaması için tasarlanmalıdır
Sektörde C++ ve Python çok kullanıldığı için Go kullanımı aslında bir dezavantaj olabilir ama benim bildiğim dil oydu
Yanlış bir izlenim yaratmak istemedim. Go veri alıp işleme ve uzak API’leri çağırma konusunda gayet uygun, bu yüzden pratikte iyi çalışıyor
Ancak bunu temel alarak iş bulmaya çalışırsanız pek yardımcı olmayabilir
Java kullanıp başlangıçta ihtiyaç duyulan tüm belleği önceden ayıran yerler var. Jane Street’in OCaml kullanmasıyla da bilindiği söylenir
Bu şekilde performans oldukça iyi oluyor ve bellek hataları konusunda endişelenmek gerekmiyor
Geçmiş veri üzerinde bir süre deneme yaptıktan sonra o verinin faydası azalır
Ben de bildiğim bir dil olduğu için TypeScript’le, bol araç olduğu için de Python’la bot yapıyorum
Aşırı bunaltıcı ve yalnız bir iş. Diğer projeleri hep ekip olarak yaptım; çok küçük ekiplerde iş özerk olsa bile arada toplantılar ve standup’lar olurdu
Bunu 6 aydır tek başıma yapıyorum, sırf yalnız olmamak için bir arkadaşı dahil etmeyi bile düşündüm
Yan proje olduğu için büyük ilerleme kaydedemeyebilirim ama istersen her zaman konuşabilirim
Aklıma gelen tek yol, onların sahip olmadığı veriye ulaşmak
Bence bu yazı tamamen anlamsız ve tıklama avcılığına yakın. Özeti şu: “Piyasa verisi için polygon.io kullanılabilir ama algoritmik trading zaten zor, o yüzden şimdilik paylaşacak pek bir şey yok”
Benim açımdan, kendi sistemini kurarkenki üst seviye yapıyı paylaşmak istiyordum. Bu tavşan deliğine düştüğümde böyle bir yazı olsaydı isterdim diye düşündüm
Neleri ekleseydim daha iyi olurdu, söylersen memnuniyetle yansıtırım
Trading’in sunduğu kod, strateji ve para arasındaki saf geri bildirim döngüsünden keyif alan insanları bulmak iyi olur
Ben alfa kaynağı olarak hisselerle endeksler arasındaki zamanlama ve korelasyonu araştırıyordum ve bir miktar başarı elde ettim
Şimdi bu süreci otomatikleştirmeye çalışıyorum ve işin kendisinden gerçekten keyif alıyorum
Ne piyasa yapıcısı olmaya çalışıyorum ne de sürekli hisse değiştiriyorum. Birkaç hissede çok iyi kâr üreten hassas modelleri iyileştirmeye odaklanıyorum
Yararlı araçlar olarak TradingView ve Pinescript göstergeleri/stratejileri, backtest için dışa aktarılan veriyi kullanan Excel modelleri, backend makine öğrenimi için Python ve Go, yeni kod tekrarlarını hızlandırmak için de ChatGPT var
İlgilenirsen trading @ dianazink.com üzerinden konuşmak isterim
Güzel bir yazıydı; somut anlatımı ve özellikle ekran görüntülerini beğendim
Stratejiyi ayrıntılı anlatmamanı anlıyorum ama işlemlerin tamamen teknik analize mi dayandığını, yoksa dış veri ya da alternatif veri akışları da kullanıp kullanmadığını açıklayabilir misin diye merak ediyorum
Yani neredeyse kapalı bir sistem olup yalnızca Polygon girdisi ve IB API çıktısı mı var, yoksa haber siteleri, Twitter, Reddit gibi özel veri akışlarını da içeren daha geniş bir yapı mı söz konusu?
Eğer ikincisiyse, bazı veri kaynaklarının geçmiş kapsaması kısmi olduğunda bunu geçmiş backtest ile nasıl dengelediğini de merak ediyorum
Son zamanlarda, önceden hesaplanmış geçmiş değerlerin lookup table’larını kullanarak anomali tespiti yapma yöntemlerine bakıyorum; örneğin “bu hissede bu aktivite normal mi” gibi
Bugünün BXRX’i buna iyi bir örnek [1]
Opsiyon işlem aktivitesine de bakıyorum ve bunu sinyal olarak kullanıp kullanamayacağımı deniyorum
[1] https://www.google.com/search?q=BXRX