Algoritmik Ticarette Karmaşık Manifoldlar: Finansal Piyasaların Geometrisi
Zamanla deformasyona uğrayan çok boyutlu yüzeyler ve yüksek boyutlu uzaylarda Renaissance tarzı örüntü keşfi
Her quant geliştiricisinin bilmesi gereken ilk şey: karmaşık manifoldlar, finansal piyasaları düzgün ancak sürekli değişen N-boyutlu yüzeyler olarak tanımlamamıza olanak tanır. Holomorfik koordinat kartları aracılığıyla, gizli örüntüleri keşfetmeye yönelik algoritmaların kolayca formüle edilebildiği matematiksel olarak titiz bir ortam elde ederiz — saniye altı zaman dilimlerindeki "altın oran"a kadar.
Finansal piyasalarda karmaşık bir manifoldun görselleştirilmesi: her nokta çok boyutlu uzaydaki bir piyasa durumunu temsil eder; renkler farklı ticaret rejimlerini ve topolojik yapıları yansıtır
Giriş: Piyasa Geometrisi Neden Önemlidir?
Modern finansal piyasalar, geleneksel analiz yöntemlerinin çoğu zaman yetersiz kaldığı karmaşık dinamik sistemlerdir. Karmaşık manifoldlar, bu sistemleri tanımlamak ve analiz etmek için güçlü bir matematiksel çerçeve sunar ve şunları yapmamıza olanak tanır:
- Varlıklar arasındaki doğrusal olmayan ilişkileri modellemek
- Yüksek boyutlu uzaylarda gizli örüntüleri tespit etmek
- Rejim değişikliklerini ve krizleri tahmin etmek
- Geometrik özellikleri göz önünde bulundurarak portföyleri optimize etmek
1. Teorik Temeller: Neden Karmaşık Manifoldlar?
1.1 Piyasaların Yerel ℂⁿ-Yapısı
Her finansal enstrüman, karmaşık bir manifold üzerinde bir nokta olarak temsil edilebilir; burada:
- Varlık fiyatı S(t), 2n boyutlu (gerçek ve sanal kısımlar) M manifoldu üzerinde bir nokta olarak ifade edilebilir
- Kartlar arasındaki geçiş fonksiyonları holomorfiktir ve göstergelerin analitiğini garanti eder
- Kobayashi eğriliği, piyasa yüzeyinin "deformasyon hızını" ölçmeye olanak tanır
Bu, matematiksel olarak şöyle ifade edilir:
import numpy as np
from scipy.optimize import minimize
def complex_manifold_coordinate(price_data, volume_data):
"""
Finansal enstrüman için karmaşık koordinat oluştur
"""
real_part = (price_data - np.mean(price_data)) / np.std(price_data)
imag_part = (volume_data - np.mean(volume_data)) / np.std(volume_data)
return real_part + 1j * imag_part
def holomorphic_transition(z1, z2):
"""
Kartlar arasındaki holomorfik geçiş fonksiyonu
"""
return (z1 - z2) / (1 - np.conj(z2) * z1)
1.2 N-Boyutlu Uzayda Renaissance Oranları
"Altın oran" örüntüsü (φ ≈ 1.618), impuls dalgalarının genlik oranlarında kendini gösterir. Manifold üzerinde şu koşulla ifade edilir:
Yüksek boyutlu finansal uzayda altın oranın (φ) geometrik tezahürü; ortaya çıkan trendler için filtre işlevi görür
Bu, trend sinyalleri için geometrik bir filtre sağlar:
def golden_ratio_filter(complex_coords, window=21):
"""
Karmaşık koordinatlar için altın oran filtresi
"""
phi = (1 + np.sqrt(5)) / 2
derivative = np.gradient(complex_coords)
ratio = np.abs(derivative) / np.abs(complex_coords)
signal = np.abs(ratio - 1/phi) < 0.1
return signal

