Ypeng12 commited on
Commit
ea751a9
·
1 Parent(s): b3580c7

Update navigation labels to English and promote L1 tab

Browse files
frontend/dist/assets/{index-DSQyHgkN.js → index-BtJJee0_.js} RENAMED
The diff for this file is too large to render. See raw diff
 
frontend/dist/index.html CHANGED
@@ -5,7 +5,7 @@
5
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
  <title>Quant.ai</title>
8
- <script type="module" crossorigin src="/assets/index-DSQyHgkN.js"></script>
9
  <link rel="stylesheet" crossorigin href="/assets/index-C6LyAu7c.css">
10
  </head>
11
  <body>
 
5
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
  <title>Quant.ai</title>
8
+ <script type="module" crossorigin src="/assets/index-BtJJee0_.js"></script>
9
  <link rel="stylesheet" crossorigin href="/assets/index-C6LyAu7c.css">
10
  </head>
11
  <body>
frontend/src/App.tsx CHANGED
@@ -636,7 +636,7 @@ function App() {
636
  transition: 'all 0.2s ease'
637
  }}
638
  >
639
- 🚀 实时 Alpha
640
  </button>
641
 
642
  <button
@@ -654,7 +654,7 @@ function App() {
654
  transition: 'all 0.2s ease'
655
  }}
656
  >
657
- 🤖 ML 诊断
658
  </button>
659
 
660
  <button
@@ -672,7 +672,7 @@ function App() {
672
  transition: 'all 0.2s ease'
673
  }}
674
  >
675
- ⚡ 账户与交易
676
  </button>
677
 
678
  <button
@@ -690,7 +690,25 @@ function App() {
690
  transition: 'all 0.2s ease'
691
  }}
692
  >
693
- 🎬 每日成交复盘
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
694
  </button>
695
 
696
  <button
@@ -708,12 +726,12 @@ function App() {
708
  transition: 'all 0.2s ease'
709
  }}
710
  >
711
- 🔬 Alpha 研究
712
  </button>
713
 
714
  {/* Optional Advanced Tools */}
715
- <select aria-label="更多研究工具"
716
- value={['broker', 'portfolio', 'replay', 'trade_comparison', 'institutional', 'live_dashboard', 'ml_assistant'].includes(activeTab) ? '' : activeTab}
717
  onChange={(e) => {
718
  if (e.target.value) setActiveTab(e.target.value as ActiveTab);
719
  }}
@@ -727,13 +745,12 @@ function App() {
727
  cursor: 'pointer'
728
  }}
729
  >
730
- <option value="" disabled style={{ background: '#111', color: '#888' }}>⚙️ 更多工具</option>
731
- <option value="saggese_wave" style={{ background: '#111', color: '#fff' }}>🌊 代理指标 / L1 数据状态</option>
732
- <option value="dashboard" style={{ background: '#111', color: '#fff' }}>📊 策略回测仪表盘</option>
733
- <option value="report" style={{ background: '#111', color: '#fff' }}>📖 深度量化报告</option>
734
- <option value="research" style={{ background: '#111', color: '#fff' }}>🤖 AI 策略助手</option>
735
- <option value="walkforward" style={{ background: '#111', color: '#fff' }}>🔄 Walk-Forward 滚动验证</option>
736
- <option value="experiments" style={{ background: '#111', color: '#fff' }}>🧪 策略实验对比</option>
737
  </select>
738
  </div>
739
 
 
636
  transition: 'all 0.2s ease'
637
  }}
638
  >
639
+ 🚀 Live Alpha
640
  </button>
641
 
642
  <button
 
654
  transition: 'all 0.2s ease'
655
  }}
656
  >
657
+ 🤖 ML Diagnostics
658
  </button>
659
 
660
  <button
 
672
  transition: 'all 0.2s ease'
673
  }}
674
  >
675
+ ⚡ Account & Trading
676
  </button>
677
 
678
  <button
 
690
  transition: 'all 0.2s ease'
691
  }}
692
  >
