CRYPTO
Crypto Briefing
13 Sep 2026 · 06:45
Nvidia predicted to surpass Apple in stock buybacks, dividends
Nvidia's AI-fueled cash machine is rewriting the shareholder return playbook, with analysts forecasting $230B in capital returns by 2027 For the better part of a decade, Apple was the undisputed king of giving money …
Nvidia's AI-fueled cash machine is rewriting the shareholder return playbook, with analysts forecasting $230B in capital returns by 2027
For the better part of a decade, Apple was the undisputed king of giving money back to shareholders. Now Nvidia is pulling up with a cash cannon powered by AI demand, and the numbers suggest it could dethrone Apple’s legendary capital return machine faster than most investors expected.
Evercore ISI analysts project Nvidia will return $115 billion to shareholders in calendar year 2026 and a staggering $230 billion in 2027.
Gloria Wall Street's edge, now anyone's — Gloria Finance is your agentic-AI investment research terminal. Get the edge →
The numbers behind Nvidia’s buyback blitz
In its fiscal second quarter ending July 2026, Nvidia allocated a record $26 billion to shareholders. That broke down to approximately $20 billion in stock repurchases and $6 billion in dividends.
Advertisement
The company has committed to returning at least 50% of its free cash flow to investors on an annual basis.
Back in May 2026, Nvidia raised its quarterly dividend from $0.01 to $0.25 per share, a 25x increase. The company still has roughly $99 billion remaining under its current stock repurchase authorization.
Jim Cramer has publicly advocated for Nvidia to quintuple its buyback program to $500 billion, essentially urging the chipmaker to run the same playbook Apple perfected over the last decade.
Apple’s transition creates an opening
John Ternus officially became Apple’s CEO on September 1, 2026, with Cook transitioning to the role of executive chairman.
Apple essentially invented the modern tech buyback playbook. Since 2012, the company’s repurchase program became a key pillar of its investment thesis. That strategy contributed to significant P/E multiple expansion over the years following 2015.
Evercore ISI analysts expect Nvidia’s escalating shareholder returns could trigger a similar P/E expansion, the kind of valuation re-rating that turns a growth stock into a growth-and-income stock and attracts an entirely new class of institutional buyers.
CRYPTO
Pypi.org
13 Sep 2026 · 06:45
tribulnation-sdk 2.0.0
Tribulnation SDK Fully-typed, async Python SDK for crypto trading and data. Market , Wallet , Earn , and Report are abstract interfaces implemented per exchange and chain. Code written against MarketSDK runs unchanged on …
Tribulnation SDK
Fully-typed, async Python SDK for crypto trading and data.
Market , Wallet , Earn , and Report are abstract interfaces implemented per exchange and chain. Code written against MarketSDK runs unchanged on dYdX, Hyperliquid, MEXC, or any other supported venue.
Installation
pip install tribulnation-sdk [ dydx,hyperliquid,mexc ]
See the support matrix for details on extras.
Trading Quick Start
from dotenv import load_dotenv from tribulnation.sdk import MarketSDK , accounts load_dotenv () # load credentials from .env file sdk = MarketSDK ( { 'mexc_account1' : accounts . Mexc ( api_key = '$MEXC_API_KEY' , api_secret = '$MEXC_API_SECRET' ), # 'dydx', 'hyperliquid', and 'mexc' are available by default, even without listing them here } ) mexc = await sdk . market ( 'mexc_account1:spot:BTCUSDT' ) dydx = await sdk . market ( 'dydx:perp:BTC-USD' ) async with mexc . trades_stream () as my_trades : async for my_trade in my_trades : print ( f 'Hedging { my_trade } ' ) await dydx . place_order ( { 'type' : 'LIMIT' , 'qty' : - my_trade . qty , 'price' : my_trade . price , } )
accounts.<Venue>() reads credentials from environment variables named after each field ( accounts.Mexc() reads $MEXC_API_KEY / $MEXC_API_SECRET ) — pass explicit values or other $VAR names to override.
Market IDs & Scoping
<account_id>:<exchange_id>:<market_id> , e.g. mexc_account1:spot:BTCUSDT . account_id is the key you registered in accounts — not necessarily the venue's own name — so you can run several accounts on one venue side by side. Equivalent ways to reach a market:
await sdk . depth ( 'mexc_account1:spot:BTCUSDT' ) venue = await sdk . venue ( 'mexc_account1' ) await venue . depth ( 'spot:BTCUSDT' ) exchange = await venue . exchange ( 'spot' ) await exchange . depth ( 'BTCUSDT' ) market = await exchange . market ( 'BTCUSDT' ) await market . depth ()
Hold a Market reference in hot loops; use the scoped one-shot calls otherwise.
Market Interface
Public data: depth() -> Book depth_stream() -> AsyncContextManager[AsyncIterable[Book]] rules() -> Rules : tick/step size, fees, min/max, rounding helpers candles(interval, start, end) -> PaginatedResponse[Candle] : trade candles opening in [start, end) , with timezone-aware bounds and no ordering guarantee; CANDLE_INTERVALS says which widths a venue serves
User data: query_order(id) -> OrderState | None open_orders() -> Sequence[OrderState] trades_history(start, end) -> AsyncIterable[Sequence[Trade]] trades_stream() -> AsyncContextManager[AsyncIterable[Trade]] position() -> Position available_notional() -> Decimal : max. notional you could open now
Trading: place_order(order) -> OrderResponse place_orders(orders) -> Sequence[OrderResponse] cancel_order(id) cancel_orders(ids) cancel_open_orders()
Perpetual markets: index() -> Decimal next_funding() -> FundingRate funding_rates(start, end=None) -> AsyncIterable[Sequence[FundingRate]] : market-wide rate history funding_payments(start, end) -> AsyncIterable[Sequence[FundingPayment]] : your own settled cashflows perp_position() -> PerpPosition : includes entry price
Full reference: docs/market/index.md, with per-venue notes for dYdX, Hyperliquid, and MEXC.
Mutating methods also take an optional settings dict for venue-specific options, keyed by venue:
await dydx . place_order ( { 'type' : 'LIMIT' , 'qty' : 0.01 , 'price' : 60_000 , }, settings = { 'dydx' : { 'order_flags' : 'SHORT_TERM' , 'short_term_gtb' : 2 }}, )
Other SDKs
Same account-mapping shape as MarketSDK :
WalletSDK : deposit/withdrawal methods — docs/wallet.md
: deposit/withdrawal methods — docs/wallet.md EarnSDK : yield instruments — docs/earn.md
: yield instruments — docs/earn.md ReportSDK : balance/position history, with provenance — docs/report.md
Every SDK object is an async context manager: call methods on it directly, or enter it with async with to close its connections at a point you choose. Details: Async Usage.
Error Handling
All errors subclass Error : NetworkError , ValidationError , ApiError ( BadRequest , AuthError , RateLimited ), LogicError .
Context, Logging & Retries
SDK calls are plain by default — no logging, no retries. Wrap them in a Context to add both:
from tribulnation.sdk import Context , NetworkError , RateLimited ctx = Context () . retried ( NetworkError , RateLimited , max_retries = 5 ) . logged () with ctx . use (): await sdk . place_order ( 'mexc_account1:spot:BTCUSDT' , { 'type' : 'LIMIT' , 'qty' : 0.01 , 'price' : 60_000 } )
Retries back off exponentially and only wrap plain async calls, not streams or paginated history. Nested SDK calls each re-apply the active context, so retries can compound across scoping layers. Details: Context, Logging & Retries.
License
MIT