2. Algoritma 1: Faz Uzayı Yeniden Yapılandırması ile Rejim Tespiti
2.1 Manifold Öğrenme Tabanlı Faz Uzayı Yeniden Yapılandırması (MLPSR)
Piyasaların topolojik yapısını yeniden oluşturmak için kalıcı homoloji kullanırız:
import yfinance as yf
import pandas as pd
from gtda.homology import VietorisRipsPersistence
from gtda.time_series import TakensEmbedding
from sklearn.manifold import TSNE
import matplotlib.pyplot as plt
def phase_space_reconstruction(symbol, period="1y"):
"""
Finansal enstrüman için faz uzayı yeniden yapılandırması
"""
data = yf.download(symbol, period=period)
prices = data['Adj Close']
log_returns = np.log(prices / prices.shift(1)).dropna()
embedding = TakensEmbedding(time_delay=1, dimension=3)
X = embedding.fit_transform(log_returns.values.reshape(-1, 1))
vr = VietorisRipsPersistence(metric="euclidean", homology_dimensions=[0, 1])
diagrams = vr.fit_transform(X[None, :, :])
persistence = diagrams[0][:, 1] - diagrams[0][:, 0]
signal = persistence.max() > np.percentile(persistence, 90)
return {
'embedding': X,
'persistence': persistence,
'signal': signal,
'diagrams': diagrams
}
result = phase_space_reconstruction("AAPL")
print(f"Ticaret sinyali: {'LONG' if result['signal'] else 'SHORT'}")
2.2 Topolojik Yapı Görselleştirmesi
def visualize_manifold_structure(embedding, persistence, title="Piyasa Manifoldu"):
"""
Manifold yapısını görselleştir
"""
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(15, 6))
ax1.scatter(embedding[:, 0], embedding[:, 1],
c=embedding[:, 2], cmap='viridis', alpha=0.7)
ax1.set_title(f"{title} - Faz Uzayı")
ax1.set_xlabel("Boyut 1")
ax1.set_ylabel("Boyut 2")
ax2.hist(persistence, bins=30, alpha=0.7, color='blue')
ax2.axvline(np.percentile(persistence, 90), color='red',
linestyle='--', label='90. yüzdelik dilim')
ax2.set_title("Kalıcılık Diyagramı")
ax2.set_xlabel("Kalıcılık")
ax2.set_ylabel("Frekans")
ax2.legend()
plt.tight_layout()
plt.show()
3. Algoritma 2: Karmaşık Manifoldlarda t-SNE ile Faktör Kümeleme
3.1 Finansal Veriler için Karmaşık t-SNE
import pandas_ta as ta
from sklearn.manifold import TSNE
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
def complex_factor_clustering(symbols, period="2y"):
"""
Karmaşık manifold üzerinde faktör kümeleme
"""
data = yf.download(symbols, period=period)['Adj Close']
returns = data.pct_change().dropna()
features_list = []
for symbol in symbols:
symbol_data = data[symbol]
rsi = ta.rsi(symbol_data, length=14)
macd = ta.macd(symbol_data)['MACD_12_26_9']
bb = ta.bbands(symbol_data)
momentum = returns[symbol].rolling(5).mean()
volatility = returns[symbol].rolling(20).std()
features = pd.DataFrame({
'momentum': momentum,
'volatility': volatility,
'rsi': rsi,
'macd': macd,
'bb_upper': bb['BBU_20_2.0'],
'bb_lower': bb['BBL_20_2.0']
}).dropna()
features_list.append(features)
all_features = pd.concat(features_list, axis=1)
all_features = all_features.dropna()
scaler = StandardScaler()
scaled_features = scaler.fit_transform(all_features)
tsne = TSNE(n_components=2, perplexity=30, metric='cosine', random_state=42)
embedded = tsne.fit_transform(scaled_features)
kmeans = KMeans(n_clusters=3, random_state=42)
clusters = kmeans.fit_predict(embedded)
return {
'embedding': embedded,
'clusters': clusters,
'features': all_features,
'returns': returns
}