693
+ 🎬 Daily Trade Replay
694
+ </button>
695
+
696
+ <button
697
+ className={`nav-tab ${activeTab === 'saggese_wave' ? 'active' : ''}`}
698
+ onClick={() => setActiveTab('saggese_wave')}
699
+ style={{
700
+ padding: '8px 18px',
701
+ fontSize: '0.9rem',
702
+ fontWeight: 800,
703
+ background: activeTab === 'saggese_wave' ? 'linear-gradient(135deg, #06b6d4, #0891b2)' : 'transparent',
704
+ color: '#ffffff',
705
+ borderRadius: '6px',
706
+ border: activeTab === 'saggese_wave' ? 'none' : '1px solid rgba(6, 182, 212, 0.4)',
707
+ cursor: 'pointer',
708
+ transition: 'all 0.2s ease'
709
+ }}
710
+ >
711
+ 🌊 L1 Data Status
712
  </button>
713
 
714
  <button
 
726
  transition: 'all 0.2s ease'
727
  }}
728
  >
729
+ 🔬 Alpha Research
730
  </button>
731
 
732
  {/* Optional Advanced Tools */}
733
+ <select aria-label="More Tools"
734
+ value={['broker', 'portfolio', 'replay', 'trade_comparison', 'institutional', 'saggese_wave', 'live_dashboard', 'ml_assistant'].includes(activeTab) ? '' : activeTab}
735
  onChange={(e) => {
736
  if (e.target.value) setActiveTab(e.target.value as ActiveTab);
737
  }}
 
745
  cursor: 'pointer'
746
  }}
747
  >
748
+ <option value="" disabled style={{ background: '#111', color: '#888' }}>⚙️ More Tools</option>
749
+ <option value="dashboard" style={{ background: '#111', color: '#fff' }}>📊 Backtest Dashboard</option>
750
+ <option value="report" style={{ background: '#111', color: '#fff' }}>📖 Quant Reports</option>
751
+ <option value="research" style={{ background: '#111', color: '#fff' }}>🤖 AI Strategy Assistant</option>
752
+ <option value="walkforward" style={{ background: '#111', color: '#fff' }}>🔄 Walk-Forward Validation</option>
753
+ <option value="experiments" style={{ background: '#111', color: '#fff' }}>🧪 Experiment Comparison</option>
 
754
  </select>
755
  </div>
756
 
