</>
#
WEALTH CODE CURRICULUM

บทที่ 3: Understand Investments
โลกของการลงทุนและสินทรัพย์

"ให้เงินทำงานแทนเรา ผ่านพลังของสินทรัพย์และการลงทุน"

เรียนรู้ประเภทของสินทรัพย์ ผลตอบแทน ค่าธรรมเนียม และการทำ Normalization เพื่อเปรียบเทียบข้อมูลด้วย Pandas

{}

เส้นทางการเรียนรู้ (120 นาที)

10m

CASE

ฝากแบงก์ VS ลงทุนหุ้น

20m

CONCEPT

Asset Classes & Return

25m

CODE ALONG

คณิตศาสตร์ของการปรับฐาน (Normalization)

45m

BUILD

สร้าง Asset Comparison Tool

15m

DEFEND

วิเคราะห์ค่าธรรมเนียมและสภาพคล่อง

05m

EXIT

No Free Lunch (ไม่มีของฟรีในโลกการเงิน)

?
CASE STUDY

ทางแยกของ "เงินเก็บ 1 แสนบาท"

นาย A ฝากออมทรัพย์

ดอกเบี้ย 0.5% ต่อปี

10 ปีผ่านไป ได้เงิน: 105,114 บาท
VS

นาย B ซื้อหุ้นระดับโลก

ผลตอบแทน 8% ต่อปี

10 ปีผ่านไป ได้เงิน: 215,892 บาท

คำถาม: ถ้าหุ้นดีขนาดนี้ ทำไมทุกคนถึงไม่เอาเงินทั้งหมดไปซื้อหุ้นให้หมด?

%
CONCEPT

โลกของสินทรัพย์ (Asset Classes)

เงินสด (Cash)

ฝากธนาคาร ถอนง่ายที่สุด แต่ผลตอบแทนต่ำมาก แพ้เงินเฟ้อ

ความเสี่ยง: ต่ำมาก

พันธบัตร (Bonds)

เราเป็น "เจ้าหนี้" ปล่อยกู้ให้รัฐบาลหรือบริษัท ได้ดอกเบี้ยสม่ำเสมอ

ความเสี่ยง: ต่ำ-ปานกลาง

หุ้น (Stocks / Equities)

เราเป็น "เจ้าของกิจการ" ได้เงินปันผลและกำไรจากราคาที่สูงขึ้น

ความเสี่ยง: สูง

สินทรัพย์ทางเลือก (Alternative)

เช่น ทองคำ, คริปโต หรืออสังหาฯ ราคาผันผวนตามอุปสงค์และอุปทาน

ความเสี่ยง: สูงมาก
&
CONCEPT

เปรียบเทียบของที่ราคาไม่เท่ากัน

ถ้าหุ้น A ราคา 500 บาท ส่วนหุ้น B ราคา 10 บาท เราจะวาดกราฟเทียบกันได้อย่างไรว่าใครเติบโตดีกว่ากัน?

วิธีแก้: การทำ Normalization (ปรับฐานให้เริ่มที่ 100)

$$ Normalized Value = \left( \frac{Current Price}{Base Price} \right) \times 100 $$
Base Price: ราคาในวันแรกสุดที่เราเริ่มลงทุน
ผลลัพธ์: ถ้าค่าออกมา 120 แปลว่าเราได้กำไร 20%
</>
CODE ALONG

คณิตศาสตร์ของการปรับฐานใน Python

สร้างไฟล์ lesson3_intro.py และลองใช้ Pandas คำนวณแบบง่ายๆ

lesson3_intro.py
import pandas as pd

# จำลองราคาหุ้น Apple ในระยะเวลา 3 ปี
prices = [150.0, 165.0, 180.0]

# แปลงเป็นตาราง Pandas
df = pd.DataFrame({"AAPL_Price": prices})

# ดึงราคาตั้งต้น (บรรทัดแรกสุด Index ที่ 0)
base_price = df["AAPL_Price"].iloc[0]

# นำราคาปัจจุบัน หาร ราคาตั้งต้น คูณ 100
df["Normalized"] = (df["AAPL_Price"] / base_price) * 100
print(df)
*
BUILD PROJECT (Step 1/5)

เริ่มสร้าง Asset Comparison Tool

สร้างไฟล์ asset_tool.py และจำลองข้อมูลราคาสินทรัพย์ 3 ประเภท (หุ้น, พันธบัตร, ทองคำ)

asset_tool.py
import streamlit as st
import pandas as pd

st.set_page_config(layout="wide")
st.title("📈 Asset Comparison Tool")
st.write("เปรียบเทียบการเติบโตของสินทรัพย์ ด้วยการปรับฐาน 100 (Normalization)")

# --- 1. เตรียมข้อมูลจำลอง (Mock Data) 5 ปี ---
data = {
    "Year": [2020, 2021, 2022, 2023, 2024],
    "Stock (S&P500)": [3000, 4000, 3800, 4500, 5000],
    "Bond (US Treasuries)": [100, 102, 95, 105, 110],
    "Gold": [1500, 1800, 1750, 1950, 2000]
}
df = pd.DataFrame(data).set_index("Year") # ตั้งปีเป็นแกน X
*
BUILD PROJECT (Step 2/5)

ปรับฐานข้อมูลให้เริ่มที่ 100 ทุกตัว

