SP500: Fib Channels on Fractal Corridors Research Notes
Testing angle of trendline which acts as support then defines resistance.
Structural reference
Pattern expressed in Fibonacci:
Ascending:
Descending:
Fib Channels on Fractal Corridors supposed to show alternative mapping method which differs from following approach.
ETF market
VTI 1D: breakout on the daily within a long-term weekly uptrend On the daily chart, VTI (Vanguard Total Stock Market ETF) has broken through the key $303.5 resistance level with strong volume. This breakout occurs within a larger weekly uptrend channel, highlighting a continuation of the long-term bullish structure.
Volume profile shows a clear path ahead: $321.7 (1.272 Fibo) and $345 (1.618 Fibo). The golden cross (MA50 crossing MA200 from below) further supports the bullish case.
Fundamentally, VTI represents the entire U.S. equity market - large to small caps - and benefits from economic resilience, declining inflation, and passive inflows. It’s a logical macro play for trend continuation.
Tactical plan:
— Entry by market or after retest $303.5
— TP1: $321.7
— TP2: $345
— Invalidation below $300
The whole market breaking out? That’s not noise — it’s the signal.
$KRE Swing Trade Strangle Call Debit Spread & Put Debit SpreadAMEX:KRE
Bto 6/17/25 3:48pm PDS Jul18 54/53 Paid 0.27
Open BB 8EMA at Trap bearish, with error at the gap down. keep position until confirmation to change trend.
Bto 6/25/25 3:50pm CDS Oct17 69/70 Paid 0.06
Open BA 8EMA , Confirmation pull back , and PBJ 200SMA/200EMA. This day NYSE:C NYSE:BAC Squeeze. More confirmation to go Long.
SPY/QQQ Plan Your Trade End Of Week Update For 7-4Happy 4th of July
I've been very busy with projects and new tools for traders, as well as the new book I'm working on, and thought I would deliver an End Of Week update for everyone.
In this video, I cover the past Cycle Patterns and how they played out for the SPY/QQQ, Gold/Silver, and Bitcoin, as well as add some of my own insight related to the market trends.
All of my systems are still LONG and have not changed. I still believe this market is extremely overbought, and I believe it could roll over at any moment into a pullback - but we need to wait to see if/when that may/does happen.
Gold made a big move higher this week, and I believe that move could continue throughout July.
Bitcoin made a surprising Double-Top and is not rolling downward. Could be a breakdown in the markets as BTCUSD tends to lead the QQQ/NQ by about 3-5 days.
The SPY/QQQ rallied like a rocket all week. It was absolutely incredible to see the markets rally like this. But, I'm still cautious of a sudden rollover top.
I managed to catch some nice trades with options spreads this week, and my metals positions were on fire. I'm still trading from a "hedge everything" mode as I don't trust this rally, and I'm still watching for REJECTIONS near these new highs.
Stay safe and GET SOME.
DM me if you have any questions.
#trading #research #investing #tradingalgos #tradingsignals #cycles #fibonacci #elliotwave #modelingsystems #stocks #bitcoin #btcusd #cryptos #spy #gold #nq #investing #trading #spytrading #spymarket #tradingmarket #stockmarket #silver
KWEB: China’s Internet Sector - AI Catch-Up and Cheap ValuationsChina’s internet and tech stocks have been hammered for years — regulatory crackdowns, slowing growth fears, and geopolitical tension have crushed sentiment. But as investors know, the best opportunities often hide in what everyone hates.
Enter KWEB, the KraneShares CSI China Internet ETF.
It’s a diversified, liquid way to play a bounce in major names like Alibaba, Tencent, JD .com, Baidu, Meituan and PDD.
Here’s why I think the risk/reward looks compelling now — especially if you believe in AI closing the gap.
Key Bullish Points:
1) Valuations at Rock-Bottom
Many big China internet stocks are still trading at single-digit P/E ratios, even as their cash flows recover. Compared to U.S. big tech trading at 30–50x, this is a huge valuation gap.
Regulatory fears seem largely priced in — Beijing wants growth, not stagnation, and some policies are easing.
2) China’s AI Push — Just “Months Behind”
Jansen Whang recently argued that China’s generative AI development is only “months behind” the U.S. Players like Baidu, Alibaba Cloud, Tencent, and SenseTime are all racing to launch new LLMs and integrated AI tools.
If you believe the gap closes, Chinese platforms could see a major earnings rebound as they roll out AI upgrades across search, cloud, e-commerce and social media.
3) Sentiment So Bad, It’s Good
When the headlines scream “China is uninvestable,” that’s often when big mean reversion trades set up. Even a small policy pivot, stimulus plan, or positive AI news cycle can spark a sharp rally.
KWEB is one of the cleanest ways to express this view because it holds a diversified basket — you don’t have to pick a single winner.
Debugging Pine Script with log.info()log.info() is one of the most powerful tools in Pine Script that no one knows about. Whenever you code, you want to be able to debug, or find out why something isn’t working. The log.info() command will help you do that. Without it, creating more complex Pine Scripts becomes exponentially more difficult.
The first thing to note is that log.info() only displays strings. So, if you have a variable that is not a string, you must turn it into a string in order for log.info() to work. The way you do that is with the str.tostring() command. And remember, it's all lower case! You can throw in any numeric value (float, int, timestamp) into str.string() and it should work.
Next, in order to make your output intelligible, you may want to identify whatever value you are logging. For example, if an RSI value is 50, you don’t want a bunch of lines that just say “50”. You may want it to say “RSI = 50”.
To do that, you’ll have to use the concatenation operator. For example, if you have a variable called “rsi”, and its value is 50, then you would use the “+” concatenation symbol.
EXAMPLE 1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//@version=6
indicator("log.info()")
rsi = ta.rsi(close,14)
log.info(“RSI= ” + str.tostring(rsi))
Example Output =>
RSI= 50
Here, we use double quotes to create a string that contains the name of the variable, in this case “RSI = “, then we concatenate it with a stringified version of the variable, rsi.
Now that you know how to write a log, where do you view them? There isn’t a lot of documentation on it, and the link is not conveniently located.
Open up the “Pine Editor” tab at the bottom of any chart view, and you’ll see a “3 dot” button at the top right of the pane. Click that, and right above the “Help” menu item you’ll see “Pine logs”. Clicking that will open that to open a pane on the right of your browser - replacing whatever was in the right pane area before. This is where your log output will show up.
But, because you’re dealing with time series data, using the log.info() command without some type of condition will give you a fast moving stream of numbers that will be difficult to interpret. So, you may only want the output to show up once per bar, or only under specific conditions.
To have the output show up only after all computations have completed, you’ll need to use the barState.islast command. Remember, barState is camelCase, but islast is not!
EXAMPLE 2
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//@version=6
indicator("log.info()")
rsi = ta.rsi(close,14)
if barState.islast
log.info("RSI=" + str.tostring(rsi))
plot(rsi)
However, this can be less than ideal, because you may want the value of the rsi variable on a particular bar, at a particular time, or under a specific chart condition. Let’s hit these one at a time.
In each of these cases, the built-in bar_index variable will come in handy. When debugging, I typically like to assign a variable “bix” to represent bar_index, and include it in the output.
So, if I want to see the rsi value when RSI crosses above 0.5, then I would have something like:
EXAMPLE 3
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//@version=6
indicator("log.info()")
rsi = ta.rsi(close,14)
bix = bar_index
rsiCrossedOver = ta.crossover(rsi,0.5)
if rsiCrossedOver
log.info("bix=" + str.tostring(bix) + " - RSI=" + str.tostring(rsi))
plot(rsi)
Example Output =>
bix=19964 - RSI=51.8449459867
bix=19972 - RSI=50.0975830828
bix=19983 - RSI=53.3529808079
bix=19985 - RSI=53.1595745146
bix=19999 - RSI=66.6466337654
bix=20001 - RSI=52.2191767466
Here, we see that the output only appears when the condition is met.
A useful thing to know is that if you want to limit the number of decimal places, then you would use the command str.tostring(rsi,”#.##”), which tells the interpreter that the format of the number should only be 2 decimal places. Or you could round the rsi variable with a command like rsi2 = math.round(rsi*100)/100 . In either case you’re output would look like:
bix=19964 - RSI=51.84
bix=19972 - RSI=50.1
bix=19983 - RSI=53.35
bix=19985 - RSI=53.16
bix=19999 - RSI=66.65
bix=20001 - RSI=52.22
This would decrease the amount of memory that’s being used to display your variable’s values, which can become a limitation for the log.info() command. It only allows 4096 characters per line, so when you get to trying to output arrays (which is another cool feature), you’ll have to keep that in mind.
Another thing to note is that log output is always preceded by a timestamp, but for the sake of brevity, I’m not including those in the output examples.
If you wanted to only output a value after the chart was fully loaded, that’s when barState.islast command comes in. Under this condition, only one line of output is created per tick update — AFTER the chart has finished loading. For example, if you only want to see what the the current bar_index and rsi values are, without filling up your log window with everything that happens before, then you could use the following code:
EXAMPLE 4
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//@version=6
indicator("log.info()")
rsi = ta.rsi(close,14)
bix = bar_index
if barstate.islast
log.info("bix=" + str.tostring(bix) + " - RSI=" + str.tostring(rsi))
Example Output =>
bix=20203 - RSI=53.1103309071
This value would keep updating after every new bar tick.
The log.info() command is a huge help in creating new scripts, however, it does have its limitations. As mentioned earlier, only 4096 characters are allowed per line. So, although you can use log.info() to output arrays, you have to be aware of how many characters that array will use.
The following code DOES NOT WORK! And, the only way you can find out why will be the red exclamation point next to the name of the indicator. That, and nothing will show up on the chart, or in the logs.
// CODE DOESN’T WORK
//@version=6
indicator("MW - log.info()")
var array rsi_arr = array.new()
rsi = ta.rsi(close,14)
bix = bar_index
rsiCrossedOver = ta.crossover(rsi,50)
if rsiCrossedOver
array.push(rsi_arr, rsi)
if barstate.islast
log.info("rsi_arr:" + str.tostring(rsi_arr))
log.info("bix=" + str.tostring(bix) + " - RSI=" + str.tostring(rsi))
plot(rsi)
// No code errors, but will not compile because too much is being written to the logs.
However, after putting some time restrictions in with the i_startTime and i_endTime user input variables, and creating a dateFilter variable to use in the conditions, I can limit the size of the final array. So, the following code does work.
EXAMPLE 5
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// CODE DOES WORK
//@version=6
indicator("MW - log.info()")
i_startTime = input.time(title="Start", defval=timestamp("01 Jan 2025 13:30 +0000"))
i_endTime = input.time(title="End", defval=timestamp("1 Jan 2099 19:30 +0000"))
var array rsi_arr = array.new()
dateFilter = time >= i_startTime and time <= i_endTime
rsi = ta.rsi(close,14)
bix = bar_index
rsiCrossedOver = ta.crossover(rsi,50) and dateFilter // <== The dateFilter condition keeps the array from getting too big
if rsiCrossedOver
array.push(rsi_arr, rsi)
if barstate.islast
log.info("rsi_arr:" + str.tostring(rsi_arr))
log.info("bix=" + str.tostring(bix) + " - RSI=" + str.tostring(rsi))
plot(rsi)
Example Output =>
rsi_arr:
bix=20210 - RSI=56.9030578034
Of course, if you restrict the decimal places by using the rounding the rsi value with something like rsiRounded = math.round(rsi * 100) / 100 , then you can further reduce the size of your array. In this case the output may look something like:
Example Output =>
rsi_arr:
bix=20210 - RSI=55.6947486019
This will give your code a little breathing room.
In a nutshell, I was coding for over a year trying to debug by pushing output to labels, tables, and using libraries that cluttered up my code. Once I was able to debug with log.info() it was a game changer. I was able to start building much more advanced scripts. Hopefully, this will help you on your journey as well.
$IBIT: ETF can turn bullish in the weekly this week......if all goes well, and the daily trend works nicely (maybe hitting target #2 this week if news favor us in the coming days and gap fading a$$holes don't kill the trend if we get a 4th of July gap up), Bitcoin will start to trend up strongly.
The monthly timeframe is already bullish as of June's close on the 30th, so odds are good.
Are you positioned? Leave me comments below, what are you holding?
Trading perps or only spot? Using defi or merely hodling at CEX or cold storage?
Best of luck!
Cheers,
Ivan Labrie.
Direxion Regional Banks Bull 3X Shares | DPST | Long at $84.89In anticipation of interest rates going lower, a large number of regional bank insiders are buying a significant number of shares of their own stock. Such lowering will likely increase regional bank revenue and move ETFs like AMEX:DPST higher.
Thus, at $84.89, AMEX:DPST is in a personal buy zone.
Targets:
$106.00
$120.00
Opening (IRA): SPY July 18th 495 Short Put... for a 5.13 credit.
Comments: Targeting the <16 delta strike paying around 1% of the strike price in credit.
Max Profit: 5.13
ROC at Max as a Function of Strike Price: 1.04%
Will generally look to roll up if the short put is in profit at 45 DTE or greater, add at intervals if I can get in at strikes better than what I currently have on at the June 513's and July 495's, and/or consider a "window dressing" roll (i.e., a roll down to a strike that is paying about the same in credit) to milk the last drops out of the position.
Opening (IRA): SMH August 15th 215 Short Put... for a 2.50 credit.
Comments: A starter position in the semiconductor ETF on a smidge of weakness here, targeting the strike paying around 1% of the strike price in credit.
Will generally look to add at intervals if I can get it at a strike better than what I currently have on.
Pre-Earnings Breakout in Financials?Financials could be attempting a breakout, two weeks before the sector kicks off earnings season.
The first pattern on today’s chart of the SPDR Select Sector Financial ETF is the price level around $52. XLF stalled at that zone in February after peaking about 1 percent below it in November. February 28’s final price of $52.18 could be especially important because it represented the highest weekly close.
The fund broke above it on Monday and remaining here could represent a potentially more significant breakout.
Second is the narrow price range between mid-May and late June. (Notice the tightening Bollinger Band Width.) Could that period of price compression open the door to price expansion?
Third, the 8-day exponential moving average (EMA) is above the 21-day EMA. MACD is also rising. Those signals may reflect short-term bullishness.
Next, the steadily rising 200-day simple moving average may reflect long-term bullishness.
Finally, the calendar may be a factor because Wells Fargo reports earnings on Monday, July 14. Citi, JPMorgan Chase, Bank of America and others follow later in the week.
Standardized Performances for the ETF mentioned above:
SPDR Select Sector Financial ETF (XLF)
1-year: +27.39%
5-years: +126.32%
10-year: +164.49%
(As of June 30, 2025)
Exchange Traded Funds ("ETFs") are subject to management fees and other expenses. Before making investment decisions, investors should carefully read information found in the prospectus or summary prospectus, if available, including investment objectives, risks, charges, and expenses. Click here to find the prospectus.
TradeStation has, for decades, advanced the trading industry, providing access to stocks, options and futures. If you're born to trade, we could be for you. See our Overview for more.
Past performance, whether actual or indicated by historical tests of strategies, is no guarantee of future performance or success. There is a possibility that you may sustain a loss equal to or greater than your entire investment regardless of which asset class you trade (equities, options or futures); therefore, you should not invest or risk money that you cannot afford to lose. Online trading is not suitable for all investors. View the document titled Characteristics and Risks of Standardized Options at www.TradeStation.com . Before trading any asset class, customers must read the relevant risk disclosure statements on www.TradeStation.com . System access and trade placement and execution may be delayed or fail due to market volatility and volume, quote delays, system and software errors, Internet traffic, outages and other factors.
Securities and futures trading is offered to self-directed customers by TradeStation Securities, Inc., a broker-dealer registered with the Securities and Exchange Commission and a futures commission merchant licensed with the Commodity Futures Trading Commission). TradeStation Securities is a member of the Financial Industry Regulatory Authority, the National Futures Association, and a number of exchanges.
TradeStation Securities, Inc. and TradeStation Technologies, Inc. are each wholly owned subsidiaries of TradeStation Group, Inc., both operating, and providing products and services, under the TradeStation brand and trademark. When applying for, or purchasing, accounts, subscriptions, products and services, it is important that you know which company you will be dealing with. Visit www.TradeStation.com for further important information explaining what this means.
SPRIAL TURN MAJOR JULY 5to the 10th TOP 4 spiral and one FIBThe chart posted is the updated chary for SPY SPIRAL calendar TURN Notice f12 is a spiral from July 16th 2024 top F 10 is from 11/2024 DJI The SPY was 12/5 th TOP F8 is from Feb 19th Top They ALL have a focus point on JULY 5th to 10th 2025 it is also 89 days since the print low. I Am looking for a MAJOR World event into this date . This time I feel it will be something with JAPAN . As to the markets here The put/call is now at the same level as july 2023 top and july 2024 . I have had fib targets in cash sp 500 from 6181 to as high as 6331 we are now in the middle of the targets But Time still has 3 to 5 days .So if we close strong today I will be buying deep in the money puts once again . The QQQ have entered the min target 551/553 But I tend to think {HOPE] we can reach 562 plus or minus 1.5 to move to a full short . But now in cash BTW the SMH target 283/285 is also a target .for its TOP Bitcoin is now setup for the next TOP I just need a new high .Best of trades WAVETIMER
SPY 4HSResistance: 630 – Strong supply zone, potential profit-taking area.
Support Zone: Around 617 – Recently tested, holding as short-term support.
Gap: 615.03 → If SPY loses 617, watch for a retracement to fill the gap toward 615.
Major 4H Support: 610.17 – Institutional block. Losing this level would break the short-term bullish structure.
Long Trade Idea: SPY (S&P 500 ETF)!🧠
📅 Timeframe: 30-Minute
📈 Type: Long Position
📐 Setup: Tight consolidation breakout + bullish wedge pattern
📍 Trade Details:
Entry: $620.39 (breakout from rising wedge)
Stop Loss: ~$618.80 (below wedge support)
Target 1: $622.34 (minor resistance)
Target 2: $624.56 (major resistance zone)
🔎 Technical Breakdown:
Price formed a tight rising wedge, squeezing under resistance
Bullish breakout confirmed above consolidation
Strong uptrend continuation — higher highs + higher lows
SPY remains strong despite market hesitation
🎯 Risk/Reward Outlook:
Risk: ~$1.59
Reward: Up to ~$4.17
RR > 2.5:1 — ideal structure for breakout traders
💬 Caption (for Social/Chart Post):
“SPY breaks higher! 💥📈
Wedge breakout signals bullish momentum 🟢
Clean setup toward $624+ zone 🔓
Watch for continuation above $622.34!”
#SPY #LongTrade #BreakoutSetup #S&P500 #ProfittoPath #ETFTrading
SP500 approaching rising trendline from belowThere has always been some correction when the market approaches the rising trendline from below. AMEX:SPY has about 10 point and SP:SPX about 100 points to go still. The volume is still on the buy side. I expect that to fade before a correction. Some market leaders like AMZN have already touched that trendline
Nightly $SPY / $SPX Scenarios for July 3, 2025🔮 Nightly AMEX:SPY / SP:SPX Scenarios for July 3, 2025 🔮
🌍 Market-Moving News 🌍
📉 U.S. Private Payrolls Surround Weakness
The ADP report showed a drop of 33,000 private-sector jobs in June, the first decline in over two years, reflecting businesses holding back hiring amid trade uncertainty. However, layoffs remain low, signaling no acute stress yet
📊 Markets Braced for NFP Caution
Markets are wary ahead of this morning’s Non‑Farm Payroll (NFP) release—currently projected at +115,000 jobs and 4.3% unemployment—based on indications of labor-market cooling from weak ADP numbers
💵 Canadian Dollar Strengthens
The loonie jumped 0.4% as investors adjust expectations for broader central-bank dovishness, driven by the weak U.S. jobs signals and optimism over a revived U.S.–Canada trade dialogue
📊 Key Data Releases 📊
📅 Thursday, July 3:
8:30 AM ET – Non‑Farm Payrolls (June):
Forecast: +115,000; Previous: +139,000 (May). Watching for signs of sustained job-growth slowdown.
8:30 AM ET – Unemployment Rate:
Forecast: 4.3%, up from 4.2% in May. A rise may increase odds of rate cuts.
8:30 AM ET – Average Hourly Earnings (MoM):
Forecast: +0.3%; prior: +0.4%. Cooling wages would ease inflation pressures.
8:30 AM ET – Initial & Continuing Jobless Claims:
Track week-to-week stability or worsening of labor-market conditions.
9:45 AM ET – Services PMI (June, flash):
Monitor for signs of slowing in U.S. service-sector activity.
10:00 AM ET – ISM Non-Manufacturing PMI (June, flash):
Forecast: 50.8. A reading below 50 suggests contraction in services.
⚠️ Disclaimer:
For informational and educational purposes only. It does not constitute financial advice. Consult a licensed financial advisor before making investment decisions.
📌 #trading #stockmarket #economy #jobs #Fed #labor #technicalanalysis