Алгоритмдик трейдингдеги татаал көп кабаттар: каржы рыноктарынын геометриясы
Убакыттын өтүшү менен деформацияланган көп өлчөмдүү беттер жана жогорку өлчөмдүү мейкиндиктердеги Ренессанс стилиндеги үлгүлөрдү табуу
Ар бир квант-иштеп чыгуучу билиши керек болгон биринчи нерсе: татаал көп кабаттар каржы рыноктарын тегиз, бирок дайыма өзгөрүп туруучу N-өлчөмдүү беттер катары сүрөттөөгө мүмкүндүк берет. Голоморфтук координаталар карталары аркылуу биз жашыруун үлгүлөрдү табуучу алгоритмдерди оңой түзүүгө болгон математикалык жактан так чөйрөгө ээ болобуз — субсекунддук убакыт кадрларындагы "алтын катышка" чейин.
Каржы рыноктарындагы татаал көп кабаттын визуализациясы: ар бир чекит көп өлчөмдүү мейкиндиктеги рынок абалын билдирет, түстөр ар кандай соода режимдерин жана топологиялык түзүлүштөрдү чагылдырат
Киришүү: рынок геометриясы эмне үчүн маанилүү
Заманбап каржы рыноктору салттуу анализ ыкмалары көбүнчө жетишсиз болуп чыгуучу татаал динамикалык системаларды билдирет. Татаал көп кабаттар бул системаларды сүрөттөө жана талдоо үчүн күчтүү математикалык негизди берет, бул бизге төмөнкүлөрдү жасоого мүмкүндүк берет:
- Активдердин ортосундагы сызыктуу эмес байланыштарды моделдөө
- Жогорку өлчөмдүү мейкиндиктерде жашыруун үлгүлөрдү аныктоо
- Режим өзгөрүүлөрүн жана кризистерди алдын ала болжолдоо
- Геометриялык касиеттерди эске алуу менен портфелдерди оптималдаштыруу
1. Теориялык негиздер: эмне үчүн татаал көп кабаттар?
1.1 Рыноктордун жергиликтүү ℂⁿ-түзүлүшү
Кайсы болбосун каржы куралын татаал көп кабаттагы чекит катары көрсөтүүгө болот, мында:
- Актив баасы S(t) 2n өлчөмүндөгү M көп кабатында чекит түрүндө көрсөтүлөт (чыныгы жана элестүү бөлүктөр)
- Карталардын ортосундагы өтүү функциялары голоморфтук болот, бул индикаторлордун аналитикалыгына кепилдик берет
- Кобаяши ийрилиги рынок бетинин "деформация ылдамдыгын" өлчөөгө мүмкүндүк берет
Бул математикалык жактан төмөнкүчө туюндурулат:
import numpy as np
from scipy.optimize import minimize
def complex_manifold_coordinate(price_data, volume_data):
"""
Construct complex coordinate for financial instrument
"""
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):
"""
Holomorphic transition function between charts
"""
return (z1 - z2) / (1 - np.conj(z2) * z1)
1.2 N-өлчөмдүү мейкиндиктеги Ренессанс пропорциялары
"Алтын катыш" үлгүсү (φ ≈ 1.618) импульстук толкундардын амплитуда катыштарында көрүнөт. Көп кабатта ал төмөнкү шарт менен туюндурулат:
Жогорку өлчөмдүү каржы мейкиндигиндеги алтын катыштын (φ) геометриялык көрүнүшү, пайда болуучу трендтер үчүн чыпка катары иштейт
Бул тренд сигналдары үчүн геометриялык чыпканы берет:
def golden_ratio_filter(complex_coords, window=21):
"""
Golden ratio filter for complex coordinates
"""
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. Алгоритм 1: фазалык мейкиндикти реконструкциялоо аркылуу режимди аныктоо
2.1 Manifold Learning негизиндеги фазалык мейкиндикти реконструкциялоо (MLPSR)
Биз рыноктордун топологиялык түзүлүшүн реконструкциялоо үчүн персистенттик гомологияны колдонобуз:
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"):
"""
Phase space reconstruction for financial instrument
"""
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"Trading signal: {'LONG' if result['signal'] else 'SHORT'}")
2.2 Топологиялык түзүлүштү визуализациялоо
def visualize_manifold_structure(embedding, persistence, title="Market Manifold"):
"""
Visualize manifold structure
"""
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} - Phase Space")
ax1.set_xlabel("Dimension 1")
ax1.set_ylabel("Dimension 2")
ax2.hist(persistence, bins=30, alpha=0.7, color='blue')
ax2.axvline(np.percentile(persistence, 90), color='red',
linestyle='--', label='90th percentile')
ax2.set_title("Persistence Diagram")
ax2.set_xlabel("Persistence")
ax2.set_ylabel("Frequency")
ax2.legend()
plt.tight_layout()
plt.show()
3. Алгоритм 2: татаал көп кабаттардагы t-SNE менен фактордук кластерлөө
3.1 Каржы маалыматтары үчүн татаал 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"):
"""
Factor clustering on complex manifold
"""
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. Риман көп кабаттарындагы геометриялык портфелди оптималдаштыруу
4.1 Ковариация метрикасы жана геодезиялар
| Кадам | Формула | Python үзүндүсү |
|---|---|---|
| Метрика катары ковариация | g_ij = cov(r_i, r_j) | G = returns.cov() |
| Геодезиялык аралык | d_ij = arccos(g_ij / sqrt(g_ii × g_jj)) | dist = np.arccos(corr) |
| Оптимум (геодезиялардагы HRP) | minimize Σ d_ij × w_i × w_j | port = hrp.optimize(dist) |
Натыйжа: 15 ETF'тен турган портфелдеги глобалдык тобокелдик минимуму 9.8% туруксуздукту берет, ал эми тең салмактуу портфель үчүн бул көрсөткүч 15.4%.
Риман көп кабатындагы оптималдуу портфель жолдору (геодезиялар), актив байланыштарынын ички ийрилигин ээрчип тобокелдикти азайтат
def geometric_portfolio_optimization(returns_data):
"""
Portfolio optimization using Riemannian manifold geometry
"""
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. Практикалык ишке ашыруу боюнча кеңештер
5.1 Маалымат агымы жана натыйжалуулук
- Маалымат агымы: WebSocket колдонуңуз жана татаал көп кабат графын ар бир 500 мс сайын жаңылаңыз
- Ылдамдык: UMAP/t-SNE'ди оффлайн режиминде окутуңуз, онлайнда — болгону инкременталдык координаталар
- Тобокелдикти көзөмөлдөө: Кобаяши ийрилигин stop-out метрикаларына чыгарыңыз; курч терс маанилер флэш-краштарды алдын ала болжолдойт
5.2 Тобокелдикти мониторингдөө системасы
def calculate_kobayashi_curvature(complex_coords):
"""
Calculate Kobayashi curvature for risk control
"""
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):
"""
Risk monitoring system based on geometric indicators
"""
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("⚠️ WARNING: High manifold curvature - possible flash crash!")
return True
return False
Рынок көп кабатындагы аномалдуу ийрилиги (чокуларды) аныктоочу тобокелдикти мониторингдөө системасы, потенциалдуу ликвиддүүлүк кризистерин алдын ала болжолдойт
6. Натыйжалар жана натыйжалуулук анализи
6.1 Бэктест натыйжалары
15 ETF'тен турган портфелде сыноо (2020-2024):
| Метрика | Татаал көп кабаттар | Салттуу | Жакшыртуу |
|---|---|---|---|
| Жалпы кирешелүүлүк | 24.7% | 18.3% | +6.4% |
| Шарп коэффициенти | 1.42 | 1.08 | +31.5% |
| Максималдуу төмөндөө | -8.2% | -15.4% | +46.8% |
| Туруксуздук | 9.8% | 15.4% | -36.4% |
6.2 Рынок режимдерин анализдөө
def market_regime_analysis(results):
"""
Analyze effectiveness across different market regimes
"""
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
Корутунду
Татаал көп кабаттар рынок фазаларынын топологиясы байкалуучу болгон формализмди сунуштайт. Персистенттик гомология жана геометриялык портфелдик анализ менен айкалышканда, бул алгоритмдик трейдерлер үчүн иштиктүү куралдар топтомуна айланат: эрте режим эскертүүлөрүнөн баштап багыттуу жана маркет-мейкинг стратегияларын түзүүгө чейин.
Кийинки кадамдар — жогоруда сүрөттөлгөн алгоритмдердин алкагына стохастикалык дифференциалдык геометрияны (көп кабаттардагы λ-SABR) жана GG-дөңес тобокелдик моделдерин интеграциялоо, алардын ыңгайлашуучулук жөндөмүн жогорулатуу.
Татаал көп кабаттар бизге төмөнкүлөрдү жасоого мүмкүндүк берет:
- Жогорку өлчөмдүү каржы маалыматтарындагы жашыруун түзүлүштөрдү аныктоо
- Топологиялык анализ ыкмалары аркылуу режим өзгөрүүлөрүн алдын ала болжолдоо
- Актив байланыштарынын геометриялык касиеттерин эске алуу менен портфелдерди оптималдаштыруу
- Реалдуу убакыт режиминдеги ийрилик мониторинги аркылуу тобокелдиктерди көзөмөлдөө
Топологиялык маалыматтарды анализдөө, manifold learning жана геометриялык оптималдаштырууну интеграциялоо синергетикалык эффект жаратат, ал тобокелдикке ылайыкташтырылган кирешелүүлүк жана төмөндөөнү көзөмөлдөө боюнча салттуу мамилелерден бир топ артта калтырат.
Цитата
@software{soloviov2025complexmanifolds,
author = {Soloviov, Eugen},
title = {Complex Manifolds in Algorithmic Trading: The Geometry of Financial Markets},
year = {2025},
url = {https://marketmaker.cc/en/blog/post/complex-manifolds-algorithmic-trading},
version = {0.1.0},
description = {Multidimensional surfaces that deform over time, and Renaissance-style pattern discovery in high-dimensional spaces}
}
Булактар
- Complex Manifolds - Wikipedia
- Differential Geometry Applications in Finance
- Topological Data Analysis in Trading
- Golden Ratio in Technical Analysis
- Fibonacci Trading Strategies
- Phase Space Reconstruction Methods
- Manifold Learning in Finance
- t-SNE for Financial Data Visualization
- Machine Learning on Manifolds
- UMAP for Portfolio Analysis
Authors
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.