Files
Toolbox/public/tools/markets/wallstreet_wisdom - 做第三个页签之前.html
T
yangxiangyuan 5fb62f7900 chore: add大量静态资源文件
新增了图标、背景图、验证码素材以及音频素材等大量静态资源文件
2026-07-08 10:49:14 +08:00

935 lines
54 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,700;1,400&family=Noto+Serif+SC:wght@400;600&family=Courier+Prime:ital@0;1&display=swap');
:root {
--gold: #C9A84C;
--gold-light: #E8D5A3;
--gold-dim: rgba(201,168,76,0.15);
--dark: #0D0D0D;
--dark2: #161616;
--dark3: #1E1E1E;
--text: #F0EDE6;
--text-dim: #9A9080;
--text-faint: rgba(240,237,230,0.35);
--red: #C0392B;
--green: #1D9E75;
--blue: #2E6DA4;
--zh-font: "Microsoft YaHei", "PingFang SC", "Hiragino Sans GB", "Heiti SC", sans-serif;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
background: var(--dark);
color: var(--text);
font-family: 'Noto Serif SC', serif;
min-height: 100vh;
padding: 0;
overflow-x: hidden;
}
/* ── TOP NAV ── */
.top-nav {
display: flex;
align-items: flex-end;
gap: 0;
padding: 28px 24px 0;
border-bottom: 0.5px solid rgba(201,168,76,0.2);
position: relative;
}
.top-nav::before {
content: '华尔街智慧手册';
position: absolute;
top: 14px; left: 24px;
font-family: 'Courier Prime', monospace;
font-size: 12px;
letter-spacing: 0.25em;
color: rgba(201,168,76,0.35);
text-transform: uppercase;
}
.tab-btn {
background: transparent;
border: none;
border-bottom: none;
color: var(--text-dim);
font-family: 'Noto Serif SC', serif;
font-size: 15px;
padding: 10px 22px 12px;
cursor: pointer;
position: relative;
transition: color 0.25s;
letter-spacing: 0.05em;
white-space: nowrap;
}
.tab-btn::after {
content: '';
position: absolute;
bottom: -0.5px; left: 0; right: 0;
height: 1.5px;
background: var(--gold);
transform: scaleX(0);
transition: transform 0.3s ease;
}
.tab-btn.active {
color: var(--gold-light);
}
.tab-btn.active::after {
transform: scaleX(1);
}
.tab-btn:hover:not(.active) {
color: rgba(232,213,163,0.6);
}
/* ── PANELS ── */
.panel { display: none; }
.panel.active { display: block; }
/* ══════════════════════════════════
PANEL 1 — 盈利的代价
══════════════════════════════════ */
.p1-wrap {
padding: 32px 24px 40px;
max-width: 720px;
margin: 0 auto;
}
.p1-header {
text-align: center;
margin-bottom: 36px;
position: relative;
}
body::after {
content: '❝';
position: fixed;
top: 60px; left: 18px;
font-size: 70px;
color: rgba(201,168,76,0.04);
font-family: 'Playfair Display', serif;
pointer-events: none;
}
.week-strip {
display: flex;
align-items: center;
justify-content: center;
gap: 12px;
margin-bottom: 4px;
}
.wline { height: 0.5px; width: 48px; background: linear-gradient(to right, transparent, var(--gold)); }
.wline.r { background: linear-gradient(to left, transparent, var(--gold)); }
.wnum { font-family: 'Playfair Display', serif; font-size: 14px; color: var(--gold); letter-spacing: 0.18em; }
.quote-card {
background: var(--dark2);
border: 0.5px solid rgba(201,168,76,0.18);
border-radius: 2px;
padding: 40px 38px;
position: relative;
animation: cardIn 0.65s ease forwards;
}
/* side nav buttons */
.q-btn-side {
position: absolute;
top: 50%;
transform: translateY(-50%);
z-index: 2;
}
.q-btn-left { left: -60px; }
.q-btn-right { right: -60px; }
@keyframes cardIn {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
.quote-card::before { content: ''; position: absolute; top: 11px; left: 11px; width: 18px; height: 18px; border-top: 1px solid rgba(201,168,76,0.35); border-left: 1px solid rgba(201,168,76,0.35); }
.quote-card::after { content: ''; position: absolute; bottom: 11px; right: 11px; width: 18px; height: 18px; border-bottom: 1px solid rgba(201,168,76,0.35); border-right: 1px solid rgba(201,168,76,0.35); }
.q-theme {
font-family: 'Courier Prime', monospace;
font-size: 12px;
letter-spacing: 0.28em;
color: var(--gold);
opacity: 0.55;
text-transform: uppercase;
margin-bottom: 22px;
}
.q-en {
font-family: 'Playfair Display', serif;
font-style: italic;
font-size: 14px;
line-height: 1.75;
color: var(--gold-light);
margin-bottom: 14px;
}
.q-zh {
font-family: var(--zh-font);
font-size: 16px;
font-weight: 500;
line-height: 1.8;
color: var(--text);
margin-bottom: 8px;
}
.q-colloquial {
font-family: var(--zh-font);
font-size: 14px;
line-height: 1.7;
color: var(--text-dim);
margin-bottom: 20px;
}
.q-divider {
height: 0.5px;
background: linear-gradient(to right, transparent, rgba(201,168,76,0.28), transparent);
margin-bottom: 24px;
}
.q-attr {
display: flex;
align-items: flex-start;
gap: 13px;
margin-bottom: 24px;
}
.q-avatar {
width: 34px; height: 34px;
border-radius: 50%;
border: 1px solid rgba(201,168,76,0.28);
display: flex; align-items: center; justify-content: center;
font-family: 'Playfair Display', serif;
font-size: 15px;
color: var(--gold);
background: rgba(201,168,76,0.05);
flex-shrink: 0; margin-top: 2px;
}
.q-name { font-family: 'Playfair Display', serif; font-size: 16px; color: var(--text); margin-bottom: 3px; }
.q-title { font-family: 'Courier Prime', monospace; font-size: 12px; color: var(--text-dim); letter-spacing: 0.06em; }
.q-insight {
background: rgba(201,168,76,0.035);
border: 0.5px solid rgba(201,168,76,0.1);
border-radius: 1px;
padding: 14px 18px;
}
.q-insight-label {
font-family: 'Courier Prime', monospace;
font-size: 12px;
letter-spacing: 0.2em;
color: var(--gold);
opacity: 0.45;
text-transform: uppercase;
margin-bottom: 7px;
}
.q-insight-text {
font-family: var(--zh-font);
font-size: 15px;
line-height: 1.8;
color: var(--text-dim);
}
/* progress */
.prog-wrap { margin-top: 24px; }
.prog-bar-out { height: 1.5px; background: rgba(201,168,76,0.1); border-radius: 99px; margin-bottom: 7px; overflow: hidden; }
.prog-bar-in { height: 100%; background: linear-gradient(to right, #8B4513, var(--gold)); border-radius: 99px; transition: width 0.5s ease; }
.prog-text { font-family: 'Courier Prime', monospace; font-size: 12px; color: var(--text-dim); text-align: center; letter-spacing: 0.1em; }
/* nav buttons */
.q-nav {
display: flex;
justify-content: center;
gap: 10px;
margin-top: 22px;
}
.q-btn {
background: transparent;
border: 0.5px solid rgba(201,168,76,0.22);
color: var(--gold);
font-family: 'Courier Prime', monospace;
font-size: 12px;
letter-spacing: 0.1em;
padding: 8px 18px;
cursor: pointer;
transition: all 0.2s;
text-transform: uppercase;
}
.q-btn:hover:not(:disabled) { background: rgba(201,168,76,0.07); border-color: rgba(201,168,76,0.45); }
.q-btn.primary { background: rgba(201,168,76,0.08); border-color: rgba(201,168,76,0.35); }
.q-btn:disabled { opacity: 0.25; cursor: not-allowed; }
/* dots */
.week-dots {
display: flex;
justify-content: center;
gap: 4px;
margin-top: 14px;
flex-wrap: wrap;
max-width: 380px;
margin-left: auto;
margin-right: auto;
}
.dot {
width: 4px; height: 4px;
border-radius: 50%;
background: rgba(201,168,76,0.13);
cursor: pointer;
transition: all 0.2s;
}
.dot.active { background: var(--gold); transform: scale(1.5); }
.dot.visited { background: rgba(201,168,76,0.38); }
.footer-line {
text-align: center;
margin-top: 20px;
font-family: 'Courier Prime', monospace;
font-size: 12px;
color: rgba(160,152,128,0.3);
letter-spacing: 0.1em;
}
/* ══════════════════════════════════
PANEL 2 — 本金与子弹
══════════════════════════════════ */
.p2-wrap {
padding: 32px 24px 40px;
max-width: 720px;
margin: 0 auto;
}
.p2-intro {
text-align: center;
margin-bottom: 30px;
}
.p2-title {
font-family: 'Playfair Display', serif;
font-size: 26px;
color: var(--gold-light);
margin-bottom: 6px;
}
.p2-subtitle {
font-family: 'Courier Prime', monospace;
font-size: 12px;
letter-spacing: 0.2em;
color: var(--text-dim);
opacity: 0.6;
}
.p2-section {
margin-bottom: 10px;
border-radius: 2px;
border: 0.5px solid rgba(201,168,76,0.14);
background: var(--dark2);
overflow: hidden;
transition: border-color 0.2s;
}
.p2-section:hover { border-color: rgba(201,168,76,0.28); }
.p2-section-header {
display: flex;
align-items: center;
gap: 14px;
padding: 16px 20px;
cursor: pointer;
user-select: none;
}
.p2-icon {
width: 32px; height: 32px;
border-radius: 50%;
display: flex; align-items: center; justify-content: center;
font-size: 14px;
flex-shrink: 0;
border: 0.5px solid rgba(201,168,76,0.25);
background: rgba(201,168,76,0.06);
}
.p2-section-label {
font-family: 'Noto Serif SC', serif;
font-size: 16px;
color: var(--text);
flex: 1;
}
.p2-section-en {
font-family: 'Courier Prime', monospace;
font-size: 12px;
color: var(--gold);
opacity: 0.5;
letter-spacing: 0.15em;
margin-top: 2px;
}
.p2-chevron {
font-size: 12px;
color: var(--gold);
opacity: 0.4;
transition: transform 0.25s;
}
.p2-section.open .p2-chevron { transform: rotate(90deg); }
.p2-body {
display: none;
padding: 0 20px 20px;
border-top: 0.5px solid rgba(201,168,76,0.1);
}
.p2-section.open .p2-body { display: block; }
.p2-law {
display: flex;
align-items: flex-start;
gap: 14px;
padding: 14px 0;
border-bottom: 0.5px solid rgba(255,255,255,0.04);
}
.p2-law:last-child { border-bottom: none; }
.p2-law-num {
font-family: 'Playfair Display', serif;
font-size: 12px;
color: var(--gold);
opacity: 0.5;
flex-shrink: 0;
width: 20px;
margin-top: 2px;
}
.p2-law-content { flex: 1; }
.p2-law-title {
font-family: var(--zh-font);
font-size: 16px;
color: var(--text);
margin-bottom: 4px;
font-weight: 600;
}
.p2-law-body {
font-family: var(--zh-font);
font-size: 15px;
line-height: 1.85;
color: var(--text-dim);
}
.p2-law-quote {
margin-top: 8px;
padding: 8px 12px;
background: rgba(201,168,76,0.04);
border-left: 1.5px solid rgba(201,168,76,0.25);
font-family: 'Playfair Display', serif;
font-style: italic;
font-size: 14px;
color: rgba(232,213,163,0.7);
line-height: 1.7;
}
.p2-law-tag {
display: inline-block;
margin-top: 8px;
font-family: 'Courier Prime', monospace;
font-size: 12px;
letter-spacing: 0.12em;
padding: 2px 8px;
border-radius: 99px;
border: 0.5px solid rgba(201,168,76,0.2);
color: var(--gold);
opacity: 0.6;
text-transform: uppercase;
}
/* core formula */
.p2-formula {
margin: 20px 0 10px;
background: rgba(201,168,76,0.04);
border: 0.5px solid rgba(201,168,76,0.18);
border-radius: 2px;
padding: 18px 22px;
text-align: center;
}
.p2-formula-label {
font-family: 'Courier Prime', monospace;
font-size: 12px;
letter-spacing: 0.22em;
color: var(--gold);
opacity: 0.45;
text-transform: uppercase;
margin-bottom: 10px;
}
.p2-formula-eq {
font-family: 'Playfair Display', serif;
font-size: 18px;
color: var(--gold-light);
line-height: 1.8;
}
.p2-formula-sub {
font-size: 13px;
color: var(--text-dim);
margin-top: 8px;
line-height: 1.7;
}
</style>
</head>
<body>
<!-- TOP NAVIGATION -->
<div class="top-nav">
<button class="tab-btn active" onclick="switchTab(0, this)">盈利的代价</button>
<button class="tab-btn" onclick="switchTab(1, this)">本金与子弹</button>
</div>
<!-- ══ PANEL 1 ══ -->
<div class="panel active" id="panel0">
<div class="p1-wrap">
<div class="p1-header">
<div class="week-strip">
<div class="wline"></div>
<div class="wnum" id="weekNum">WEEK 1</div>
<div class="wline r"></div>
</div>
</div>
<div class="quote-card" id="quoteCard">
<button class="q-btn q-btn-side q-btn-left" id="prevBtn" onclick="changeWeek(-1)">← 上一周</button>
<button class="q-btn q-btn-side q-btn-right" id="nextBtn" onclick="changeWeek(1)">下一周 →</button>
<div class="q-theme" id="qTheme"></div>
<div class="q-zh" id="qZh"></div>
<div class="q-colloquial" id="qColloquial"></div>
<div class="q-en" id="qEn"></div>
<div class="q-divider"></div>
<div class="q-attr">
<div class="q-avatar" id="qAvatar"></div>
<div>
<div class="q-name" id="qName"></div>
<div class="q-title" id="qTitle"></div>
</div>
</div>
<div class="q-insight">
<div class="q-insight-label">对你的意义</div>
<div class="q-insight-text" id="qInsight"></div>
</div>
</div>
<div class="prog-wrap">
<div class="prog-bar-out"><div class="prog-bar-in" id="progBar"></div></div>
<div class="prog-text" id="progText"></div>
</div>
<div class="q-nav">
<button class="q-btn primary" onclick="goNow()">本周</button>
</div>
<div class="week-dots" id="weekDots"></div>
<div class="footer-line">每周一句 · 慢慢改变 · 长期复利</div>
</div>
</div>
<!-- ══ PANEL 2 ══ -->
<div class="panel" id="panel1">
<div class="p2-wrap">
<div class="p2-intro">
<div class="p2-title">本金与子弹</div>
<div class="p2-subtitle">Cash · Dry Powder · Expected Value · Capital Allocation</div>
</div>
<div class="p2-formula">
<div class="p2-formula-label">核心公式 · The Core Equation</div>
<div class="p2-formula-eq">
长期财富 = 本金安全 × 子弹效率 × 等待耐心
</div>
<div class="p2-formula-sub">
三项任何一项为零,结果归零。<br>
三项同时最大化,才能实现非对称的长期复利。
</div>
</div>
<!-- Section 1 -->
<div class="p2-section open" id="s0">
<div class="p2-section-header" onclick="toggleSection(0)">
<div class="p2-icon"></div>
<div>
<div class="p2-section-label">现金仓的本质</div>
<div class="p2-section-en">Cash is not zero. Cash is an option.</div>
</div>
<div class="p2-chevron">▶</div>
</div>
<div class="p2-body">
<div class="p2-law">
<div class="p2-law-num">01</div>
<div class="p2-law-content">
<div class="p2-law-title">现金不是零收益,是一张永不过期的期权</div>
<div class="p2-law-body">持有现金意味着你拥有在任意时刻、以任意价格买入任意资产的权利。这张期权没有行权成本,没有到期日,只有一个代价:你在等待期间的机会成本。</div>
<div class="p2-law-quote">"Cash combined with courage in a crisis is priceless." — Buffett</div>
<div class="p2-law-tag">期权价值理论</div>
</div>
</div>
<div class="p2-law">
<div class="p2-law-num">02</div>
<div class="p2-law-content">
<div class="p2-law-title">现金仓的三层结构</div>
<div class="p2-law-body">第一层:随时可用,应对闪崩(24小时内出手)。第二层:短期备用,应对政策/加息窗口(1~30天)。第三层:永久Dry Powder,永远不挂单,只为完全预料不到的事。三层不能混用。</div>
<div class="p2-law-tag">桥水资本 流动性分层框架</div>
</div>
</div>
<div class="p2-law">
<div class="p2-law-num">03</div>
<div class="p2-law-content">
<div class="p2-law-title">现金仓的最低红线:10%~15%</div>
<div class="p2-law-body">无论行情多好,永远保留10%~15%的现金仓不动。这不是保守,这是保证你在市场最极端时刻永远有出手能力。一旦子弹打完,你就从猎人变成了观众。</div>
<div class="p2-law-tag">仓位管理铁律</div>
</div>
</div>
</div>
</div>
<!-- Section 2 -->
<div class="p2-section" id="s1">
<div class="p2-section-header" onclick="toggleSection(1)">
<div class="p2-icon">🎯</div>
<div>
<div class="p2-section-label">机会成本</div>
<div class="p2-section-en">Opportunity Cost · Best Use of Capital</div>
</div>
<div class="p2-chevron">▶</div>
</div>
<div class="p2-body">
<div class="p2-law">
<div class="p2-law-num">01</div>
<div class="p2-law-content">
<div class="p2-law-title">每笔资金都有隐形成本</div>
<div class="p2-law-body">你把¥4,220挂在¥2.11,它的机会成本不是零,而是这笔钱在更高赔率机会(¥1.80)里能创造的收益。机会成本是真实的,即使它不出现在账单上。</div>
<div class="p2-law-quote">"The cost of something is what you give up to get it." — N. Gregory Mankiw</div>
<div class="p2-law-tag">经济学第一原理</div>
</div>
</div>
<div class="p2-law">
<div class="p2-law-num">02</div>
<div class="p2-law-content">
<div class="p2-law-title">资本配置优先级三问</div>
<div class="p2-law-body">在使用任何资金前,必须问:① 这是当前最高赔率的机会吗?② 赔率是否足够倾斜(向上空间 ÷ 向下空间 ≥ 2)?③ 使用这笔资金的机会成本是什么?三问全部通过,才动用资金。</div>
<div class="p2-law-tag">Capital Allocation Hierarchy</div>
</div>
</div>
<div class="p2-law">
<div class="p2-law-num">03</div>
<div class="p2-law-content">
<div class="p2-law-title">小机会是大机会的天敌</div>
<div class="p2-law-body">把子弹打在赔率普通的机会上(¥2.11),导致赔率极高的机会来临时(¥1.80)没有子弹——这才是现金仓管理最大的失误。不是持有太多现金,而是把子弹打在了错误的目标上。</div>
<div class="p2-law-tag">Druckenmiller 重仓原则</div>
</div>
</div>
</div>
</div>
<!-- Section 3 -->
<div class="p2-section" id="s2">
<div class="p2-section-header" onclick="toggleSection(2)">
<div class="p2-icon">📐</div>
<div>
<div class="p2-section-label">期望值管理</div>
<div class="p2-section-en">Expected Value · Kelly Criterion</div>
</div>
<div class="p2-chevron">▶</div>
</div>
<div class="p2-body">
<div class="p2-law">
<div class="p2-law-num">01</div>
<div class="p2-law-content">
<div class="p2-law-title">期望值公式</div>
<div class="p2-law-body">期望值 = 胜率 × 盈利幅度 − 败率 × 亏损幅度。只有期望值为正,且足够高,才值得出手。赔率不够时,期望值可能为正但极小——凯利公式会告诉你最优仓位接近零。</div>
<div class="p2-law-quote">"It's not whether you're right or wrong, but how much you make when right and lose when wrong." — Soros</div>
<div class="p2-law-tag">Kelly Criterion · 1956 Bell Labs</div>
</div>
</div>
<div class="p2-law">
<div class="p2-law-num">02</div>
<div class="p2-law-content">
<div class="p2-law-title">管理的是系统,不是单笔</div>
<div class="p2-law-body">一次踏空(没买到¥2.11)不影响系统期望值。重要的是:每次决策是否符合框架?框架的长期期望值是否为正?单次结果是随机的,系统的期望值才是真实的。</div>
<div class="p2-law-tag">Annie Duke · Resulting 谬误</div>
</div>
</div>
<div class="p2-law">
<div class="p2-law-num">03</div>
<div class="p2-law-content">
<div class="p2-law-title">频繁交易是期望值的侵蚀剂</div>
<div class="p2-law-body">在震荡市里+3%/+5%来回做,手续费+摩擦成本+机会成本加总后,实际收益趋近于零。凯利公式在低赔率情景下的答案是:仓位接近零。不做,有时候是最高期望值的选择。</div>
<div class="p2-law-tag">均值回归陷阱</div>
</div>
</div>
</div>
</div>
<!-- Section 4 -->
<div class="p2-section" id="s3">
<div class="p2-section-header" onclick="toggleSection(3)">
<div class="p2-icon">🔫</div>
<div>
<div class="p2-section-label">子弹纪律</div>
<div class="p2-section-en">Dry Powder Discipline · Conviction Sizing</div>
</div>
<div class="p2-chevron">▶</div>
</div>
<div class="p2-body">
<div class="p2-law">
<div class="p2-law-num">01</div>
<div class="p2-law-content">
<div class="p2-law-title">子弹的三种错误死法</div>
<div class="p2-law-body">太早打完:市场跌5%全仓,跌15%的真正机会来了没子弹。永远不打:等到跌40%才敢买,市场只跌30%就反弹。③打在错误目标:赔率普通的机会消耗了赔率极高时需要的子弹。你的问题主要是③。</div>
<div class="p2-law-tag">子弹消耗失误分类</div>
</div>
</div>
<div class="p2-law">
<div class="p2-law-num">02</div>
<div class="p2-law-content">
<div class="p2-law-title">高确信度时重仓,这是职业和业余的分水岭</div>
<div class="p2-law-body">把最多的子弹压在最高确信度的区间。你的日经52,000~54,000、标普5,700~6,000是高确信区,理应是最大注。哨兵档的子弹越少越好,主仓档的子弹越多越好。</div>
<div class="p2-law-quote">"The best investment you can make is one where you risk a little to make a lot." — Druckenmiller</div>
<div class="p2-law-tag">Conviction Sizing · 集中押注原则</div>
</div>
</div>
<div class="p2-law">
<div class="p2-law-num">03</div>
<div class="p2-law-content">
<div class="p2-law-title">买入标准:必要条件 vs 充分条件</div>
<div class="p2-law-body">必要条件:价格合理(如溢价消失)。充分条件:价格合理 且 赔率足够高 且 这是当前资本最优配置。你的卖出系统(阶梯止盈)是充分条件设计。你的买入系统需要同样的严格标准。</div>
<div class="p2-law-tag">买入充分条件框架</div>
</div>
</div>
</div>
</div>
<!-- Section 5 -->
<div class="p2-section" id="s4">
<div class="p2-section-header" onclick="toggleSection(4)">
<div class="p2-icon"></div>
<div>
<div class="p2-section-label">市场状态过滤器</div>
<div class="p2-section-en">Market Regime Filter · Big Picture First</div>
</div>
<div class="p2-chevron">▶</div>
</div>
<div class="p2-body">
<div class="p2-law">
<div class="p2-law-num">01</div>
<div class="p2-law-content">
<div class="p2-law-title">大盘是所有ETF的公因子</div>
<div class="p2-law-body">大盘不好,整个板块都不好。在做个股/ETF决策之前,先判断市场整体处于什么状态。大盘是流动性和情绪的晴雨表,是第一道过滤开关,不是预测工具。</div>
<div class="p2-law-tag">Market Regime Filter · 桥水 / AQR</div>
</div>
</div>
<div class="p2-law">
<div class="p2-law-num">02</div>
<div class="p2-law-content">
<div class="p2-law-title">沪深300四档状态机</div>
<div class="p2-law-body">4,000点以上:正常,不追加仓位。3,500~4,000:警戒,准备子弹开始挂单。3,200~3,500:恐慌,第一批子弹触发。3,200以下:极端,主仓子弹全部出动。大盘状态决定整体仓位上限。</div>
<div class="p2-law-tag">你自己悟出的 Regime Filter</div>
</div>
</div>
<div class="p2-law">
<div class="p2-law-num">03</div>
<div class="p2-law-content">
<div class="p2-law-title">预期值不是绝对,是开关</div>
<div class="p2-law-body">不需要知道最低点在哪里。只需要知道"现在的市场状态允不允许我动手"。大盘过滤器把不可知的(精确低点)转化为可判断的(状态档位),这是系统从感性走向理性的关键一步。</div>
<div class="p2-law-tag">你的原话,华尔街叫 Regime Filter</div>
</div>
</div>
</div>
</div>
<div class="footer-line" style="margin-top:20px">本金是前提 · 子弹是工具 · 纪律是护城河</div>
</div>
</div>
<script>
// ── QUOTES DATA ──
const quotes = [
{ theme:"等待 · Patience", en:"The stock market is a device for transferring money from the impatient to the patient.", zh:"股票市场是一台把钱从没耐心的人手里转移到有耐心的人手里的机器(大白话:股市本质就是财富搬运机:把急躁散户的钱,转给耐得住的投资者)", name:"Warren Buffett", title:"伯克希尔·哈撒韦 CEO", avatar:"B", insight:"你设了挂单,然后等待。大多数人等不住,在最低点前割肉。你的耐心,本身就是你的优势。" },
{ theme:"纪律 · Discipline", en:"The few times I've been most certain, I've been most wrong.", zh:"越是笃定行情稳赚不赔的时候,往往越容易出现重大亏损(大白话:越觉得稳赢满仓梭哈,越容易踩大坑大亏)", name:"Stanley Druckenmiller", title:"杜肯家族办公室 创始人", avatar:"D", insight:"感觉最确定的时候,恰恰需要最谨慎。条件单的价值,是在你最亢奋时阻止你追高。" },
{ theme:"止盈 · Taking Profits", en:"No one ever went broke taking profits.", zh:"从来没有人因为及时止盈落袋最终破产(大白话:止盈永远不会亏到破产,贪到底才容易坐过山车由盈转亏)", name:"Bernard Baruch", title:"华尔街传奇投机者", avatar:"B", insight:"你的阶梯止盈系统,正是这句话的执行版本。止盈是确定性的胜利,不是胆怯。" },
{ theme:"现金仓 · Dry Powder", en:"Cash combined with courage in a crisis is priceless.", zh:"市场大跌危机中,手握现金再加敢于布局的胆识是无价之宝(大白话:熊市手里有闲钱、敢低位加仓,就是最硬的底牌)", name:"Warren Buffett", title:"伯克希尔·哈撒韦 CEO", avatar:"B", insight:"你的Dry Powder不是闲置,是在等待危机。危机来临时,有子弹的人是猎人,没子弹的人是猎物。" },
{ theme:"遗憾 · Regret", en:"The biggest mistake is not having a rule at all. Selling too early is the cost of sleeping well.", zh:"投资最大的错误是没有任何交易纪律,过早卖出只是换取安稳睡眠的合理成本(大白话:炒股最怕毫无规矩乱操作,卖早少赚点,但能睡踏实不焦虑)", name:"Peter Lynch", title:"富达麦哲伦基金 前基金经理", avatar:"L", insight:"你每一次提前止盈的遗憾,换来的是确定性。在充满不确定性的市场里,确定性本身有价值。" },
{ theme:"系统 · System", en:"I have two rules. Rule 1: Never lose money. Rule 2: Never forget Rule 1.", zh:"我有两条投资铁律:第一条永远不要亏损本金;第二条牢记第一条规则(大白话:守好本金是第一要务,时时刻刻不能忘)", name:"Warren Buffett", title:"伯克希尔·哈撒韦 CEO", avatar:"B", insight:"仓位上限、止损框架、Dry Powder——你的每一道规则,都是在保护本金不受永久性损失。" },
{ theme:"重仓 · Conviction", en:"Diversification is protection against ignorance. It makes little sense if you know what you are doing.", zh:"分散投资是对认知不足的风险对冲,当你吃透标的后,过度分散没有意义(大白话:看不懂才靠分散保命,研究透彻后分散反而稀释收益)", name:"Warren Buffett", title:"伯克希尔·哈撒韦 CEO", avatar:"B", insight:"你把主仓压在日经52,000~54,000、标普5,700~6,000,不是分散不够,是对高确信区间的集中押注。" },
{ theme:"非对称 · Asymmetry", en:"The best investment you can make is one where you risk a little to make a lot.", zh:"优质投资是用小幅可控风险,去博取长期丰厚收益(大白话:好机会就是亏有限、赚空间巨大的布局)", name:"George Soros", title:"量子基金 创始人", avatar:"S", insight:"你的伏击策略本质上是非对称收益——现价不动子弹归零,跌到位满仓获利翻倍。这就是最好的投资结构。" },
{ theme:"决策质量 · Process", en:"A good decision can have a bad outcome. A bad decision can have a good outcome. Outcomes cannot judge decision quality.", zh:"正确的决策短期也可能亏损,错误的决策靠运气也能盈利,单次盈亏无法评判决策好坏(大白话:一次赚钱不代表思路对,一次被套不代表策略失效)", name:"Annie Duke", title:"扑克世界冠军 / 决策科学家", avatar:"D", insight:"¥2.11没买、它涨上去了——这是好决策的坏结果。用结果评价决策是陷阱,用框架评价决策才是正道。" },
{ theme:"复利 · Compounding", en:"The first rule of compounding: never interrupt it unnecessarily.", zh:"复利第一准则:不要毫无缘由随意打断盈利复利滚动(大白话:盈利拿住别频繁止盈清仓,轻易中断复利等于丢大钱)", name:"Charlie Munger", title:"伯克希尔·哈撒韦 副主席", avatar:"M", insight:"你的系统每次完整执行——买入、止盈、回补——就是在让复利运转。打断它的,往往是情绪,不是理性。" },
{ theme:"市场先生 · Mr. Market", en:"Mr. Market is your servant, not your guide.", zh:"市场先生是为你服务的仆人,不是指引你买卖的向导(大白话:涨跌波动帮你捡低价筹码,别跟着行情涨跌追涨杀跌)", name:"Benjamin Graham", title:"价值投资之父", avatar:"G", insight:"市场跌到你的挂单价,它是在为你服务。市场飙升让你追高,它是在误导你。你的条件单,让你永远是主人。" },
{ theme:"情绪管理 · Emotion", en:"Once you have ordinary intelligence, what you need is the temperament to control the urges that get other people into trouble.", zh:"投资不需要绝顶智商,关键是拥有克制情绪化操作的心态(大白话:智商够用就行,管住追涨割肉的冲动才是赢钱关键)", name:"Warren Buffett", title:"伯克希尔·哈撒韦 CEO", avatar:"B", insight:"你用条件单管住了冲动。这比任何分析技巧都重要。气质,才是散户和机构真正的分水岭。" },
{ theme:"等待机会 · Selectivity", en:"I only swing at pitches in my sweet spot.", zh:"我只在自己熟悉的优势区间出手布局(大白话:看不懂的行情一概不碰,只在自己的低估舒适区建仓)", name:"Warren Buffett", title:"伯克希尔·哈撒韦 CEO", avatar:"B", insight:"放弃¥2.11,等待¥1.80,就是在等甜蜜区的球。不是每个球都值得挥棒。" },
{ theme:"宏观判断 · Macro", en:"When I see a pile of money in the corner, I just go pick it up.", zh:"当市场出现明显低估的捡钱机会,果断进场布局即可(大白话:跌到明确价值底不用犹豫,分批捡筹码)", name:"Stanley Druckenmiller", title:"杜肯家族办公室 创始人", avatar:"D", insight:"你的套息平仓逻辑、中期选举统计——都是在寻找那堆角落里的钱。不是每次都有,但一旦找到,重仓。" },
{ theme:"风险管理 · Risk", en:"Rule No. 1 of risk management: survive to fight another day.", zh:"风险管理第一条准则:先保证账户存活,保留后续再战的本金(大白话:风控优先活下来,留得本金在不怕没行情)", name:"Ray Dalio", title:"桥水基金 创始人", avatar:"D", insight:"你的仓位上限——标普¥8万、纳指¥5万、日经¥3.5万——不是胆小,是确保你永远有机会再战。" },
{ theme:"黑天鹅 · Black Swan", en:"Prepare for the expected. But also prepare for the unexpected.", zh:"既要做好常规行情的预案,也要预留资金应对突发意外风险(大白话:常规下跌要防,黑天鹅暴跌也要留后手仓位)", name:"Nassim Taleb", title:"《黑天鹅》作者", avatar:"T", insight:"你的C档极端伏击价——日经45,000、标普4,800——就是为意外做的准备。大多数时候用不到,用到了是奇袭。" },
{ theme:"执行力 · Execution", en:"It's not what you know that makes you rich. It's what you do.", zh:"让人盈利的不是掌握多少投资道理,而是严格落地执行策略(大白话:懂再多没用,按规则实操才能落袋赚钱)", name:"Paul Tudor Jones", title:"都铎投资 创始人", avatar:"J", insight:"你知道套息逻辑,你知道选举统计,但让这些知识变成收益的,是你3月23日那天按下买入键。" },
{ theme:"本金保护 · Capital Preservation", en:"The most important thing about making money is not to let the losses get out of hand.", zh:"盈利的核心关键,是避免亏损持续失控放大(大白话:小亏不止损,最后容易深度套牢大亏)", name:"George Soros", title:"量子基金 创始人", avatar:"S", insight:"你的仓位上限、分档买入、Dry Powder,构成了一套完整的亏损防火墙。这是系统最重要的设计。" },
{ theme:"长期主义 · Long Term", en:"In the short run, the market is a voting machine. In the long run, it is a weighing machine.", zh:"短期市场是情绪化投票器,长期市场是价值称重器(大白话:短线涨跌看散户情绪,长线涨跌靠公司内在价值)", name:"Benjamin Graham", title:"价值投资之父", avatar:"G", insight:"你的伏击策略是长期主义的——不管短期怎么投票,只要资产真实价值在,称重机终会还原真相。" },
{ theme:"逆向思维 · Contrarian", en:"Be fearful when others are greedy, and greedy when others are fearful.", zh:"别人疯狂贪婪追涨时保持谨慎,市场集体恐慌割肉时逐步布局(大白话:全民狂热要收手,遍地恐慌敢捡筹)", name:"Warren Buffett", title:"伯克希尔·哈撒韦 CEO", avatar:"B", insight:"你的条件单在市场最恐慌时自动触发。这不是勇气——这是你在平静时做的决策,在恐慌中自动执行。" },
{ theme:"期望值 · Expected Value", en:"In investing, what is comfortable is rarely profitable.", zh:"投资里操作起来顺手舒服的选择,往往很难赚到钱(大白话:追涨买在高位最舒服,最后大多被套亏钱)", name:"Robert Arnott", title:"Research Affiliates 创始人", avatar:"A", insight:"3月23日大跌时买入,是痛苦的,不舒适的。正因为不舒适,大多数人不做,所以才有超额回报。" },
{ theme:"复利 · Eighth Wonder", en:"Compound interest is the eighth wonder of the world. He who understands it, earns it.", zh:"复利是世界第八大奇迹,吃透复利规律的人能从中获利(大白话:懂复利慢慢滚资产,不懂的白白错过财富增长)", name:"Einstein(被引用)", title:"被华尔街广泛引用", avatar:"E", insight:"你的阶梯止盈后立即设回补单,本质上是在让资金循环复利——每一次完整的买卖循环,都是复利的一次迭代。" },
{ theme:"自我认知 · Know Your Holdings", en:"Know what you own, and know why you own it.", zh:"清楚自己持仓的品种,同时明确买入的逻辑理由(大白话:每只持仓都要讲得出买入逻辑,杜绝无脑跟风买入)", name:"Peter Lynch", title:"富达麦哲伦基金 前基金经理", avatar:"L", insight:"你的每一笔挂单都有书面理由。这不是形式,这是确保你在市场震荡时,知道自己为什么在这里。" },
{ theme:"时间 · Time in Market", en:"Time in the market beats timing the market.", zh:"长期留在市场持仓,胜过频繁预判高低点择时(大白话:拿着等行情,远比天天猜顶摸底靠谱)", name:"Ken Fisher", title:"费雪投资 创始人", avatar:"F", insight:"你的系统不预测高低点,而是在足够低的区间分批建仓。这比试图精确抄底,更可执行,更有效。" },
{ theme:"凯利公式 · Kelly", en:"Bet big when the odds are in your favor. Bet small when they're not. Don't bet at all when you can't tell.", zh:"赔率占优时重仓布局,赔率不明时小仓试错,完全看不懂就空仓观望(大白话:划算机会重仓,模糊机会轻仓,看不懂直接不进场)", name:"Edward Thorp", title:"《击败庄家》作者 / 量化投资先驱", avatar:"T", insight:"凯利公式的精髓。你放弃¥2.11(赔率普通),保留资金等¥1.80(赔率高),这就是凯利在实战中的应用。" },
{ theme:"宏观过滤 · Don't Fight", en:"Don't fight the Fed. Don't fight the tape.", zh:"不要逆着货币政策操作,不要和中长期大趋势反向博弈(大白话:政策收紧别硬做多,大趋势向下别逆势抄底)", name:"Martin Zweig", title:"华尔街传奇分析师", avatar:"Z", insight:"你的大盘过滤器想法——用沪深300点位设买入开关——正是这句话的执行版本。宏观环境是第一道关卡。" },
{ theme:"独立思考 · Independence", en:"You are neither right nor wrong because the crowd disagrees with you.", zh:"持仓对错和大众观点无关,由背后的数据与逻辑决定(大白话:散户都反对不代表你错,逻辑数据过硬才是硬道理)", name:"Benjamin Graham", title:"价值投资之父", avatar:"G", insight:"在大跌时买入,所有人都说你疯了。但你的数据(历史支撑位)和推理(套息逻辑)是对的。" },
{ theme:"幸存者偏差 · Survivorship", en:"The market is filled with individuals who know the price of everything, but the value of nothing.", zh:"市场里多数人只紧盯股价涨跌,却无视资产本身内在价值(大白话:天天盯涨跌价位,从来不研究标的值不值钱)", name:"Philip Fisher", title:"成长股投资之父", avatar:"F", insight:"那个大V说全年空仓只做两三次——他告诉你的是价格,不是价值,也不是他的完整决策框架。" },
{ theme:"简单 · Simplicity", en:"Investing is simple, but not easy.", zh:"投资的道理通俗易懂,但是落地执行十分艰难(大白话:低买高卖人人会说,克服人性做到的寥寥无几)", name:"Warren Buffett", title:"伯克希尔·哈撒韦 CEO", avatar:"B", insight:"你的系统很简单:条件单、分档建仓、阶梯止盈。但执行它——在恐慌中不割肉,在亢奋中不追高——不容易。" },
{ theme:"适应性 · Adaptability", en:"It's not the strongest species that survives, nor the most intelligent. It's the one most responsive to change.", zh:"存活下来的不是最强壮的,也不是最聪明的,而是最能适应变化的。(大白话:股市里没有常胜将军,能活下来的不是最猛的那个,而是懂得顺势应变的人)", name:"Darwin(被引用)", title:"进化论之父", avatar:"D", insight:"你的策略从网格到选举策略到止盈框架,三次演变,每次有据可查。这种适应性,是长期存活的关键。" },
{ theme:"非对称收益 · Payoff", en:"I'm always thinking about losing money rather than making money.", zh:"我总在想怎么不亏钱,而不是怎么赚钱。(大白话:天天琢磨怎么赚钱容易踩坑,先想好怎么不亏钱才是正经事)", name:"Paul Tudor Jones", title:"都铎投资 创始人", avatar:"J", insight:"先想最坏情景——如果全部挂单触发后继续下跌怎么办——再决定仓位。这是反直觉但正确的思维顺序。" },
{ theme:"集中 · Concentration", en:"Wide diversification is only required when investors do not understand what they are doing.", zh:"只有投资者看不懂投资标的时,才需要大范围分散持仓(大白话:外行才遍地撒网乱买,内行精选少数标的集中布局)", name:"Warren Buffett", title:"伯克希尔·哈撒韦 CEO", avatar:"B", insight:"你把大量资金集中在日经52,000~54,000,标普5,700~6,000——这不是分散不够,是对高确信区间的正确集中。" },
{ theme:"机会成本 · Option Value", en:"The opportunity cost of holding cash is real, but so is the option value of waiting.", zh:"持有现金的机会成本是真实的,但等待的期权价值也是真实的。(大白话:空仓看别人涨确实难受,但耐心等确定性机会的潜在回报同样真实)", name:"Howard Marks", title:"橡树资本 创始人", avatar:"M", insight:"¥4,220放在¥2.11是机会成本;放在账户等¥1.80是期权价值。两者都真实,但后者在这个时刻更高。" },
{ theme:"周期 · Cycles", en:"The four most dangerous words in investing are: 'this time it's different.'", zh:"投资中最危险的四个字是:这次不一样。(大白话:每次牛市都有人喊这次不一样,结果发现该来的调整一个都不会少)", name:"John Templeton", title:"邓普顿基金 创始人", avatar:"T", insight:"套息崩塌、加息打压估值、选举年震荡——这些都不是第一次发生。历史会重演,不完全一样,但足够相似。" },
{ theme:"耐心 · The Long Game", en:"The stock market is designed to transfer money from the active to the patient.", zh:"股票市场是一台把钱从没耐心的人手里转移到有耐心的人手里的机器(大白话:股市本质就是财富搬运机:把急躁散户的钱,转给耐得住的投资者)", name:"Warren Buffett", title:"伯克希尔·哈撒韦 CEO", avatar:"B", insight:"你的条件单让你从活跃变成耐心。设好单,然后什么都不做——这是最难的操作,也是最有价值的操作。" },
{ theme:"概率思维 · Probability", en:"In the short run, results are dominated by randomness. In the long run, skill wins.", zh:"短期收益由随机行情主导,拉长周期专业能力终将兑现盈利(大白话:单次盈亏靠运气,长年赚钱靠成熟交易系统)", name:"Michael Mauboussin", title:"哥伦比亚商学院教授", avatar:"M", insight:"¥2.11没买到然后涨上去了——这是随机性。你的系统长期执行下去,能力会在足够多次后显现。" },
{ theme:"错误管理 · Managing Mistakes", en:"The most important thing is not to be right, but to make money when you are right.", zh:"最重要的不是要正确,而是正确时赚大钱,错误时少亏钱。(大白话:预测对错不重要,关键是对了要重仓赚足,错了要轻仓少亏)", name:"George Soros", title:"量子基金 创始人", avatar:"S", insight:"你的非对称设计:最坏情景子弹空置损失机会成本,最好情景满仓在底部获利翻倍。错误成本远小于正确收益。" },
{ theme:"记录 · Journaling", en:"Write down your reasons for every investment before you make it.", zh:"在每次投资前写下你的理由。如果你说不清楚,你可能不应该做。(大白话:动手买之前写清楚买入逻辑,讲不明白就别碰)", name:"Peter Lynch", title:"富达麦哲伦基金 前基金经理", avatar:"L", insight:"你的投资日志不是记录,是决策过滤器。每次写下理由,就是在强迫自己确认逻辑是否站得住脚。" },
{ theme:"市场情绪 · Sentiment", en:"Markets are constantly in a state of uncertainty and flux. Money is made by discounting the obvious.", zh:"市场永远处于不确定和波动中。钱是通过忽视显而易见、押注意外来赚的。(大白话:赚钱的机会藏在没人看好的角落里,跟风追热门注定赚不到大钱)", name:"George Soros", title:"量子基金 创始人", avatar:"S", insight:"大跌时人人恐慌,那是显而易见的情绪。你的条件单在那时自动买入,押注的是意外的反弹。" },
{ theme:"人性 · Human Nature", en:"The investor's chief problem — and even his worst enemy — is likely to be himself.", zh:"投资者最大的问题——甚至是最大的敌人——很可能是他自己。(大白话:炒股最大的敌人不是庄家也不是市场,而是自己的贪婪和恐惧)", name:"Benjamin Graham", title:"价值投资之父", avatar:"G", insight:"你用条件单把自己锁在决策链之外。这不是放弃控制权,这是把决策权交给更清醒的自己——设单时的你。" },
{ theme:"价值 · Price vs Value", en:"Price is what you pay. Value is what you get.", zh:"价格是你付出的成本,价值是你实际拿到的内在资产(大白话:你掏真金白银买的是股价,真正赚到靠的是公司本身价值)", name:"Warren Buffett", title:"伯克希尔·哈撒韦 CEO", avatar:"B", insight:"160644在¥2.11,价格合理了,但价值没有变。价值等于净值,溢价是情绪,不是价值。买价值,不买情绪。" },
{ theme:"专注 · Saying No", en:"Really successful people say no to almost everything.", zh:"真正成功者对几乎所有事说不。(大白话:高手不是机会多,而是大多数机会都舍得放掉,只抓最有把握的)", name:"Warren Buffett", title:"伯克希尔·哈撒韦 CEO", avatar:"B", insight:"你放弃了¥2.11,说不。你有足够多的机会在等待——只做最高赔率的,忽略其他。这是真正的选择。" },
{ theme:"信念 · Conviction Sizing", en:"You need to have a big position in things when you have a huge edge.", zh:"当你有巨大优势时,要下大注。(大白话:没把握就小仓试错,有把握要敢于重仓,看对了不敢下注等于白看)", name:"Stanley Druckenmiller", title:"杜肯家族办公室 创始人", avatar:"D", insight:"你把主仓压在日经52,000~54,000、标普5,700~6,000。这两个区间是你的巨大优势区,应该是最大注。" },
{ theme:"学习 · Continuous Learning", en:"The more you learn, the more you earn.", zh:"学得越多,赚得越多。(大白话:投资认知每上一个台阶,赚钱能力就跟着长一截)", name:"Warren Buffett", title:"伯克希尔·哈撒韦 CEO", avatar:"B", insight:"从网格到选举策略,从单一挂单到资本配置优先级,你的系统在进化。每一次迭代,都是学习的复利。" },
{ theme:"现实主义 · No Forecasting", en:"Forecasts may tell you a great deal about the forecaster; they tell you nothing about the future.", zh:"预测告诉你很多关于预测者的事;对未来,它什么都说不了。(大白话:别信那些拍胸脯预测涨跌的,没人能看透未来,做好预案比猜方向靠谱)", name:"Warren Buffett", title:"伯克希尔·哈撒韦 CEO", avatar:"B", insight:"没有人知道日经什么时候跌到45,000,标普什么时候跌到5,700。不预测,只准备。这才是可执行的系统。" },
{ theme:"坚持 · Temperament", en:"The most important quality for an investor is temperament, not intellect.", zh:"投资者最重要的品质是气质,不是智力。(大白话:高智商不一定赚钱,跌了不慌、涨了不飘、空仓不急,这心态才是真本事)", name:"Warren Buffett", title:"伯克希尔·哈撒韦 CEO", avatar:"B", insight:"你在大跌时不割肉,在亢奋时不追高,在遗憾时不降低标准——这种气质,比任何分析能力都稀有。" },
{ theme:"系统思维 · Buy the Haystack", en:"Don't look for the needle in the haystack. Just buy the haystack.", zh:"不要在草堆里找针。把整个草堆买下来。(大白话:选股不如买指数,费劲挑半天还不如直接买整个市场省心赚钱)", name:"John Bogle", title:"先锋集团 创始人", avatar:"B", insight:"你的ETF组合——标普、纳指、日经——正是这个思路。买整个市场,让时间和分散做工作。" },
{ theme:"贪婪与恐惧 · Greed & Fear", en:"Try to be greedy when others are fearful. And try to be fearful when others are greedy.", zh:"别人贪婪狂热时保持谨慎,只有市场集体恐慌时才主动布局(大白话:全民追涨我收手,市场恐慌我分批进场)", name:"Warren Buffett", title:"伯克希尔·哈撒韦 CEO", avatar:"B", insight:"现在标普、纳指都在历史新高——这是别人贪婪的时刻。你把子弹留着,等别人恐惧时用。" },
{ theme:"过程 · Process Over Outcome", en:"A good process consistently applied will produce good outcomes over time.", zh:"一个持续执行的好过程,长期来看会产生好结果,即使单次结果有好有坏。(大白话:别在意一两次盈亏,坚持把交易流程走对,长期自然赚钱)", name:"Howard Marks", title:"橡树资本 创始人", avatar:"M", insight:"你的日志、条件单、分档系统——这是好过程。单次结果(某笔踏空或止盈早了)不影响过程的长期价值。" },
{ theme:"时间 · Plant a Tree", en:"Someone is sitting in the shade today because someone planted a tree a long time ago.", zh:"今天有人坐在树荫下,是因为很久以前有人种了一棵树。(大白话:现在赚的每一分钱,都是以前做对的布局结的果)", name:"Warren Buffett", title:"伯克希尔·哈撒韦 CEO", avatar:"B", insight:"你今天设的每一张条件单,是在种树。也许三个月后触发,也许两年后触发。但树一直在生长。" },
{ theme:"改变 · Habit Formation", en:"The chains of habit are too light to be felt until they are too heavy to be broken.", zh:"习惯的锁链太轻,轻到感觉不到;直到它变得太重,重到无法打破。(大白话:坏习惯刚养成时觉得没什么,等发现改不掉时已经亏了大钱)", name:"Buffett引用Samuel Johnson", title:"伯克希尔·哈撒韦 CEO", avatar:"B", insight:"每周一句金句,是在建立投资认知的习惯。现在感觉轻——只是读一句话。一年后,它会成为你思维的一部分。" },
{ theme:"慢慢变富 · Slowly Rich", en:"Nobody wants to get rich slowly.", zh:"没有人愿意慢慢变富。(大白话:都想一夜暴富不愿慢慢攒,但股市里赚快钱的人最后都还回去了)", name:"Warren Buffett", title:"伯克希尔·哈撒韦 CEO", avatar:"B", insight:"你在做别人不愿意做的事——等待、忍耐、接受遗憾。这种反人性的坚持,就是超额回报的来源。" },
{ theme:"终章 · The Long Arc", en:"Our favorite holding period is forever.", zh:"我们最喜欢的持有期限是:永远。(大白话:好资产拿得住才是真本事,别总想着高抛低吸折腾)", name:"Warren Buffett", title:"伯克希尔·哈撒韦 CEO", avatar:"B", insight:"52周走完了。回头看——你的认知变了吗?你的决策框架更清晰了吗?如果是,这52句话做到了它该做的事。" },
];
// ── LOCAL STORAGE ──
const STORAGE_KEY = 'wallstreet-wisdom-state';
function loadState() {
try {
const raw = localStorage.getItem(STORAGE_KEY);
if (raw) {
const state = JSON.parse(raw);
if (state && typeof state.week === 'number') {
cw = Math.max(0, Math.min(51, state.week));
if (Array.isArray(state.visited)) {
state.visited.forEach(v => visited.add(v));
}
renderQuote();
return;
}
}
} catch {}
// no saved state — default to current week
goNow();
}
function saveState() {
try {
localStorage.setItem(STORAGE_KEY, JSON.stringify({
week: cw,
visited: Array.from(visited)
}));
} catch {}
}
// ── TAB SWITCHING ──
function switchTab(idx, btn) {
document.querySelectorAll('.tab-btn').forEach((b,i) => b.classList.toggle('active', i===idx));
document.querySelectorAll('.panel').forEach((p,i) => p.classList.toggle('active', i===idx));
}
// ── QUOTE LOGIC ──
function getCurrentWeek() {
const start = new Date('2026-06-05');
const today = new Date();
const diff = Math.floor((today - start) / 86400000);
return Math.max(0, Math.min(Math.floor(diff/7), 51));
}
let cw = 0;
const visited = new Set();
function renderQuote() {
const q = quotes[cw];
document.getElementById('weekNum').textContent = `WEEK ${cw+1}`;
document.getElementById('qTheme').textContent = q.theme;
document.getElementById('qEn').textContent = `"${q.en}"`;
const zhFull = q.zh;
const parenIdx = zhFull.indexOf('(');
if (parenIdx > -1) {
document.getElementById('qZh').textContent = zhFull.substring(0, parenIdx);
document.getElementById('qColloquial').textContent = zhFull.substring(parenIdx);
} else {
document.getElementById('qZh').textContent = zhFull;
document.getElementById('qColloquial').textContent = '';
}
document.getElementById('qAvatar').textContent = q.avatar;
document.getElementById('qName').textContent = q.name;
document.getElementById('qTitle').textContent = q.title;
document.getElementById('qInsight').textContent = q.insight;
document.getElementById('progBar').style.width = `${((cw+1)/52)*100}%`;
document.getElementById('progText').textContent = `${cw+1} / 52 weeks`;
document.getElementById('prevBtn').disabled = cw===0;
document.getElementById('nextBtn').disabled = cw===51;
const card = document.getElementById('quoteCard');
card.style.animation='none';
setTimeout(()=>card.style.animation='cardIn 0.6s ease forwards',10);
renderDots();
}
function renderDots() {
const c = document.getElementById('weekDots'); c.innerHTML='';
quotes.forEach((_,i)=>{
const d=document.createElement('div');
d.className='dot'+(i===cw?' active':visited.has(i)?' visited':'');
d.title=`Week ${i+1}`;
d.onclick=()=>{cw=i;visited.add(i);renderQuote();saveState();};
c.appendChild(d);
});
}
function changeWeek(d){ cw=Math.max(0,Math.min(51,cw+d)); visited.add(cw); renderQuote(); saveState(); }
function goNow(){ cw=getCurrentWeek(); visited.add(cw); renderQuote(); saveState(); }
// ── ACCORDION ──
function toggleSection(idx) {
const s = document.getElementById('s'+idx);
s.classList.toggle('open');
}
// ── INIT ──
loadState();
</script>
</body>
</html>