frontend/src/components/BrokerPanel.tsx CHANGED
@@ -714,7 +714,7 @@ export function BrokerPanel({ watchlist = [] }: BrokerPanelProps) {
714
  <div style={{ display: 'flex', flexWrap: 'wrap', gap: '8px', marginBottom: '1rem', borderBottom: '1px solid var(--color-border)', paddingBottom: '10px' }}>
715
  {([
716
  { id: 'analysis', label: '🧠 AI Live Analysis & Alerts' },
717
- { id: 'wave', label: '🌊 代理指标 / L1 数据状态 · Proxy Indicators / L1 Data Status' },
718
  { id: 'portfolio', label: '📈 Portfolio History' },
719
  { id: 'actions', label: '⚡ Execution Activity' },
720
  { id: 'history', label: '📅 Trade History' },
 
714
  <div style={{ display: 'flex', flexWrap: 'wrap', gap: '8px', marginBottom: '1rem', borderBottom: '1px solid var(--color-border)', paddingBottom: '10px' }}>
715
  {([
716
  { id: 'analysis', label: '🧠 AI Live Analysis & Alerts' },
717
+ { id: 'wave', label: '🌊 L1 Data Status' },
718
  { id: 'portfolio', label: '📈 Portfolio History' },
719
  { id: 'actions', label: '⚡ Execution Activity' },
720
  { id: 'history', label: '📅 Trade History' },
frontend/src/components/InstitutionalPanel.tsx CHANGED
@@ -140,7 +140,7 @@ export const InstitutionalPanel: React.FC = () => {
140
  : 'bg-slate-800 text-slate-400 hover:text-white'
141
  }`}
142
  >
143
- ⚡ C++20 引擎与 ITCH 5.0 微观结构大屏
144
  </button>
145
 
146
  <button
@@ -151,7 +151,7 @@ export const InstitutionalPanel: React.FC = () => {
151
  : 'bg-slate-800 text-slate-400 hover:text-white'
152
  }`}
153
  >
154
- 🧠 机器学习全景几何实验室 (ML Visual Lab)
155
  </button>
156
 
157
  <button
@@ -162,7 +162,7 @@ export const InstitutionalPanel: React.FC = () => {
162
  : 'bg-slate-800 text-slate-400 hover:text-white'
163
  }`}
164
  >
165
- 🏛️ Quant.ai 两级自适应 ML 动态诊断 Tab
166
  </button>
167
 
168
  <button
@@ -173,7 +173,7 @@ export const InstitutionalPanel: React.FC = () => {
173
  : 'bg-slate-800 text-slate-400 hover:text-white'
174
  }`}
175
  >
176
- 🔬 样本外 Alpha 验证 (Out-of-Sample Alpha Lab)
177
  </button>
178
 
179
  <button
@@ -184,7 +184,7 @@ export const InstitutionalPanel: React.FC = () => {
184
  : 'bg-slate-800 text-slate-400 hover:text-white'
185
  }`}
186
  >
187
- 📈 最优算法执行 (Almgren-Chriss Model)
188
  </button>
189
 
190
  <button
@@ -195,7 +195,7 @@ export const InstitutionalPanel: React.FC = () => {
195
  : 'bg-slate-800 text-slate-400 hover:text-white'
196
  }`}
197
  >
198
- ⚖️ 协整与统计套利 (StatArb OU)
199
  </button>
200
 
201
  <button
@@ -206,7 +206,7 @@ export const InstitutionalPanel: React.FC = () => {
206
  : 'bg-slate-800 text-slate-400 hover:text-white'
207
  }`}
208
  >
209
- 🛡️ 风险平价组合 (Risk Parity ERC)
210
  </button>
211
 
212
  <button
@@ -217,7 +217,7 @@ export const InstitutionalPanel: React.FC = () => {
217
  : 'bg-slate-800 text-slate-400 hover:text-white'
218
  }`}
219
  >
220
- 🔬 夏普比率过拟合审计 (Deflated Sharpe Ratio)
221
  </button>
222
 
223
  <button
@@ -228,7 +228,7 @@ export const InstitutionalPanel: React.FC = () => {
228
  : 'bg-slate-800 text-slate-400 hover:text-white'
229
  }`}
230
  >
231
- ⚡ C++ 内存性能分析 (Memory Profiler)
232
  </button>
233
 
234
  <button
@@ -239,7 +239,7 @@ export const InstitutionalPanel: React.FC = () => {
239
  : 'bg-slate-800 text-slate-400 hover:text-white'
240
  }`}
241
  >
242
- 📊 订单流不平衡度 (Order Flow Imbalance)
243
  </button>
244
 
245
  <button
@@ -250,7 +250,7 @@ export const InstitutionalPanel: React.FC = () => {
250
  : 'bg-slate-800 text-slate-400 hover:text-white'
251
  }`}
252
  >
253
- 🌐 多资产组合回测 (Multi-Asset Universe)
254
  </button>
255
  </div>
256
 
 
140
  : 'bg-slate-800 text-slate-400 hover:text-white'
141
  }`}
142
  >
143
+ ⚡ C++20 Engine & ITCH 5.0
144
  </button>
145
 
146
  <button
 
151
  : 'bg-slate-800 text-slate-400 hover:text-white'
152
  }`}
153
  >
154
+ 🧠 ML Visual Lab
155
  </button>
156
 
157
  <button
 
162
  : 'bg-slate-800 text-slate-400 hover:text-white'
163
  }`}
164
  >
165
+ 🏛️ Two-Stage Adaptive ML
166
  </button>
167
 
168
  <button
 
173
  : 'bg-slate-800 text-slate-400 hover:text-white'
174
  }`}
175
  >
176
+ 🔬 Out-of-Sample Alpha Lab
177
  </button>
178
 
179
  <button
 
184
  : 'bg-slate-800 text-slate-400 hover:text-white'
185
  }`}
186
  >
187
+ 📈 Optimal Execution (Almgren–Chriss)
188
  </button>
189
 
190
  <button
 
195
  : 'bg-slate-800 text-slate-400 hover:text-white'
196
  }`}
197
  >
198
+ ⚖️ Cointegration & Statistical Arbitrage
199
  </button>
200
 
201
  <button
 
206
  : 'bg-slate-800 text-slate-400 hover:text-white'
207
  }`}
208
  >
209
+ 🛡️ Risk Parity (ERC)
210
  </button>
211
 
212
  <button
 
217
  : 'bg-slate-800 text-slate-400 hover:text-white'
218
  }`}
219
  >
220
+ 🔬 Deflated Sharpe Ratio
221
  </button>
222
 
223
  <button
 
228
  : 'bg-slate-800 text-slate-400 hover:text-white'
229
  }`}
230
  >
231
+ ⚡ C++ Memory Profiler
232
  </button>
233
 
234
  <button
 
239
  : 'bg-slate-800 text-slate-400 hover:text-white'
