1
This commit is contained in:
parent
e43760e006
commit
583280294b
@ -1171,6 +1171,12 @@ def _periodized_return_pct(total_return_pct: float, running_days: float, period_
|
|||||||
return round((growth ** (period_days / running_days) - 1) * 100, 4)
|
return round((growth ** (period_days / running_days) - 1) * 100, 4)
|
||||||
|
|
||||||
|
|
||||||
|
def _periodized_return_label(total_return_pct: float, running_days: float, period_days: float) -> str:
|
||||||
|
if running_days < 30:
|
||||||
|
return "样本不足"
|
||||||
|
return _fmt_pct(_periodized_return_pct(total_return_pct, running_days, period_days))
|
||||||
|
|
||||||
|
|
||||||
def send_paper_trading_report(days: int = 30) -> dict:
|
def send_paper_trading_report(days: int = 30) -> dict:
|
||||||
days = max(1, min(_safe_int(days, 30), 365))
|
days = max(1, min(_safe_int(days, 30), 365))
|
||||||
summary = get_paper_trading_summary(days=days)
|
summary = get_paper_trading_summary(days=days)
|
||||||
@ -1186,8 +1192,10 @@ def send_paper_trading_report(days: int = 30) -> dict:
|
|||||||
return_pct = _safe_float(summary.get("account_total_return_pct"))
|
return_pct = _safe_float(summary.get("account_total_return_pct"))
|
||||||
win_rate = _safe_float(summary.get("win_rate"))
|
win_rate = _safe_float(summary.get("win_rate"))
|
||||||
running_days = _paper_running_days()
|
running_days = _paper_running_days()
|
||||||
monthly_return_pct = _periodized_return_pct(return_pct, running_days, 30)
|
monthly_return_pct = _periodized_return_pct(return_pct, running_days, 30) if running_days >= 30 else None
|
||||||
annualized_return_pct = _periodized_return_pct(return_pct, running_days, 365)
|
annualized_return_pct = _periodized_return_pct(return_pct, running_days, 365) if running_days >= 30 else None
|
||||||
|
monthly_return_label = _periodized_return_label(return_pct, running_days, 30)
|
||||||
|
annualized_return_label = _periodized_return_label(return_pct, running_days, 365)
|
||||||
template = "green" if total_pnl >= 0 else "red"
|
template = "green" if total_pnl >= 0 else "red"
|
||||||
elements = [
|
elements = [
|
||||||
{
|
{
|
||||||
@ -1206,8 +1214,8 @@ def send_paper_trading_report(days: int = 30) -> dict:
|
|||||||
"background_style": "default",
|
"background_style": "default",
|
||||||
"columns": [
|
"columns": [
|
||||||
{"tag": "column", "width": "weighted", "weight": 1, "elements": [_card_field("账户收益率", _fmt_pct(return_pct))]},
|
{"tag": "column", "width": "weighted", "weight": 1, "elements": [_card_field("账户收益率", _fmt_pct(return_pct))]},
|
||||||
{"tag": "column", "width": "weighted", "weight": 1, "elements": [_card_field("月化收益率", _fmt_pct(monthly_return_pct))]},
|
{"tag": "column", "width": "weighted", "weight": 1, "elements": [_card_field("月化收益率", monthly_return_label)]},
|
||||||
{"tag": "column", "width": "weighted", "weight": 1, "elements": [_card_field("年化收益率", _fmt_pct(annualized_return_pct))]},
|
{"tag": "column", "width": "weighted", "weight": 1, "elements": [_card_field("年化收益率", annualized_return_label)]},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -1250,6 +1258,8 @@ def send_paper_trading_report(days: int = 30) -> dict:
|
|||||||
"running_days": running_days,
|
"running_days": running_days,
|
||||||
"monthly_return_pct": monthly_return_pct,
|
"monthly_return_pct": monthly_return_pct,
|
||||||
"annualized_return_pct": annualized_return_pct,
|
"annualized_return_pct": annualized_return_pct,
|
||||||
|
"monthly_return_label": monthly_return_label,
|
||||||
|
"annualized_return_label": annualized_return_label,
|
||||||
"summary": summary,
|
"summary": summary,
|
||||||
"sent_at": _now(),
|
"sent_at": _now(),
|
||||||
"push_result": push_result,
|
"push_result": push_result,
|
||||||
|
|||||||
@ -428,8 +428,10 @@ def test_send_paper_trading_report_pushes_performance_summary(monkeypatch, buy_n
|
|||||||
|
|
||||||
assert result["ok"] is True
|
assert result["ok"] is True
|
||||||
assert result["running_days"] >= 1
|
assert result["running_days"] >= 1
|
||||||
assert "monthly_return_pct" in result
|
assert result["monthly_return_pct"] is None
|
||||||
assert "annualized_return_pct" in result
|
assert result["annualized_return_pct"] is None
|
||||||
|
assert result["monthly_return_label"] == "样本不足"
|
||||||
|
assert result["annualized_return_label"] == "样本不足"
|
||||||
assert pushed[-1]["metadata"]["event_type"] == "trade_report"
|
assert pushed[-1]["metadata"]["event_type"] == "trade_report"
|
||||||
text = _visible_card_text(pushed[-1])
|
text = _visible_card_text(pushed[-1])
|
||||||
assert "交易报告" in text
|
assert "交易报告" in text
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user