二手服饰流通利润建模程序(Python)
——限量潮款 & 奢侈品二手转售年化收益计算
一、实际应用场景描述(真实业务抽象)
在《时尚产业与品牌创新》课程中,循环时尚(Circular Fashion)与二手流通(Resale Economy)已成为品牌延伸价值链的重要创新路径。
典型场景:
- 限量潮牌(Limited Drops):Supreme、Palace、Off-White 等,发售价 ¥1000,二级市场溢价至 ¥2000–5000
- 奢侈品手袋 / 经典款:Chanel、Hermès、Louis Vuitton,具备抗通胀属性,二手价格随时间上涨
- 品牌官方认证二手(Brand-Led Resale):Patagonia Worn Wear、Gucci Vault、Stella McCartney LCA 等
- 个人投资者 / 潮品炒家:通过抢购限量款,在二手平台(StockX、GOAT、得物)转售获利
但在实际运作中,参与者常面临:
- 持有成本被忽视:资金占用、仓储、保养、保险
- 交易成本过高:平台佣金、鉴定费、运费、支付手续费
- 价格波动风险:潮款热度消退后价格暴跌
- 无法量化年化收益率:"赚了"和"年化收益 15%"是两回事
本程序用 Python 构建参数化二手服饰流通利润模型,量化测算:
- 单笔转售的净收益
- 年化收益率(ROI Annualized)
- 不同持有周期的收益变化
- 交易成本对利润的侵蚀程度
二、引入痛点(为什么要用代码算)
手工算账的常见盲区:
1. "原价 ¥1000,卖了 ¥2000,赚了一倍"
- 忽略:平台佣金 10%–20%、鉴定费 ¥50、运费 ¥30、支付手续费 1%
- 实际到手可能仅 ¥1600,净利率只有 60%
2. 持有成本完全被无视
- 资金占用 6 个月,机会成本是真实存在的
- 仓储、防潮、防霉、保险等隐性成本
- 若年化资金成本 8%,6 个月就是 4%
3. 无法比较不同持有周期的收益
- 持有 3 个月赚 ¥600 vs. 持有 12 个月赚 ¥800
- 前者年化 80%,后者年化 20% —— 差异巨大
4. 潮款 vs. 奢侈品的收益结构完全不同
- 潮款:高波动、高交易频率、高换手
- 奢侈品:低波动、长期持有、保值增值
→ 用代码把"二手倒卖"从投机感觉变成可计算、可对比的投资模型。
三、核心逻辑讲解(先业务后代码)
1️⃣ 二手转售收益计算公式
买入成本 = 发售价 + 买入运费 + 买入手续费
卖出净收入 = 卖出价
− 平台佣金
− 鉴定费
− 卖出运费
− 支付手续费
− 其他费用(清洁、维修等)
名义收益 = 卖出净收入 − 买入成本
持有成本 = 买入成本 × 年化资金成本 × 持有年数
+ 仓储/保养成本
+ 保险成本
净收益 = 名义收益 − 持有成本
年化收益率 = (净收益 / 买入成本) / 持有年数
2️⃣ 两类商品模型对比
维度 限量潮款 奢侈品经典款
价格波动 高(±50%) 低(±10%)
持有周期 短(1–6 个月) 长(1–5 年)
交易频率 高 低
折旧风险 高(过季即贬值) 低(经典款保值)
收益来源 炒作溢价 稀缺性 + 品牌溢价
资金占用 中短期 长期
3️⃣ 教学参考参数
参数 潮款示例 奢侈品示例
发售价 ¥1,000 ¥20,000
二手卖出价 ¥2,000 ¥24,000
平台佣金率 20% 10%
鉴定费 ¥50 ¥200
持有周期 3 个月 2 年
年化资金成本 8% 8%
仓储保养成本 ¥50 ¥500
四、程序结构设计(模块化)
resale_profit_modeler/
├── main.py # 主程序入口
├── config.py # 参数配置
├── cost_model.py # 买入成本与交易成本计算
├── holding_cost_model.py # 持有成本(资金占用+仓储)
├── roi_calculator.py # 年化收益率计算
├── scenario_model.py # 潮款 vs. 奢侈品情景建模
├── comparator.py # 多情景对比分析
├── reporter.py # 报表输出
├── README.md # 使用说明
└── knowledge_card.md # 核心知识点卡片
五、代码实现(Python,注释清晰)
"config.py"
"""
二手服饰流通利润建模 — 参数配置
所有数值均为教学示例,可按实际平台/商品调整
"""
# ---- 通用交易成本 ----
PLATFORM_COMMISSION_RATE = 0.15 # 平台佣金率(15%)
AUTHENTICATION_FEE = 50.0 # 鉴定费(元)
SHIPPING_FEE_BUY = 20.0 # 买入运费
SHIPPING_FEE_SELL = 30.0 # 卖出运费
PAYMENT_PROCESSING_RATE = 0.01 # 支付手续费(1%)
OTHER_FEES = 0.0 # 清洁/维修等其他费用
# ---- 持有成本 ----
ANNUAL_CAPITAL_COST = 0.08 # 年化资金成本(8%,机会成本)
STORAGE_COST_PER_MONTH = 10.0 # 月仓储成本(元)
INSURANCE_RATE = 0.005 # 保险费率(占商品价值)
# ---- 情景参数 ----
# 限量潮款
STREETWEAR_MSRP = 1000.0 # 发售价
STREETWEAR_RESALE = 2000.0 # 二手卖出价
STREETWEAR_HOLDING_MONTHS = 3 # 持有周期(月)
# 奢侈品经典款
LUXURY_MSRP = 20000.0 # 发售价
LUXURY_RESALE = 24000.0 # 二手卖出价
LUXURY_HOLDING_MONTHS = 24 # 持有周期(月)
# ---- 敏感性分析 ----
HOLDING_PERIOD_RANGE = [1, 3, 6, 12, 24, 36] # 持有周期扫描(月)
"cost_model.py"
from config import (
PLATFORM_COMMISSION_RATE,
AUTHENTICATION_FEE,
SHIPPING_FEE_BUY,
SHIPPING_FEE_SELL,
PAYMENT_PROCESSING_RATE,
OTHER_FEES,
)
def calculate_buy_cost(purchase_price):
"""
计算买入总成本
:param purchase_price: 发售价/买入价
:return: 买入总成本
"""
total = (
purchase_price
+ SHIPPING_FEE_BUY
)
return round(total, 2)
def calculate_sell_net_revenue(resale_price):
"""
计算卖出净收入(扣除所有交易成本)
:param resale_price: 二手卖出价
:return: 净收入
"""
platform_commission = resale_price * PLATFORM_COMMISSION_RATE
payment_fee = resale_price * PAYMENT_PROCESSING_RATE
net = (
resale_price
- platform_commission
- AUTHENTICATION_FEE
- SHIPPING_FEE_SELL
- payment_fee
- OTHER_FEES
)
return round(net, 2)
def calculate_transaction_costs(resale_price, purchase_price):
"""
计算各项交易成本明细(用于报表)
"""
return {
"purchase_price": purchase_price,
"platform_commission": round(resale_price * PLATFORM_COMMISSION_RATE, 2),
"authentication_fee": AUTHENTICATION_FEE,
"shipping_buy": SHIPPING_FEE_BUY,
"shipping_sell": SHIPPING_FEE_SELL,
"payment_fee": round(resale_price * PAYMENT_PROCESSING_RATE, 2),
"other_fees": OTHER_FEES,
}
"holding_cost_model.py"
from config import (
ANNUAL_CAPITAL_COST,
STORAGE_COST_PER_MONTH,
INSURANCE_RATE,
)
def calculate_holding_cost(buy_cost, holding_months):
"""
计算持有成本
:param buy_cost: 买入成本
:param holding_months: 持有月数
:return: 总持有成本
"""
# 资金占用成本(年化转月化)
capital_cost = buy_cost * ANNUAL_CAPITAL_COST * (holding_months / 12)
# 仓储成本
storage_cost = STORAGE_COST_PER_MONTH * holding_months
# 保险成本(按年计,按持有比例折算)
insurance_cost = buy_cost * INSURANCE_RATE * (holding_months / 12)
total = capital_cost + storage_cost + insurance_cost
return round(total, 2)
def get_holding_cost_breakdown(buy_cost, holding_months):
"""持有成本结构拆解"""
capital_cost = buy_cost * ANNUAL_CAPITAL_COST * (holding_months / 12)
storage_cost = STORAGE_COST_PER_MONTH * holding_months
insurance_cost = buy_cost * INSURANCE_RATE * (holding_months / 12)
return {
"capital_cost": round(capital_cost, 2),
"storage_cost": round(storage_cost, 2),
"insurance_cost": round(insurance_cost, 2),
}
"roi_calculator.py"
from holding_cost_model import calculate_holding_cost
def calculate_net_profit(buy_cost, sell_net_revenue, holding_months):
"""
计算净收益
"""
holding_cost = calculate_holding_cost(buy_cost, holding_months)
nominal_profit = sell_net_revenue - buy_cost
net_profit = nominal_profit - holding_cost
return round(net_profit, 2), round(holding_cost, 2)
def calculate_annualized_roi(buy_cost, net_profit, holding_months):
"""
计算年化收益率
ROI_annualized = (净收益 / 买入成本) / 持有年数
"""
if holding_months == 0:
return 0.0
holding_years = holding_months / 12
roi = (net_profit / buy_cost) / holding_years
return round(roi * 100, 2) # 转为百分比
def calculate_simple_roi(buy_cost, sell_net_revenue):
"""简单收益率(不考虑持有成本)"""
profit = sell_net_revenue - buy_cost
roi = profit / buy_cost * 100
return round(roi, 2)
"scenario_model.py"
from config import *
from cost_model import calculate_buy_cost, calculate_sell_net_revenue
from roi_calculator import calculate_net_profit, calculate_annualized_roi
from holding_cost_model import get_holding_cost_breakdown
def build_scenario(msrp, resale_price, holding_months, label):
"""
构建一个完整情景
"""
buy_cost = calculate_buy_cost(msrp)
sell_net = calculate_sell_net_revenue(resale_price)
net_profit, holding_cost = calculate_net_profit(
buy_cost, sell_net, holding_months
)
annualized_roi = calculate_annualized_roi(
buy_cost, net_profit, holding_months
)
simple_roi = (sell_net - buy_cost) / buy_cost * 100
holding_breakdown = get_holding_cost_breakdown(buy_cost, holding_months)
return {
"label": label,
"msrp": msrp,
"resale_price": resale_price,
"holding_months": holding_months,
"buy_cost": buy_cost,
"sell_net_revenue": sell_net,
"holding_cost": holding_cost,
"holding_breakdown": holding_breakdown,
"net_profit": net_profit,
"simple_roi": round(simple_roi, 2),
"annualized_roi": annualized_roi,
}
def get_all_scenarios():
"""返回所有预设情景"""
scenarios = []
# 限量潮款
scenarios.append(
build_scenario(
msrp=STREETWEAR_MSRP,
resale_price=STREETWEAR_RESALE,
holding_months=STREETWEAR_HOLDING_MONTHS,
label="限量潮款(3个月)",
)
)
# 奢侈品经典款
scenarios.append(
build_scenario(
msrp=LUXURY_MSRP,
resale_price=LUXURY_RESALE,
holding_months=LUXURY_HOLDING_MONTHS,
label="奢侈品经典款(2年)",
)
)
return scenarios
"comparator.py"
from config import HOLDING_PERIOD_RANGE
from scenario_model import build_scenario
from cost_model import calculate_buy_cost, calculate_sell_net_revenue
from roi_calculator import calculate_net_profit, calculate_annualized_roi
def compare_holding_periods(msrp, resale_price, label_prefix="商品"):
"""
对比不同持有周期的收益变化
"""
results = []
buy_cost = calculate_buy_cost(msrp)
sell_net = calculate_sell_net_revenue(resale_price)
for months in HOLDING_PERIOD_RANGE:
net_profit, holding_cost = calculate_net_profit(
buy_cost, sell_net, months
)
annualized_roi = calculate_annualized_roi(
buy_cost, net_profit, months
)
results.append({
"holding_months": months,
"holding_years": round(months / 12, 2),
"net_profit": net_profit,
"holding_cost": holding_cost,
"annualized_roi": annualized_roi,
})
return {
"label": label_prefix,
"msrp": msrp,
"resale_price": resale_price,
"results": results,
}
def find_optimal_holding_period(msrp, resale_price):
"""
寻找年化收益最高的持有周期
"""
buy_cost = calculate_buy_cost(msrp)
sell_net = calculate_sell_net_revenue(resale_price)
best = None
best_roi = -float('inf')
for months in HOLDING_PERIOD_RANGE:
net_profit, _ = calculate_net_profit(buy_cost, sell_net, months)
annualized_roi = calculate_annualized_roi(
buy_cost, net_profit, months
)
if annualized_roi > best_roi:
best_roi = annualized_roi
best = months
return best, round(best_roi, 2)
"reporter.py"
from config import STORAGE_COST_PER_MONTH
def print_scenario_report(scenarios):
print("\n" + "=" * 80)
print(" 二手服饰流通利润建模 — 情景分析报告")
print("=" * 80)
for s in scenarios:
print(f"\n📌 【{s['label']}】")
print(f" 发售价:¥{s['msrp']:.0f}")
print(f" 二手卖出价:¥{s['resale_price']:.0f}")
print(f" 持有周期:{s['holding_months']} 个月")
print(f" 买入成本:¥{s['buy_cost']:.0f}")
print(f" 卖出净收入:¥{s['sell_net_revenue']:.0f}")
print(f" 持有成本:¥{s['holding_cost']:.0f}")
print(f" ├─ 资金占用:¥{s['holding_breakdown']['capital_cost']:.0f}")
print(f" ├─ 仓储({s['holding_months']}个月):¥{s['holding_breakdown']['storage_cost']:.0f}")
print(f" └─ 保险:¥{s['holding_breakdown']['insurance_cost']:.0f}")
print(f" 净收益:¥{s['net_profit']:.0f}")
print(f" 简单收益率:{s['simple_roi']:.1f}%")
print(f" 年化收益率:{s['annualized_roi']:.1f}%")
if s['annualized_roi'] > 8:
verdict = "✅ 跑赢通胀"
elif s['annualized_roi'] > 0:
verdict = "⚠️ 微利"
else:
verdict = "❌ 亏损"
print(f" 评价:{verdict}")
def print_holding_period_comparison(comparison):
"""打印不同持有周期对比"""
print(f"\n{'=' * 80}")
print(f" 持有周期敏感性分析 — {comparison['label']}")
print(f" 发售价 ¥{comparison['msrp']:.0f} → 二手价 ¥{comparison['resale_price']:.0f}")
print(f"{'=' * 80}")
print(f"\n{'持有月数':<12}{'持有年数':<12}{'净收益':<14}{'持有成本':<14}{'年化收益率':<14}")
print("-" * 80)
for r in comparison["results"]:
print(
f"{r['holding_months']:<12}"
f"{r['holding_years']:<12}"
f"¥{r['net_profit']:<13,.0f}"
f"¥{r['holding_cost']:<13,.0f}"
f"{r['annualized_roi']:<13.1f}%"
)
def print_summary(scenarios):
print(f"\n{'=' * 80}")
print(" 核心结论摘要")
print(f"{'=' * 80}")
best = max(scenarios, key=lambda x: x['annualized_roi'])
print(f"\n✅ 年化收益最高的情景:{best['label']}")
print(f" 年化收益率:{best['annualized_roi']:.1f}%")
print(f" 净收益:¥{best['net_profit']:.0f}")
print(f" 持有周期:{best['holding_months']} 个月")
print(f"\n📊 关键洞察:")
print(f" 1. 潮款:高收益但持有期短,需频繁交易")
print(f" 2. 奢侈品:收益稳定但资金占用时间长")
print(f" 3. 交易成本平均吃掉 15–25% 的收益")
print(f" 4. 仓储成本(¥{STORAGE_COST_PER_MONTH}/月)不可忽视")
print(f"\n💡 风险提示:")
print(f" • 潮款价格高度波动,模型假设价格维持不变")
print(f" • 实际交易中可能出现鉴定失败、退货等额外成本")
print(f" • 流动性风险:高价不一定能快速卖出")
"main.py"
from scenario_model import get_all_scenarios
from comparator import compare_holding_periods, find_optimal_holding_period
from reporter import print_scenario_report, print_holding_period_comparison, print_summary
def main():
print("=" * 80)
print(" 二手服饰流通利润建模程序")
print(" Secondhand Fashion Resale Profit Modeling Tool")
print("=" * 80)
# 1. 情景分析
scenarios = get_all_scenarios()
print_scenario_report(scenarios)
# 2. 持有周期敏感性分析(潮款)
streetwear_comp = compare_holding_periods(
msrp=1000,
resale_price=2000,
label_prefix="限量潮款"
)
print_holding_period_comparison(streetwear_comp)
# 3. 寻找最优持有周期
optimal_months, optimal_roi = find_optimal_holding_period(
msrp=1000,
resale_price=2000,
)
print(f"\n📈 潮款最优持有周期:{optimal_months} 个月(年化 {optimal_roi:.1f}%)")
# 4. 总结
print_summary(scenarios)
print(f"\n{'=' * 80}")
print(" 模拟完成。请修改 config.py 调整参数后重新运行。")
print(f"{'=' * 80}")
if __name__ == "__main__":
main()
六、README.md(使用说明)
# 二手服饰流通利润建模程序
# Secondhand Fashion Resale Profit Modeling Tool
## 用途
- 《时尚产业与品牌创新》课程:循环时尚与二手经济教学示例
- 限量潮牌 / 奢侈品二手转售:收益测算与投资决策支持
- 技术布道:Python 参数化金融建模
## 运行方式
bash
python main.py
## 修改参数
编辑 `config.py`:
- STREETWEAR_MSRP / STREETWEAR_RESALE :潮款发售价与二手价
- LUXURY_MSRP / LUXURY_RESALE :奢侈品发售价与二手价
- PLATFORM_COMMISSION_RATE :平台佣金率
- AUTHENTICATION_FEE :鉴定费
- ANNUAL_CAPITAL_COST :年化资金成本(机会成本)
- STORAGE_COST_PER_MONTH :仓储成本
- INSURANCE_RATE :保险费率
- HOLDING_PERIOD_RANGE :持有周期扫描范围(月)
## 输出说明
- 各情景的买入成本、交易成本、持有成本、净收益
- 简单收益率 vs. 年化收益率
- 不同持有周期的收益敏感性分析
- 最优持有周期建议
## 核心指标说明
- **简单收益率**:(卖出净收入 - 买入成本) / 买入成本
- **年化收益率**:考虑持有时间后的标准化收益率
- **持有成本**:资金占用成本 + 仓储 + 保险
## 免责
本程序为教学级参数化模型,结果完全依赖输入假设,
不构成任何投资建议或投资推荐。
二手市场存在高度价格波动与流动性风险。
七、核心知识点卡片
"knowledge_card.md"
## 知识点卡片 — 二手服饰流通利润建模
1️⃣ 循环时尚(Circular Fashion)的商业模式
- 品牌延伸价值链:新品销售 → 二手流转 → 回收再造
- 消费者:降低购买成本,参与可持续消费
- 平台:佣金 + 服务费 + 流量变现
2️⃣ 二手转售收益 ≠ 简单差价
- 交易成本:平台佣金(10–20%)、鉴定费、运费、支付手续费
- 持有成本:资金占用(机会成本)、仓储、保险
- 实际净利率往往比"感觉"低 30–50%
3️⃣ 年化收益率(Annualized ROI)的重要性
- 持有 3 个月赚 50% ≠ 持有 12 个月赚 50%
- 年化收益率消除了时间差异,支持跨周期、跨资产对比
- 是判断二手投资是否"划算"的核心指标
4️⃣ 潮款 vs. 奢侈品的收益结构差异
- 潮款:高波动、高换手、高交易频率 → 收益来自价差
- 奢侈品:低波动、长期持有、保值增值 → 收益类似债券+通胀对冲
- 两者在投资组合中可形成互补
5️⃣ Python 在品牌创新中的作用
- 把"二手倒卖"从投机行为变成可量化的投资模型
- 支持多情景扫描(不同持有周期、不同价格波动)
- 可扩展:蒙特卡洛价格模拟、多商品组合优化、
Streamlit 交互工具、与库存管理系统对接
八、总结(全栈工程师视角)
- 二手服饰流通不是"低买高卖"那么简单,而是一道包含交易成本、时间价值和风险溢价的金融计算题。
- 核心洞察:
- 年化收益率才是唯一可比的指标——短期暴利可能不如长期稳健
- 交易成本是利润的"隐形杀手"——平台佣金 + 鉴定费 + 运费轻易吃掉 20%
- 持有成本是真实存在的——资金占用、仓储、保险,尤其在长期持有奢侈品时
- Python 在这里的价值:
- 把"二手倒卖"从感性投机变成理性、可验证的投资模型
- 支持一键回答:"持有多久卖最划算?""年化收益能否跑赢理财?"
- 可扩展方向:
- 蒙特卡洛价格模拟(对二手价格波动做概率分布)
- 多商品组合优化(潮款 + 奢侈品的投资组合)
- matplotlib 可视化(持有周期–年化收益曲线、收益分布直方图)
- Streamlit 交互工具(供个人投资者/品牌方实时测算)
- 与库存管理系统对接(品牌官方二手业务的自动化利润核算)
真正的循环时尚创新,不只是环保叙事,更是能用数据和模型证明"二手流转是一门可持续的好生意"。 🧮
这套模型已经能完整跑出单笔交易利润 + 年化收益率 + 持有周期敏感性分析了。
利用AI解决实际问题,如果你觉得这个工具好用,欢迎关注长安牧笛!