前言
各位好,我是小卓,一位熱衷於金融科技的創業者。今天,我們將一同探索技術分析的奧秘,特別是客觀和主觀方法的比較。無論你是金融新手還是想提升技能的專業人士,這本指南都將為你揭開技術分析的神秘面紗。準備好了嗎?讓我們開始這段精彩的學習之旅吧!
第一章:技術分析基礎知識
1.1 什麼是技術分析?
想像你是一位偵探,而金融市場就是你的案發現場。技術分析就像是你的放大鏡和指紋粉,幫助你在看似雜亂的市場數據中發現重要線索。技術分析的定義:
- 研究金融市場資料中的重複模式
- 預測未來價格走勢
- 包含多種分析方法、形態、訊號、指標及交易策略

1.2 技術分析的發展歷程
技術分析的發展就像是從占卜到科學的進化過程。讓我們來看看這個有趣的時間線:

1.3 互動問答
Q1: 技術分析的主要目的是什麼? A1: 技術分析的主要目的是通過研究歷史價格和交易量等市場資料,預測未來的價格走勢。
Q2: 技術分析和基本面分析有什麼區別? A2: 技術分析主要關注價格走勢和交易量等市場資料,而基本面分析則關注公司財務狀況、經濟環境等因素。
第二章:客觀技術分析 vs. 主觀技術分析
2.1 客觀技術分析:數據的魔法師
想像你是一位科學家,正在進行一項嚴謹的實驗。客觀技術分析就像是你的實驗方法和數據分析工具。
特點:
- 定義清晰,可重複驗證
- 可用於電腦演算法和歷史資料回溯測試
優點:
- 量化評估和統計分析
- 適合系統化應用和自動化交易
缺點:
- 可能忽略市場的複雜性
- 容易受到過度擬合(overfitting)的影響
2.2 主觀技術分析:市場的藝術家
現在,想像你是一位藝術家,正在解讀一幅抽象畫。主觀技術分析就像是你的直覺和經驗,幫助你理解市場的"畫作"。
特點:
- 分析方法沒有明確定義
- 需要分析師的個人解釋
優點:
- 靈活應對市場變化
- 整合分析師的經驗和直覺
缺點:
- 難以進行電腦計算和回溯測試
- 難以科學驗證其有效性
2.3 比較圖表

2.4 案例研究:移動平均線交叉策略
讓我們通過一個簡單的移動平均線交叉策略來比較客觀和主觀技術分析:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pandas_datareader import data as pdr
import yfinance as yf
yf.pdr_override()
# 下載台積電股票資料
stock_data = pdr.get_data_yahoo("2330.TW", start="2020-01-01", end="2023-12-31")
# 計算5日和20日移動平均線
stock_data['MA5'] = stock_data['Close'].rolling(window=5).mean()
stock_data['MA20'] = stock_data['Close'].rolling(window=20).mean()
# 生成交易訊號
stock_data['Signal'] = np.where(stock_data['MA5'] > stock_data['MA20'], 1, 0)
stock_data['Position'] = stock_data['Signal'].diff()
# 計算收益
stock_data['Returns'] = np.log(stock_data['Close'] / stock_data['Close'].shift(1))
stock_data['Strategy'] = stock_data['Position'].shift(1) * stock_data['Returns']
# 繪製圖表
plt.figure(figsize=(12,6))
plt.plot(stock_data.index, stock_data['Close'], label='收盤價')
plt.plot(stock_data.index, stock_data['MA5'], label='5日MA')
plt.plot(stock_data.index, stock_data['MA20'], label='20日MA')
plt.scatter(stock_data[stock_data['Position'] == 1].index,
stock_data[stock_data['Position'] == 1]['Close'],
label='買入訊號', marker='^', color='g')
plt.scatter(stock_data[stock_data['Position'] == -1].index,
stock_data[stock_data['Position'] == -1]['Close'],
label='賣出訊號', marker='v', color='r')
plt.title('台積電股票 - 移動平均線交叉策略')
plt.xlabel('日期')
plt.ylabel('價格')
plt.legend()
plt.show()
# 計算策略績效
cumulative_returns = stock_data['Strategy'].cumsum()
print(f"策略累積收益: {cumulative_returns.iloc[-1]:.2%}")
這個例子展示了客觀技術分析的特點:
- 明確的規則:5日MA上穿20日MA買入,下穿賣出
- 可量化的結果:策略收益可以精確計算
- 可重複驗證:任何人使用相同的資料和規則都能得到相同結果
相比之下,主觀技術分析可能會考慮:
- 市場氛圍
- 其他技術指標
- 基本面因素
2.5 互動練習
嘗試修改上述程式碼,使用不同的移動平均線週期(例如10日和50日),觀察策略績效的變化。思考:為什麼會有這樣的變化?這是否說明了客觀技術分析的局限性?
第三章:實證技術分析(EBTA)的崛起
3.1 EBTA:技術分析的科學革命
實證技術分析(EBTA)就像是技術分析界的哥白尼革命,它試圖將這個領域從主觀猜測轉變為客觀科學。
定義:
- 以客觀觀察和統計推理為基礎的分析方法
- 目標是構建關於市場行為的科學知識體系
特點:
- 強調可驗證的預測
- 使用先進統計方法評估回溯測試結果
- 排斥純主觀的分析方法

