From f5e9a1f56f2a15240ebed438688714d9c5a7c256 Mon Sep 17 00:00:00 2001 From: Tyler Hoang Date: Tue, 12 May 2026 13:17:19 -0700 Subject: Initial commit --- Tyler_Resume.docx | Bin 0 -> 763293 bytes Tyler_Resume.pdf | Bin 0 -> 53765 bytes assets/prism/financials-placeholder.png | Bin 0 -> 1845876 bytes assets/prism/financials.jpg | Bin 0 -> 81785 bytes assets/prism/insiders.png | Bin 0 -> 214405 bytes assets/prism/logo-current.png | Bin 0 -> 458136 bytes assets/prism/logo-icon.png | Bin 0 -> 26232 bytes assets/prism/logo-lockup.png | Bin 0 -> 61287 bytes assets/prism/overview-placeholder.png | Bin 0 -> 1805442 bytes assets/prism/overview.jpg | Bin 0 -> 55595 bytes assets/prism/overview.png | Bin 0 -> 195839 bytes assets/prism/valuation-placeholder.png | Bin 0 -> 1876671 bytes assets/prism/valuation.jpg | Bin 0 -> 63100 bytes assets/prism/valuation.png | Bin 0 -> 172367 bytes contact.py | 61 + favicon.svg | 6 + index.html | 1877 +++++++++++++++++++++++++++++++ tyler.jpg | Bin 0 -> 447163 bytes 18 files changed, 1944 insertions(+) create mode 100644 Tyler_Resume.docx create mode 100755 Tyler_Resume.pdf create mode 100644 assets/prism/financials-placeholder.png create mode 100644 assets/prism/financials.jpg create mode 100644 assets/prism/insiders.png create mode 100644 assets/prism/logo-current.png create mode 100644 assets/prism/logo-icon.png create mode 100644 assets/prism/logo-lockup.png create mode 100644 assets/prism/overview-placeholder.png create mode 100644 assets/prism/overview.jpg create mode 100644 assets/prism/overview.png create mode 100644 assets/prism/valuation-placeholder.png create mode 100644 assets/prism/valuation.jpg create mode 100644 assets/prism/valuation.png create mode 100755 contact.py create mode 100755 favicon.svg create mode 100755 index.html create mode 100755 tyler.jpg diff --git a/Tyler_Resume.docx b/Tyler_Resume.docx new file mode 100644 index 0000000..4684bde Binary files /dev/null and b/Tyler_Resume.docx differ diff --git a/Tyler_Resume.pdf b/Tyler_Resume.pdf new file mode 100755 index 0000000..b846924 Binary files /dev/null and b/Tyler_Resume.pdf differ diff --git a/assets/prism/financials-placeholder.png b/assets/prism/financials-placeholder.png new file mode 100644 index 0000000..5f8a9a2 Binary files /dev/null and b/assets/prism/financials-placeholder.png differ diff --git a/assets/prism/financials.jpg b/assets/prism/financials.jpg new file mode 100644 index 0000000..bcfb9e2 Binary files /dev/null and b/assets/prism/financials.jpg differ diff --git a/assets/prism/insiders.png b/assets/prism/insiders.png new file mode 100644 index 0000000..c40300d Binary files /dev/null and b/assets/prism/insiders.png differ diff --git a/assets/prism/logo-current.png b/assets/prism/logo-current.png new file mode 100644 index 0000000..1305c3e Binary files /dev/null and b/assets/prism/logo-current.png differ diff --git a/assets/prism/logo-icon.png b/assets/prism/logo-icon.png new file mode 100644 index 0000000..dec839c Binary files /dev/null and b/assets/prism/logo-icon.png differ diff --git a/assets/prism/logo-lockup.png b/assets/prism/logo-lockup.png new file mode 100644 index 0000000..d5ffb96 Binary files /dev/null and b/assets/prism/logo-lockup.png differ diff --git a/assets/prism/overview-placeholder.png b/assets/prism/overview-placeholder.png new file mode 100644 index 0000000..c12d84f Binary files /dev/null and b/assets/prism/overview-placeholder.png differ diff --git a/assets/prism/overview.jpg b/assets/prism/overview.jpg new file mode 100644 index 0000000..353571c Binary files /dev/null and b/assets/prism/overview.jpg differ diff --git a/assets/prism/overview.png b/assets/prism/overview.png new file mode 100644 index 0000000..26bb471 Binary files /dev/null and b/assets/prism/overview.png differ diff --git a/assets/prism/valuation-placeholder.png b/assets/prism/valuation-placeholder.png new file mode 100644 index 0000000..e70773b Binary files /dev/null and b/assets/prism/valuation-placeholder.png differ diff --git a/assets/prism/valuation.jpg b/assets/prism/valuation.jpg new file mode 100644 index 0000000..14d2cc4 Binary files /dev/null and b/assets/prism/valuation.jpg differ diff --git a/assets/prism/valuation.png b/assets/prism/valuation.png new file mode 100644 index 0000000..429a355 Binary files /dev/null and b/assets/prism/valuation.png differ diff --git a/contact.py b/contact.py new file mode 100755 index 0000000..568f114 --- /dev/null +++ b/contact.py @@ -0,0 +1,61 @@ +from flask import Flask, request, jsonify +from flask_cors import CORS +import smtplib +from email.mime.text import MIMEText +from email.mime.multipart import MIMEMultipart +import logging + +app = Flask(__name__) +CORS(app, origins=["https://portfolio.tylerhoang.xyz"]) + +MAIL_HOST = "mail.tylerhoang.xyz" +MAIL_PORT = 25 +FROM_ADDR = "noreply@tylerhoang.xyz" +TO_ADDR = "tyler@tylerhoang.xyz" + +logging.basicConfig(level=logging.INFO) + +@app.route("/contact", methods=["POST"]) +def contact(): + data = request.get_json(silent=True) or request.form + + name = (data.get("name") or "").strip() + email = (data.get("email") or "").strip() + message = (data.get("message") or "").strip() + + if not name or not email or not message: + return jsonify({"error": "All fields are required."}), 400 + + if "@" not in email or "." not in email: + return jsonify({"error": "Invalid email address."}), 400 + + if len(message) > 5000: + return jsonify({"error": "Message too long."}), 400 + + try: + msg = MIMEMultipart("alternative") + msg["Subject"] = f"Portfolio contact from {name}" + msg["From"] = FROM_ADDR + msg["To"] = TO_ADDR + msg["Reply-To"] = email + + body = f"""Name: {name} +Email: {email} + +{message} +""" + msg.attach(MIMEText(body, "plain")) + + with smtplib.SMTP(MAIL_HOST, MAIL_PORT, timeout=10) as smtp: + smtp.sendmail(FROM_ADDR, TO_ADDR, msg.as_string()) + + app.logger.info(f"Contact form submitted by {name} <{email}>") + return jsonify({"success": True}), 200 + + except Exception as e: + app.logger.error(f"Mail error: {e}") + return jsonify({"error": "Failed to send message. Please try again later."}), 500 + + +if __name__ == "__main__": + app.run(host="127.0.0.1", port=5001) diff --git a/favicon.svg b/favicon.svg new file mode 100755 index 0000000..3a00719 --- /dev/null +++ b/favicon.svg @@ -0,0 +1,6 @@ + + + + T + diff --git a/index.html b/index.html new file mode 100755 index 0000000..80d8007 --- /dev/null +++ b/index.html @@ -0,0 +1,1877 @@ + + + + + + + Thuy (Tyler) Hoang - Finance & Analytics + + + + + + + + + + + + + + + + +
+
+
+

