File size: 6,037 Bytes
da0ce7b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#!/usr/bin/env python3
"""

Validate Alpaca cost calculation logic

"""
from aureon_baton_link import link_system as _baton_link; _baton_link(__name__)
import sys
import os

if sys.platform == 'win32':
    os.environ['PYTHONIOENCODING'] = 'utf-8'

# Test the cost logic
print("=" * 70)
print("ALPACA COST CALCULATION VALIDATION")
print("=" * 70)
print()

# Alpaca Crypto Fee Tiers
print("📊 ALPACA FEE TIERS (Crypto):")
print("  Tier 1 ($0-$100K):        Maker 0.15%, Taker 0.25%")
print("  Tier 2 ($100K-$500K):     Maker 0.12%, Taker 0.22%")
print("  Tier 3 ($500K-$1M):       Maker 0.10%, Taker 0.20%")
print()

# Test calculation
from_value_usd = 9.50  # ETH value in USD
print(f"Test Trade: ETH → USDC")
print(f"From Value: ${from_value_usd:.2f}")
print()

# Scenario 1: Direct conversion (if supported)
print("SCENARIO 1: Direct ETH/USDC pair (if available)")
print("-" * 70)
taker_fee_pct = 0.0025  # 0.25% (Tier 1)
spread_pct = 0.0001  # 0.01% typical for liquid pairs
slippage_pct = 0.0001  # 0.01% minimal for small trades

total_cost_pct_direct = taker_fee_pct + spread_pct + slippage_pct
total_cost_usd_direct = from_value_usd * total_cost_pct_direct

print(f"  Taker Fee:  {taker_fee_pct*100:.4f}% = ${from_value_usd * taker_fee_pct:.4f}")
print(f"  Spread:     {spread_pct*100:.4f}% = ${from_value_usd * spread_pct:.4f}")
print(f"  Slippage:   {slippage_pct*100:.4f}% = ${from_value_usd * slippage_pct:.4f}")
print(f"  TOTAL:      {total_cost_pct_direct*100:.4f}% = ${total_cost_usd_direct:.4f}")
print()

# Scenario 2: Two-leg conversion ETH→USD→USDC
print("SCENARIO 2: Two-leg conversion ETH→USD→USDC")
print("-" * 70)

# Leg 1: ETH → USD
print("Leg 1: Sell ETH for USD")
leg1_fee = from_value_usd * taker_fee_pct
leg1_spread = from_value_usd * spread_pct
leg1_total = leg1_fee + leg1_spread
usd_received = from_value_usd - leg1_total

print(f"  Taker Fee:  {taker_fee_pct*100:.4f}% = ${leg1_fee:.4f}")
print(f"  Spread:     {spread_pct*100:.4f}% = ${leg1_spread:.4f}")
print(f"  Leg 1 Cost: ${leg1_total:.4f}")
print(f"  USD Received: ${usd_received:.2f}")
print()

# Leg 2: USD → USDC
print("Leg 2: Buy USDC with USD")
leg2_fee = usd_received * taker_fee_pct
leg2_spread = usd_received * spread_pct
leg2_total = leg2_fee + leg2_spread
usdc_received = usd_received - leg2_total

print(f"  Taker Fee:  {taker_fee_pct*100:.4f}% = ${leg2_fee:.4f}")
print(f"  Spread:     {spread_pct*100:.4f}% = ${leg2_spread:.4f}")
print(f"  Leg 2 Cost: ${leg2_total:.4f}")
print(f"  USDC Received: ${usdc_received:.2f}")
print()

total_cost_usd_twolegs = leg1_total + leg2_total
total_cost_pct_twolegs = total_cost_usd_twolegs / from_value_usd

print("TOTAL CONVERSION COST (Two-leg):")
print(f"  Combined Cost: ${total_cost_usd_twolegs:.4f} ({total_cost_pct_twolegs*100:.4f}%)")
print(f"  Net USDC: ${usdc_received:.2f}")
print()

# What momentum is needed to break even?
print("=" * 70)
print("MOMENTUM REQUIRED TO BREAK EVEN:")
print("=" * 70)
print()
print(f"With {total_cost_pct_direct*100:.4f}% costs (direct), need momentum >  {total_cost_pct_direct*100:.4f}%/min")
print(f"With {total_cost_pct_twolegs*100:.4f}% costs (two-leg), need momentum > {total_cost_pct_twolegs*100:.4f}%/min")
print()

# Check current reported costs
print("=" * 70)
print("CURRENT SYSTEM COST CALCULATION:")
print("=" * 70)
print()
print("From logs: Total Costs = $0.0481 (0.51%)")
print()
print("Analysis:")
cost_reported = 0.0481
cost_pct_reported = 0.51 / 100  # 0.51%

print(f"  Reported Cost: ${cost_reported:.4f} ({cost_pct_reported*100:.2f}%)")
print()

# Check if this is reasonable
if cost_pct_reported > total_cost_pct_twolegs * 1.5:
    print("❌ ISSUE DETECTED:")
    print(f"   Expected cost (two-leg): {total_cost_pct_twolegs*100:.4f}%")
    print(f"   Reported cost: {cost_pct_reported*100:.2f}%")
    print(f"   Difference: {(cost_pct_reported - total_cost_pct_twolegs)*100:.2f}%")
    print()
    print("   Possible issues:")
    print("   1. Costs being counted twice (entry + exit)?")
    print("   2. Spread estimate too high?")
    print("   3. Including slippage that hasn't happened yet?")
    print("   4. Using wrong fee tier?")
elif cost_pct_reported < total_cost_pct_direct * 0.5:
    print("⚠️  WARNING: Reported cost seems too LOW")
    print(f"   Expected minimum (direct): {total_cost_pct_direct*100:.4f}%")
    print(f"   Reported cost: {cost_pct_reported*100:.2f}%")
else:
    print("✅ Cost calculation appears reasonable")
    print(f"   Within expected range: {total_cost_pct_direct*100:.4f}% - {total_cost_pct_twolegs*100:.4f}%")
    print(f"   Reported: {cost_pct_reported*100:.2f}%")

print()
print("=" * 70)
print("GROSS EDGE ANALYSIS:")
print("=" * 70)
print()
print("From logs: Gross Edge = $0.0216")
print()

gross_edge = 0.0216
gross_edge_pct = (gross_edge / from_value_usd) * 100

print(f"  As percentage of trade: {gross_edge_pct:.4f}%")
print()
print("Components of gross edge:")
print("  - Momentum capture (30-80% of observed momentum)")
print("  - Signal score bonus (up to 0.3%)")
print("  - Dream score bonus (very small)")
print()
print(f"For trade to be profitable:")
print(f"  Need: Gross Edge > Total Costs")
print(f"  Currently: ${gross_edge:.4f} vs ${cost_reported:.4f}")
print(f"  Shortfall: ${cost_reported - gross_edge:.4f}")
print()

if gross_edge < cost_reported:
    shortfall_pct = ((cost_reported - gross_edge) / from_value_usd) * 100
    print(f"❌ INSUFFICIENT MOMENTUM:")
    print(f"   Need additional {shortfall_pct:.4f}% momentum to break even")
    print()
    momentum_needed = shortfall_pct / 0.30  # Assuming 30% capture rate
    print(f"   With 30% capture rate, need {momentum_needed:.2f}%/min momentum")
    print(f"   With 50% capture rate, need {momentum_needed * 0.30 / 0.50:.2f}%/min momentum")
    print(f"   With 80% capture rate, need {momentum_needed * 0.30 / 0.80:.2f}%/min momentum")