240
  }`}
241
  >
242
+ 📊 Order Flow Imbalance
243
  </button>
244
 
245
  <button
 
250
  : 'bg-slate-800 text-slate-400 hover:text-white'
251
  }`}
252
  >
253
+ 🌐 Multi-Asset Backtesting
254
  </button>
255
  </div>
256
 
frontend/src/components/IntradayKlineChart.tsx CHANGED
@@ -536,7 +536,7 @@ export const IntradayKlineChart: React.FC<IntradayKlineChartProps> = ({ ticker:
536
  color: viewMode === 'robinhood' ? '#00c805' : '#94a3b8'
537
  }}
538
  >
539
- 📈 曲线走势 (Robinhood)
540
  </button>
541
  <button
542
  onClick={() => setViewMode('kline')}
@@ -551,7 +551,7 @@ export const IntradayKlineChart: React.FC<IntradayKlineChartProps> = ({ ticker:
551
  color: viewMode === 'kline' ? '#38bdf8' : '#94a3b8'
552
  }}
553
  >
554
- 🕯️ 专业蜡烛K线 (OHLC)
555
  </button>
556
  </div>
557
 
 
536
  color: viewMode === 'robinhood' ? '#00c805' : '#94a3b8'
537
  }}
538
  >
539
+ 📈 Price Curve
540
  </button>
541
  <button
542
  onClick={() => setViewMode('kline')}
 
551
  color: viewMode === 'kline' ? '#38bdf8' : '#94a3b8'
552
  }}
553
  >
554
+ 🕯️ Candlesticks (OHLC)
555
  </button>
556
  </div>
557
 
frontend/src/components/MLAssistantPanel.tsx CHANGED
@@ -79,7 +79,7 @@ export const MLAssistantPanel: React.FC<{ activeTicker: string }> = ({ activeTic
79
  color: '#fff'
80
  }}
81
  >
82
- ⚡ Day Trading 模式 (15m)
83
  </button>
84
  <button
85
  onClick={() => setHorizonMode('swing')}
@@ -94,7 +94,7 @@ export const MLAssistantPanel: React.FC<{ activeTicker: string }> = ({ activeTic
94
  color: '#fff'
95
  }}
96
  >
97
- 📈 趋势投资模式 (1日)
98
  </button>
99
  </div>
100
  </div>
 
79
  color: '#fff'
80
  }}
81
  >
82
+ ⚡ Day Trading (15m)
83
  </button>
84
  <button
85
  onClick={() => setHorizonMode('swing')}
 
94
  color: '#fff'
95
  }}
96
  >
97
+ 📈 Swing Trading (1d)
98
  </button>
99
  </div>
100
  </div>
frontend/src/components/MLDynamicVisualizationDashboard.tsx CHANGED
@@ -63,7 +63,7 @@ export const MLDynamicVisualizationDashboard: React.FC = () => {
63
  color: activeTab === 'two_stage' ? '#fff' : '#94a3b8'
64
  }}
65
  >
66
- 🏛️ 两级自适应 ML 动态诊断 Tab
67
  </button>
68
  <button
69
  onClick={() => setActiveTab('overview')}
@@ -78,7 +78,7 @@ export const MLDynamicVisualizationDashboard: React.FC = () => {
78
  color: activeTab === 'overview' ? '#fff' : '#94a3b8'
79
  }}
80
  >
81
- 🤖 全量 LightGBM 胜率与特征重要性
82
  </button>
83
  </div>
84
 
 
63
  color: activeTab === 'two_stage' ? '#fff' : '#94a3b8'
64
  }}
65
  >
66
+ 🏛️ Two-Stage Adaptive ML
67
  </button>
68
  <button
69
  onClick={() => setActiveTab('overview')}
 
78
  color: activeTab === 'overview' ? '#fff' : '#94a3b8'
79
  }}
80
  >
81
+ 🤖 LightGBM Probabilities & Feature Importance
82
  </button>
83
  </div>
84
 