Finance & Analytics

+

Thuy
(Tyler)
Hoang

+

Finance professional, CFA Level I candidate, and MS Financial Analytics candidate building a strong edge in valuation, markets, and investor-focused analytics products.

+
+ CFA(R) Level I Candidate + FINRA SIE Certified + JPMorgan Chase +
+ +
+
+
+ Tyler Hoang +
+
+
+ Expected + Aug 2026 +
+
+ Focus + Asset Mgmt +
+
+ Program + MSFA +
+
+
+
+
+ +
+
+
+
Currently Seeking
+

Targeting high-trust roles in asset management, investment research, and quantitative finance where rigorous analysis and strong judgment are valued.

+
+
+
Selected Focus Areas
+
+ Equity Research + Fixed Income + Valuation + Quantitative Analysis + Financial Modeling +
+
+
+
+ +
+
+ +

About Me

+
+
+
+

I'm a finance professional pursuing my Master of Science in Financial Analytics at California State University, Long Beach, with an expected graduation of August 2026. I'm also a CFA Level I candidate with a strong interest in asset management, investment research, and market-driven decision-making.

+

My background combines client-facing banking and branch operations at JPMorgan Chase — including internal controls, cash management, and operational compliance — with quantitative financial modeling and academic work in fixed income, derivatives pricing, machine learning, and valuation.

+

I bring both analytical depth and execution mindset: I can work with financial statements, translate market information into actionable insight, and build tools that make analysis faster and sharper. That shows up in Prism, the investor-focused dashboard I built to streamline company research, valuation, and market context into one workflow. I also hold the FINRA Securities Industry Essentials (SIE) certification and bring fluency in both English and Vietnamese to client and professional relationships.

+
+
+
+
CFA
+
Level I Candidate
+
+
+
3.75
+
CSULB GPA
+
+
+
3.75
+
CSUF GPA
+
+
+
4.0
+
OCC GPA
+
+
+
+
+
+ +
+
+ +

Prism

+
+
+
+ Prism logo +
+
Prism
+
Financial Analysis Dashboard - Spring 2026
+
+
+ +
+
+

Prism is an investor-focused financial analysis dashboard I built to compress the research workflow into one place. It brings together live market data, financial statements, self-computed valuation ratios, comparable-company analysis, options activity, insider trades, SEC filings, and news so a user can move from initial idea to real underwriting faster. I also engineered the valuation layer to handle edge cases cleanly — including non-meaningful P/E, negative free cash flow in DCF, and messy accounting-driven ratio distortions — so the output is more usable in real analysis, not just visually impressive.