พิมพ์โค้ดด้านล่างต่อ: นี่คือพลังของ Pandas เราสามารถคำนวณทั้งตารางได้ในบรรทัดเดียว!

asset_tool.py (cont.)
# --- 2. คำนวณ Normalization ---
# df.iloc[0] คือการดึงข้อมูล "บรรทัดแรกสุด" (ปี 2020) ของทุกคอลัมน์มาเป็นตัวหาร
df_normalized = (df / df.iloc[0]) * 100

# คำนวณผลตอบแทนรวม (Total Return) จากค่าบรรทัดสุดท้าย หักด้วย 100
stock_return = df_normalized["Stock (S&P500)"].iloc[-1] - 100
bond_return = df_normalized["Bond (US Treasuries)"].iloc[-1] - 100
gold_return = df_normalized["Gold"].iloc[-1] - 100

Syntax Explanation: iloc[0] หมายถึงดึงข้อมูลแถวบนสุด (เริ่มต้น) ส่วน iloc[-1] หมายถึงดึงข้อมูลแถวล่างสุด (ล่าสุด)

{}
BUILD PROJECT (Step 3/5)

โชว์ผลลัพธ์เป็นตัวเลข (Metrics)

พิมพ์โค้ดด้านล่างต่อ: แบ่งหน้าจอเป็น 3 คอลัมน์ และโชว์ผลตอบแทนสะสมของแต่ละสินทรัพย์

asset_tool.py (cont.)
# --- 3. สร้าง User Interface ---
st.subheader("📊 ผลตอบแทนสะสม (5 ปี)")

col1, col2, col3 = st.columns(3)

with col1:
    st.metric("📈 หุ้น (Stocks)", f"{stock_return:.2f}%")
with col2:
    st.metric("🏛️ พันธบัตร (Bonds)", f"{bond_return:.2f}%")
with col3:
    st.metric("⛏️ ทองคำ (Gold)", f"{gold_return:.2f}%")
[]
BUILD PROJECT (Step 4/5)

วาดกราฟเปรียบเทียบ (Line Chart)

พิมพ์โค้ดชุดสุดท้าย: นำตาราง df_normalized ที่เราคำนวณไว้ มาโยนใส่กราฟเส้นของ Streamlit

asset_tool.py (cont.)
st.divider()
st.subheader("📈 กราฟเปรียบเทียบการเติบโต (ฐาน 100)")

# Streamlit จะดึงข้อมูลคอลัมน์ทั้งหมดไปวาดเป็นเส้นคนละสีให้โดยอัตโนมัติ
st.line_chart(df_normalized)

st.info("💡 ข้อสังเกต: สินทรัพย์ที่ให้ผลตอบแทนสูง มักจะมีความผันผวน (ขึ้นลงรุนแรง) ในระหว่างทางมากกว่าเสมอ!")

พร้อมแล้ว: ไปที่ Terminal พิมพ์ streamlit run asset_tool.py ได้เลย!

*
BUILD PROJECT (Result)

ผลลัพธ์: Asset Comparison Tool

localhost:8501

📈 Asset Comparison Tool

เปรียบเทียบการเติบโตของสินทรัพย์ ด้วยการปรับฐาน 100 (Normalization)

📊 ผลตอบแทนสะสม (5 ปี)

📈 หุ้น (Stocks)
66.67%
🏛️ พันธบัตร (Bonds)
10.00%
⛏️ ทองคำ (Gold)
33.33%

📈 กราฟเปรียบเทียบการเติบโต (ฐาน 100)

(พื้นที่สำหรับกราฟเส้น Streamlit)
@
DEFEND

ตัวแปรที่มองไม่เห็นบนกราฟ

เห็นผลตอบแทนหุ้นดีที่สุด แต่มี 2 เรื่องสำคัญที่นักลงทุนมือใหม่มักมองข้าม:

ค่าธรรมเนียม (Fees)

การซื้อขายหุ้นหรือกองทุนมักมีค่าธรรมเนียมแฝง (เช่น ค่าคอมมิชชัน, Management Fee)

"ผลตอบแทน 10% ถ้าโดนหักค่าธรรมเนียม 2% ทุกปี ในระยะยาวเงินคุณจะหายไปมหาศาล"

สภาพคล่อง (Liquidity)

ความเร็วในการเปลี่ยนสินทรัพย์กลับมาเป็น "เงินสด"

  • หุ้น: ขายแล้วได้เงินสดไว (สภาพคล่องสูง)
  • อสังหาฯ: กว่าจะขายบ้านได้อาจใช้เวลาเป็นปี (สภาพคล่องต่ำ)
%
EXIT

No Free Lunch in Finance

"ไม่มีของฟรี ในโลกของการลงทุน"

ผลตอบแทนที่สูงขึ้น ย่อมแลกมาด้วยความเสี่ยงที่สูงขึ้นเสมอ
ความเสี่ยงในที่นี้หมายถึง "ความผันผวน" (Volatility)
ที่ราคาอาจร่วงลงไปติดลบอย่างรุนแรงในบางปี

"หน้าที่ของนักลงทุนที่ดี ไม่ใช่การหาของที่กำไรเยอะที่สุด
แต่คือการผสมสินทรัพย์ (Asset Allocation) ให้เหมาะกับความเสี่ยงที่ตัวเองรับได้"