3.2 EBTA的應用示例
讓我們用一個簡單的例子來說明EBTA的應用:
import pandas as pd
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
from pandas_datareader import data as pdr
import yfinance as yf
yf.pdr_override()
# 下載台積電股票資料
stock_data = pdr.get_data_yahoo("2330.TW", start="2020-01-01", end="2023-12-31")
# 計算日收益率
stock_data['Returns'] = stock_data['Close'].pct_change()
# 計算20日動量
stock_data['Momentum'] = stock_data['Close'] / stock_data['Close'].shift(20) - 1
# 將動量分為高、中、低三組
stock_data['Momentum_Rank'] = pd.qcut(stock_data['Momentum'], q=3, labels=['Low', 'Medium', 'High'])
# 計算每組的平均未來收益率
future_returns = stock_data.groupby('Momentum_Rank')['Returns'].shift(-1).mean()
# 進行統計檢驗
f_statistic, p_value = stats.f_oneway(
stock_data[stock_data['Momentum_Rank'] == 'Low']['Returns'].shift(-1).dropna(),
stock_data[stock_data['Momentum_Rank'] == 'Medium']['Returns'].shift(-1).dropna(),
stock_data[stock_data['Momentum_Rank'] == 'High']['Returns'].shift(-1).dropna()
)
# 繪製結果
plt.figure(figsize=(10,6))
future_returns.plot(kind='bar')
plt.title('動量效應分析')
plt.xlabel('動量排名')
plt.ylabel('平均未來收益率')
plt.show()
print(f"F統計量: {f_statistic:.4f}")
print(f"P值: {p_value:.4f}")
這個例子展示了EBTA的幾個關鍵特點:
- 客觀的指標定義(20日動量)
- 統計方法的應用(方差分析)
- 可重複驗證的結果
3.3 思考問題
- EBTA如何改變了傳統技術分析的方法論?
- 在實際交易中,如何平衡EBTA的科學性和市場的不可預測性?
- EBTA是否完全排除了主觀判斷的價值?為什麼?
第四章:系統評估和績效基準
4.1 為什麼需要系統評估?
想像你正在挑選一輛新車。你不會只看外表,對吧?你會關心它的性能、油耗、安全性等。同樣的,在技術分析中,我們需要全面評估一個交易系統的表現。
系統評估的重要性:
- 衡量系統的有效性
- 比較不同策略的優劣
- 避免過度擬合(overfitting)
4.2 績效評估的關鍵因素

4.3 消除趨勢:平衡的藝術
消除趨勢就像是在天平上找到平衡點。我們通過調整歷史資料,使市場的平均每日價格變化為0,這樣就可以排除市場大趨勢對系統績效的影響。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pandas_datareader import data as pdr
import yfinance as yf
yf.pdr_override()
# 下載台積電股票資料
stock_data = pdr.get_data_yahoo("2330.TW", start="2020-01-01", end="














