4 puan yazan GN⁺ 2023-07-01 | 1 yorum | WhatsApp'ta paylaş
  • 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

 
GN⁺ 2023-07-01
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

    • Platform, sadece giriş maliyeti olmakla kalmıyor; inşa etmesi aslında daha doğrusal olan kısım. Gecikmenin en uç noktasında bile çoğu zaman yapılan şey bütçenin sınırına kadar itmek, tamamen yeni bir şey keşfetmek değil
      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
    • Dürüst olmak gerekirse kriptodan bile daha anlamsız görünüyor
    • Örneklem tek bir deneyimden ibaret ama, bir trading şirketinde 2 yıllık sözleşmeyle çalışınca işi döndüren şeyin yalnızca teknik yetkinlik olmadığını gördüm
    • Gerçekten %100 katılıyorum. Eline geçebilen neredeyse tüm kitapları okudum ama kimse platformdan söz etmiyordu; bu bakış açısı çok mantıklı geliyor
      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...
    • Ben orta frekanslı trading tarafındayım. Çok sayıda piyasa koşulunu hesaplıyor, en fazla dakikada birkaç emir gönderiyorum. HFT dünyasını biraz daha iyi anlamak istiyorum
      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

    • Şu da ilginç gelebilir: https://www.techtrader.ai/#wall
      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
    • Güzel bir yazıydı. Ben de Go ile benzer bir proje yapıyorum ama gerçek zamanlı tick yerine yalnızca dakikalık mum verisi kullanıyorum
      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
    • Birkaç yıldır algoritmik trading’i yan proje olarak yapıyorum ama her şeyi TD Ameritrade üzerinden yürütüyorum. Fiyat ve diğer verileri hesabım sayesinde ücretsiz alıyorum, ayrıca başka ücretsiz veri kaynakları da kullanıyorum
      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
    • Bir e-posta adresin olup olmadığını merak ediyorum. Ben de uzun süredir F# ile benzer bir sistem geliştiriyorum, bağlantı kurmak isterim
    • IB’nin TWS API’sine bağlanılıyorsa ve işlemler de yalnızca oradan gerçekleştirilecekse, gerçek zamanlı fiyatları IB API üzerinden alıp polygon.io’yu hiç kullanmamak da mümkün değil mi diye düşünüyorum
      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ü

    • Grafiğe 2009'dan başlayan backtest verisi gibi görünen bir şey koymak pek dürüst görünmüyor. Başlangıç noktası tamamen keyfi ve 3 yıl önce başladığını söylediğine göre bu gerçek performans değil
      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
    • Bu modellerin ne kadar dış veri kullandığını ya da düzenli olarak ne kadar insan girdisi veya ince ayar yapıldığını merak ediyorum
  • 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

    • Katılıyorum. O kısım benim atladığım bir noktaydı
      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

    • Sonuçta alıp almayacağınıza ya da satıp satmayacağınıza ve ne kadar yapacağınıza karar vermeniz gerekir; bu karar, belirli bir mantığa dayanan başka kararlarla rekabet eder
      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
    • Bu yazıyı yazan benim ve gerçekten Go ile yaptım. Bunun nedeni, Go’nun benim ağırlıklı olarak kullandığım programlama dili olması
      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
    • Kodu hiç allocation yapmayacak şekilde yazarsanız, çöp toplayıcısı olan diller de HFT’de kullanılabilir
      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
    • Duruma göre değişir. Büyük bir heap oluşturup allocation’ı neredeyse sıfıra indirerek, heap dolmadan önce uygulamayı periyodik olarak yeniden başlatma yaklaşımıyla Java kullanan yerler olduğunu duydum
      Bu şekilde performans oldukça iyi oluyor ve bellek hataları konusunda endişelenmek gerekmiyor
    • Bu overfittingtir. Sadece bilgisayar optimizasyonunda değil, insanların elle yaptığı optimizasyonda da ortaya çıkabilir
      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

    • Ben de tek başına algoritmik trading geliştiren taraftayım. İstersen bağlantı kurup konuşabiliriz
    • Bu yazı iyi bir zamana denk geldi. Bahane olarak opsiyon izlemeyi kullanıp başka teknolojiler öğrenmeyi düşünüyordum
      Yan proje olduğu için büyük ilerleme kaydedemeyebilirim ama istersen her zaman konuşabilirim
    • Profesyonellerle nasıl rekabet etmeyi beklediğini merak ediyorum. Onlardan daha hızlı olmak zor ve birkaç matematik doktorası seviyesinde insan yoksa daha iyi algoritmalar üretme ihtimalin de düşük
      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”

    • Bu yazıyı yazan benim; böyle hissettirmiş olmasına üzüldüm
      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

    • Benim tüm verim polygon.io’dan geliyor ve dış veri yok
      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