+
+
Why It Matters
+

Prism turns scattered analyst work into a single workflow: evaluate the business, check valuation, review options and insider activity, scan filings, and understand market context without bouncing across five different tools.

+
+
+
+
+ Prism overview dashboard screenshot +
+
+
+ Prism valuation dashboard screenshot + Prism insiders dashboard screenshot +
+
+
+
+ Stack + Python + Streamlit + yfinance + pandas + Plotly + SEC EDGAR API + Nginx + systemd +
+
+
+
+
+
Research Workflow
+
Built to move from idea generation to underwriting quickly by keeping core research inputs in one interface.
+
+
+
Valuation Engine
+
DCF, EV/EBITDA, and comps with cleaner bridge logic and explicit handling for negative earnings, EBITDA, and cash flow edge cases.
+
+
+
Fundamentals
+
Financial statements, key ratios, and historical views designed to make business quality and trend changes easier to spot.
+
+
+
Options & Positioning
+
Options flow, volatility context, and insider activity help surface how positioning lines up with the fundamental story.
+
+
+
Filings & Catalysts
+
SEC filings and company-specific disclosures are easy to scan, with direct EDGAR access for primary-source review.
+
+
+
Market Context
+
Indices, rates, volatility, commodities, and news add the macro backdrop needed to interpret single-name moves.
+
+
+
+
+ +
+
+ +

Other Projects

+
+
+
+
Fixed Income · Credit Analysis
+
Boeing Credit & Financial Statement Analysis
+
Analyzed Boeing's debt maturity schedule, leverage ratios, and interest coverage using Bloomberg, quantifying the credit risk premium embedded in bond yields relative to Treasuries. Synthesized findings into a forward-looking narrative on Boeing's capital structure and refinancing risk.
+
+
Key Skills Used
+
+ Bloomberg + Credit Analysis + Fixed Income +
+
+ +
+ +
+
Machine Learning · Time Series
+
WMT Stock Price Prediction with LSTM
+
Built a Long Short-Term Memory (LSTM) neural network in Python to forecast Walmart (WMT) stock prices using historical market data. Evaluated model performance using RMSE and visualized predicted vs. actual prices to assess accuracy and trend-following behavior.
+
+
Key Skills Used
+
+ Python + LSTM + Time Series +
+
+ +
+ +
+
Derivatives · Stochastic Calculus
+
Monte Carlo Simulation - Derivatives Pricing
+
Modeled asset price dynamics using Geometric Brownian Motion (GBM) to simulate thousands of price paths and estimate option payoffs in Python. Applied stochastic calculus concepts to validate outcomes under risk-neutral pricing.
+
+
Key Skills Used
+
+ Monte Carlo + GBM + Options Pricing +
+
+ +
+ +
+
Valuation · Financial Modeling
+
Quantitative Company Analysis
+
Developed advanced spreadsheet models for financial statement analysis, ratio benchmarking, and cash flow forecasting. Produced DCF valuation scenarios under base, optimistic, and downside cases.
+
+
Key Skills Used
+
+ DCF + Forecasting + Excel Modeling +
+
+ +
+
+
+
+ +
+
+ +

Skills

+
+
+
+
Programming & Tools
+
+ Python + pandas + NumPy + scikit-learn + TensorFlow / Keras + statsmodels + Jupyter + Linux + Git +
+
+
+
Finance & Analysis
+
+ Advanced Excel + Bloomberg Terminal + DCF Valuation + Comparable Companies + Fixed Income + Derivatives + Financial Statement Analysis + Credit Analysis +
+
+
+
Quantitative Methods
+
+ OLS Regression + Factor Models + LSTM / GRU + Monte Carlo Simulation + Stochastic Calculus + Time Series + CAPM / Beta Estimation +
+
+
+
Certifications & Languages
+
+ CFA(R) Level I Candidate + FINRA SIE + English (Native) + Vietnamese (Fluent) +
+
+
+
+
+ +
+
+
+ +

Resume

+
+

Academic background, professional experience, and technical skills across finance, analytics, valuation, and investor-focused product work.

+
+
M.S. Financial Analytics - CSULB (Expected Aug 2026)
+
B.A. Business Administration / Finance - CSUF
+
Associate Banker, JPMorgan Chase
+
CFA(R) Level I Candidate - Aug 2026
+
FINRA SIE Certified
+
Python, Advanced Excel, Bloomberg
+
+ +
+
+
+ +
+
+ +

Contact

+
+
+
+

I’m actively pursuing opportunities in asset management, investment research, and quantitative finance. If you’re looking for someone who combines market judgment, analytical rigor, and strong execution, let’s talk.

+ +
+
+
+ + +
+
+ + +
+
+ + +
+

+ Send Message +
+
+
+
+ + + + + + + + diff --git a/tyler.jpg b/tyler.jpg new file mode 100755 index 0000000..7cad13d Binary files /dev/null and b/tyler.jpg differ -- cgit v1.3-2-g0d8e