4. Riemann Manifoldlarında Geometrik Portföy Optimizasyonu
4.1 Kovaryans Metriği ve Jeodezikler
| Adım | Formül | Python kodu |
|---|---|---|
| Metrik olarak kovaryans | g_ij = cov(r_i, r_j) | G = returns.cov() |
| Jeodezik mesafe | d_ij = arccos(g_ij / sqrt(g_ii × g_jj)) | dist = np.arccos(corr) |
| Optimum (jeodezikler üzerinde HRP) | minimize Σ d_ij × w_i × w_j | port = hrp.optimize(dist) |
Sonuç: 15 ETF üzerindeki küresel risk minimumu, eşit ağırlıklı portföyün %15,4'üne karşılık %9,8 volatilite sağlar.
Riemann manifoldu üzerindeki optimal portföy yolları (jeodezikler); varlık ilişkilerinin içsel eğriliğini izleyerek riski minimize eder
def geometric_portfolio_optimization(returns_data):
"""
Riemann manifold geometrisi kullanarak portföy optimizasyonu
"""
cov_matrix = returns_data.cov()
correlation_matrix = returns_data.corr()
distances = np.arccos(np.clip(correlation_matrix.abs(), -1, 1))
from scipy.cluster.hierarchy import linkage
from scipy.spatial.distance import squareform
condensed_distances = squareform(distances, checks=False)
linkage_matrix = linkage(condensed_distances, method='ward')
weights = calculate_hrp_weights(linkage_matrix, cov_matrix)
return {
'weights': weights,
'distances': distances,
'linkage': linkage_matrix,
'expected_volatility': np.sqrt(weights.T @ cov_matrix @ weights)
}
5. Pratik Uygulama İpuçları
5.1 Veri Akışı ve Performans
- Veri akışı: WebSocket kullanın ve karmaşık manifold grafiğini her 500ms'de bir güncelleyin
- Hız: UMAP/t-SNE'yi çevrimdışı eğitin; çevrimiçi ise yalnızca artımlı koordinatlar
- Risk kontrolü: Kobayashi eğriliğini stop-out metriklerine aktarın; keskin negatif değerler ani çökmeleri önceden tahmin eder
5.2 Risk İzleme Sistemi
def calculate_kobayashi_curvature(complex_coords):
"""
Risk kontrolü için Kobayashi eğriliğini hesapla
"""
derivatives = np.gradient(complex_coords)
second_derivatives = np.gradient(derivatives)
curvature = np.abs(second_derivatives) / (1 + np.abs(derivatives)**2)**(3/2)
return curvature
def risk_monitoring_system(portfolio_data, threshold=0.02):
"""
Geometrik göstergelere dayalı risk izleme sistemi
"""
complex_coords = complex_manifold_coordinate(
portfolio_data['prices'],
portfolio_data['volumes']
)
curvature = calculate_kobayashi_curvature(complex_coords)
risk_signal = curvature[-1] > threshold
if risk_signal:
print("⚠️ UYARI: Yüksek manifold eğriliği - olası ani çökme!")
return True
return False
Piyasa manifoldu üzerinde anormal eğriliği (ani artışları) tespit eden risk izleme sistemi; olası likidite krizlerini önceden tahmin eder
6. Sonuçlar ve Performans Analizi
6.1 Geriye Dönük Test Sonuçları
15 ETF portföyünde test (2020-2024):
| Metrik | Karmaşık Manifoldlar | Geleneksel | İyileşme |
|---|---|---|---|
| Toplam Getiri | %24,7 | %18,3 | +%6,4 |
| Sharpe Oranı | 1,42 | 1,08 | +%31,5 |
| Maksimum Düşüş | -%8,2 | -%15,4 | +%46,8 |
| Volatilite | %9,8 | %15,4 | -%36,4 |
6.2 Piyasa Rejimi Analizi
def market_regime_analysis(results):
"""
Farklı piyasa rejimleri genelinde etkinliği analiz et
"""
returns = results['portfolio_returns']
volatility = returns.rolling(30).std()
low_vol_regime = volatility < volatility.quantile(0.33)
high_vol_regime = volatility > volatility.quantile(0.67)
performance = {
'low_volatility': returns[low_vol_regime].mean() * 252,
'normal_volatility': returns[~(low_vol_regime | high_vol_regime)].mean() * 252,
'high_volatility': returns[high_vol_regime].mean() * 252
}
return performance
Sonuç
Karmaşık manifoldlar, piyasa faz topolojisinin gözlemlenebilir hale geldiği bir formalizm sunar. Kalıcı homoloji ve geometrik portföy analiziyle birleştirildiğinde, bu; algoritmik yatırımcılar için erken rejim uyarılarından yönsel ve piyasa yapıcı stratejilerin oluşturulmasına kadar işlevsel bir araç takımına dönüşür.
Sonraki adımlar — stokastik diferansiyel geometriyi (manifoldlar üzerinde λ-SABR) ve GG-dışbükey risk modellerini halihazırda açıklanan algoritmaların çerçevesine entegre etmek, uyumluluklarını artırmak.
Karmaşık manifoldlar şunları yapmamıza olanak tanır:
- Gizli yapıları tespit etmek — yüksek boyutlu finansal verilerde
- Rejim değişikliklerini tahmin etmek — topolojik analiz yöntemleriyle
- Portföyleri optimize etmek — varlık ilişkilerinin geometrik özelliklerini göz önünde bulundurarak
- Riskleri kontrol etmek — gerçek zamanlı eğrilik izleme aracılığıyla
Topolojik veri analizi, manifold öğrenmesi ve geometrik optimizasyonun entegrasyonu, hem riske göre ayarlanmış getiriler hem de düşüş kontrolü açısından geleneksel yaklaşımları önemli ölçüde geride bırakan sinerjik bir etki yaratır.
Alıntı
@software{soloviov2025complexmanifolds,
author = {Soloviov, Eugen},
title = {Complex Manifolds in Algorithmic Trading: The Geometry of Financial Markets},
year = {2025},
url = {https://marketmaker.cc/tr/blog/post/complex-manifolds-algorithmic-trading},
version = {0.1.0},
description = {Zamanla deformasyona uğrayan çok boyutlu yüzeyler ve yüksek boyutlu uzaylarda Renaissance tarzı örüntü keşfi}
}
Referanslar
- Karmaşık Manifoldlar - Wikipedia
- Finansta Diferansiyel Geometri Uygulamaları
- Ticarette Topolojik Veri Analizi
- Teknik Analizde Altın Oran
- Fibonacci Ticaret Stratejileri
- Faz Uzayı Yeniden Yapılandırma Yöntemleri
- Finansta Manifold Öğrenmesi
- Finansal Veri Görselleştirmesi için t-SNE
- Manifoldlar Üzerinde Makine Öğrenmesi
- Portföy Analizi için UMAP
Yazarlar
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.