frontend/src/components/PaperAlphaDashboard.tsx CHANGED
@@ -533,10 +533,10 @@ export const PaperAlphaDashboard: React.FC = () => {
533
  {/* Navigation Sub-Tabs */}
534
  <div style={{ display: 'flex', gap: '10px', borderBottom: '1px solid rgba(255,255,255,0.1)', paddingBottom: '12px', marginBottom: '20px' }}>
535
  {[
536
- { id: 'matrix', label: '📊 31 列量价与截面因子矩阵', badge: '31' },
537
- { id: 'microstructure', label: '🌊 真实 L1 订单流与 Stoikov 微观模型', badge: 'OFI & Microprice' },
538
- { id: 'models', label: '🤖 多模型训练与特征重要性 (Ridge · Tree · LightGBM)', badge: 'Zoo' },
539
- { id: 'audit', label: '📑 学术论文源与特征规范审计', badge: 'Audited' },
540
  ].map(tab => (
541
  <button
542
  key={tab.id}
 
533
  {/* Navigation Sub-Tabs */}
534
  <div style={{ display: 'flex', gap: '10px', borderBottom: '1px solid rgba(255,255,255,0.1)', paddingBottom: '12px', marginBottom: '20px' }}>
535
  {[
536
+ { id: 'matrix', label: '📊 Price-Volume & Cross-Sectional Factors', badge: '31' },
537
+ { id: 'microstructure', label: '🌊 L1 Order Flow & Stoikov Models', badge: 'OFI & Microprice' },
538
+ { id: 'models', label: '🤖 Model Training & Feature Importance', badge: 'Zoo' },
539
+ { id: 'audit', label: '📑 Research Sources & Feature Audit', badge: 'Audited' },
540
  ].map(tab => (
541
  <button
542
  key={tab.id}
frontend/src/components/ResearchReportPanel.tsx CHANGED
@@ -409,13 +409,13 @@ export const ResearchReportPanel: React.FC<ResearchReportPanelProps> = ({ onAppl
409
  className={`tab-btn ${comparisonMarket === 'US' ? 'active' : ''}`}
410
  onClick={() => setComparisonMarket('US')}
411
  >
412
- 🇺🇸 美股规则 (US Equities)
413
  </button>
414
  <button
415
  className={`tab-btn ${comparisonMarket === 'A' ? 'active' : ''}`}
416
  onClick={() => setComparisonMarket('A')}
417
  >
418
- 🇨🇳 A股规则 (China A-Shares)
419
  </button>
420
  </div>
421
 
 
409
  className={`tab-btn ${comparisonMarket === 'US' ? 'active' : ''}`}
410
  onClick={() => setComparisonMarket('US')}
411
  >
412
+ 🇺🇸 US Equities
413
  </button>
414
  <button
415
  className={`tab-btn ${comparisonMarket === 'A' ? 'active' : ''}`}
416
  onClick={() => setComparisonMarket('A')}
417
  >
418
+ 🇨🇳 China A-Shares
419
  </button>
420
  </div>
421
 
frontend/src/components/TradeComparisonPanel.tsx CHANGED
@@ -84,7 +84,7 @@ export function TradeComparisonPanel({ watchlist, activeTicker, onSelectTicker }
84
  </div>
85
  <div style={{ padding: '16px' }}>
86
  <div style={{ display: 'flex', gap: 8, marginBottom: 12 }}>
87
- {([{ value: 'price', label: '📈 价格线 · 买卖点 · 持仓与盈亏' }, { value: 'classic', label: '📊 经典规则轨迹与 K 线' }] as const).map(view => <button
88
  key={view.value} onClick={() => setChartView(view.value)} aria-pressed={chartView === view.value}
89
  style={{ padding: '8px 12px', borderRadius: 7, border: `1px solid ${chartView === view.value ? '#288bb1' : '#2b394d'}`, background: chartView === view.value ? '#12364c' : '#121d2b', color: chartView === view.value ? '#7dd3fc' : '#94a3b8', fontWeight: 700, cursor: 'pointer' }}
90
  >{view.label}</button>)}
 
84
  </div>
85
  <div style={{ padding: '16px' }}>
86
  <div style={{ display: 'flex', gap: 8, marginBottom: 12 }}>
87
+ {([{ value: 'price', label: '📈 Price, Trades & P&L' }, { value: 'classic', label: '📊 Rule Signals & Candlesticks' }] as const).map(view => <button
88
  key={view.value} onClick={() => setChartView(view.value)} aria-pressed={chartView === view.value}
89
  style={{ padding: '8px 12px', borderRadius: 7, border: `1px solid ${chartView === view.value ? '#288bb1' : '#2b394d'}`, background: chartView === view.value ? '#12364c' : '#121d2b', color: chartView === view.value ? '#7dd3fc' : '#94a3b8', fontWeight: 700, cursor: 'pointer' }}
90
  >{view.label}</button>)}