础篇要点:算法、数据结构、基础设计模式
算法描述
更形象的描述请参考:binary_search.html
算法实现
public static int binarySearch(int[] a, int t) {
int l=0, r=a.length - 1, m;
while (l <=r) {
m=(l + r) / 2;
if (a[m]==t) {
return m;
} else if (a[m] > t) {
r=m - 1;
} else {
l=m + 1;
}
}
return -1;
}
测试代码
public static void main(String[] args) {
int[] array={1, 5, 8, 11, 19, 22, 31, 35, 40, 45, 48, 49, 50};
int target=47;
int idx=binarySearch(array, target);
System.out.println(idx);
}
解决整数溢出问题
当 l 和 r 都较大时,l + r 有可能超过整数范围,造成运算错误,解决方法有两种:
int m=l + (r - l) / 2;
还有一种是:
int m=(l + r) >>> 1;
其它考法
对于前两个题目,记得一个简要判断口诀: 奇数二分取中间,偶数二分取中间靠左。对于后一道题目,需要知道公式:
n=log_2N=log_{10}N/log_{10}2n=log2N=log10?N/log10?2
其中 n 为查找次数,N 为元素个数
算法描述
更形象的描述请参考:bubble_sort.html
算法实现
public static void bubble(int[] a) {
for (int j=0; j < a.length - 1; j++) {
// 一轮冒泡
boolean swapped=false; // 是否发生了交换
for (int i=0; i < a.length - 1 - j; i++) {
System.out.println("比较次数" + i);
if (a[i] > a[i + 1]) {
Utils.swap(a, i, i + 1);
swapped=true;
}
}
System.out.println("第" + j + "轮冒泡"
+ Arrays.toString(a));
if (!swapped) {
break;
}
}
}
进一步优化
public static void bubble_v2(int[] a) {
int n=a.length - 1;
while (true) {
int last=0; // 表示最后一次交换索引位置
for (int i=0; i < n; i++) {
System.out.println("比较次数" + i);
if (a[i] > a[i + 1]) {
Utils.swap(a, i, i + 1);
last=i;
}
}
n=last;
System.out.println("第轮冒泡"
+ Arrays.toString(a));
if (n==0) {
break;
}
}
}
算法描述
更形象的描述请参考:selection_sort.html
算法实现
public static void selection(int[] a) {
for (int i=0; i < a.length - 1; i++) {
// i 代表每轮选择最小元素要交换到的目标索引
int s=i; // 代表最小元素的索引
for (int j=s + 1; j < a.length; j++) {
if (a[s] > a[j]) { // j 元素比 s 元素还要小, 更新 s
s=j;
}
}
if (s !=i) {
swap(a, s, i);
}
System.out.println(Arrays.toString(a));
}
}
与冒泡排序比较
稳定排序与不稳定排序
System.out.println("=================不稳定================");
Card[] cards=getStaticCards();
System.out.println(Arrays.toString(cards));
selection(cards, Comparator.comparingInt((Card a) -> a.sharpOrder).reversed());
System.out.println(Arrays.toString(cards));
selection(cards, Comparator.comparingInt((Card a) -> a.numberOrder).reversed());
System.out.println(Arrays.toString(cards));
System.out.println("=================稳定=================");
cards=getStaticCards();
System.out.println(Arrays.toString(cards));
bubble(cards, Comparator.comparingInt((Card a) -> a.sharpOrder).reversed());
System.out.println(Arrays.toString(cards));
bubble(cards, Comparator.comparingInt((Card a) -> a.numberOrder).reversed());
System.out.println(Arrays.toString(cards));
都是先按照花色排序(????),再按照数字排序(AKQJ…)
[[?7], [?2], [?4], [?5], [?2], [?5]]
[[?7], [?5], [?5], [?4], [?2], [?2]]
原来 ?2 在前 ?2 在后,按数字再排后,他俩的位置变了
[[?7], [?2], [?4], [?5], [?2], [?5]]
[[?7], [?5], [?5], [?4], [?2], [?2]]
算法描述
更形象的描述请参考:insertion_sort.html
算法实现
// 修改了代码与希尔排序一致
public static void insert(int[] a) {
// i 代表待插入元素的索引
for (int i=1; i < a.length; i++) {
int t=a[i]; // 代表待插入的元素值
int j=i;
System.out.println(j);
while (j >=1) {
if (t < a[j - 1]) { // j-1 是上一个元素索引,如果 > t,后移
a[j]=a[j - 1];
j--;
} else { // 如果 j-1 已经 <=t, 则 j 就是插入位置
break;
}
}
a[j]=t;
System.out.println(Arrays.toString(a) + " " + j);
}
}
与选择排序比较
提示
插入排序通常被所轻视,其实它的地位非常重要。小数据量排序,都会优先选择插入排序
算法描述
更形象的描述请参考:shell_sort.html
算法实现
private static void shell(int[] a) {
int n=a.length;
for (int gap=n / 2; gap > 0; gap /=2) {
// i 代表待插入元素的索引
for (int i=gap; i < n; i++) {
int t=a[i]; // 代表待插入的元素值
int j=i;
while (j >=gap) {
// 每次与上一个间隙为 gap 的元素进行插入排序
if (t < a[j - gap]) { // j-gap 是上一个元素索引,如果 > t,后移
a[j]=a[j - gap];
j -=gap;
} else { // 如果 j-1 已经 <=t, 则 j 就是插入位置
break;
}
}
a[j]=t;
System.out.println(Arrays.toString(a) + " gap:" + gap);
}
}
}
参考资料
https://en.wikipedia.org/wiki/Shellsort
算法描述
2.在子分区内重复以上过程,直至子分区元素个数少于等于 1,这体现的是分而治之的思想 (divide-and-conquer) 3.从以上描述可以看出,一个关键在于分区算法,常见的有洛穆托分区方案、双边循环分区方案、霍尔分区方案
更形象的描述请参考:quick_sort.html
单边循环快排(lomuto 洛穆托分区方案)
public static void quick(int[] a, int l, int h) {
if (l >=h) {
return;
}
int p=partition(a, l, h); // p 索引值
quick(a, l, p - 1); // 左边分区的范围确定
quick(a, p + 1, h); // 左边分区的范围确定
}
private static int partition(int[] a, int l, int h) {
int pv=a[h]; // 基准点元素
int i=l;
for (int j=l; j < h; j++) {
if (a[j] < pv) {
if (i !=j) {
swap(a, i, j);
}
i++;
}
}
if (i !=h) {
swap(a, h, i);
}
System.out.println(Arrays.toString(a) + " i=" + i);
// 返回值代表了基准点元素所在的正确索引,用它确定下一轮分区的边界
return i;
}
双边循环快排(不完全等价于 hoare 霍尔分区方案)
要点
基准点在左边,并且要先 j 后 i
while( i < j && a[j] > pv ) j–
while ( i < j && a[i] <=pv ) i++
private static void quick(int[] a, int l, int h) {
if (l >=h) {
return;
}
int p=partition(a, l, h);
quick(a, l, p - 1);
quick(a, p + 1, h);
}
private static int partition(int[] a, int l, int h) {
int pv=a[l];
int i=l;
int j=h;
while (i < j) {
// j 从右找小的
while (i < j && a[j] > pv) {
j--;
}
// i 从左找大的
while (i < j && a[i] <=pv) {
i++;
}
swap(a, i, j);
}
swap(a, l, j);
System.out.println(Arrays.toString(a) + " j=" + j);
return j;
}
快排特点
洛穆托分区方案 vs 霍尔分区方案
补充代码说明
扩容规则
其中第 4 点必须知道,其它几点视个人情况而定
提示
代码说明
day01.list.TestArrayList#arrayListGrowRule 演示了 add(Object) 方法的扩容规则,输入参数 n 代表打印多少次扩容后的数组长度
Fail-Fast 与 Fail-Safe
提示
LinkedList
ArrayList
代码说明
day01.list.ArrayListVsLinkedList#randomAccess 对比随机访问性能
day01.list.ArrayListVsLinkedList#addMiddle 对比向中间插入性能
day01.list.ArrayListVsLinkedList#addFirst 对比头部插入性能
day01.list.ArrayListVsLinkedList#addLast 对比尾部插入性能
day01.list.ArrayListVsLinkedList#linkedListSize 打印一个 LinkedList 占用内存
day01.list.ArrayListVsLinkedList#arrayListSize 打印一个 ArrayList 占用内存
更形象的演示,见资料中的 hash-demo.jar,运行需要 jdk14 以上环境,进入 jar 包目录,执行下面命令
java -jar --add-exports java.base/jdk.internal.misc=ALL-UNNAMED hash-demo.jar
树化意义
树化规则
退化规则
索引计算方法
数组容量为何是 2 的 n 次幂
注意
put 流程
1.7 与 1.8 的区别
扩容(加载)因子为何默认是 0.75f
扩容死链(1.7 会存在)
1.7 源码如下:
void transfer(Entry[] newTable, boolean rehash) {
int newCapacity=newTable.length;
for (Entry<K,V> e : table) {
while(null !=e) {
Entry<K,V> next=e.next;
if (rehash) {
e.hash=null==e.key ? 0 : hash(e.key);
}
int i=indexFor(e.hash, newCapacity);
e.next=newTable[i];
newTable[i]=e;
e=next;
}
}
}
?
?
?
数据错乱(1.7,1.8 都会存在)
补充代码说明
key 的设计要求
如果 key 可变,例如修改了 age 会导致再次查询时查询不到
public class HashMapMutableKey {
public static void main(String[] args) {
HashMap<Student, Object> map=new HashMap<>();
Student stu=new Student("张三", 18);
map.put(stu, new Object());
System.out.println(map.get(stu));
stu.age=19;
System.out.println(map.get(stu));
}
static class Student {
String name;
int age;
public Student(String name, int age) {
this.name=name;
this.age=age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name=name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age=age;
}
@Override
public boolean equals(Object o) {
if (this==o) return true;
if (o==null || getClass() !=o.getClass()) return false;
Student student=(Student) o;
return age==student.age && Objects.equals(name, student.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
}
String 对象的 hashCode() 设计
饿汉式
public class Singleton1 implements Serializable {
private Singleton1() {
if (INSTANCE !=null) {
throw new RuntimeException("单例对象不能重复创建");
}
System.out.println("private Singleton1()");
}
private static final Singleton1 INSTANCE=new Singleton1();
public static Singleton1 getInstance() {
return INSTANCE;
}
public static void otherMethod() {
System.out.println("otherMethod()");
}
public Object readResolve() {
return INSTANCE;
}
}
枚举饿汉式
public enum Singleton2 {
INSTANCE;
private Singleton2() {
System.out.println("private Singleton2()");
}
@Override
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
public static Singleton2 getInstance() {
return INSTANCE;
}
public static void otherMethod() {
System.out.println("otherMethod()");
}
}
懒汉式
public class Singleton3 implements Serializable {
private Singleton3() {
System.out.println("private Singleton3()");
}
private static Singleton3 INSTANCE=null;
// Singleton3.class
public static synchronized Singleton3 getInstance() {
if (INSTANCE==null) {
INSTANCE=new Singleton3();
}
return INSTANCE;
}
public static void otherMethod() {
System.out.println("otherMethod()");
}
}
双检锁懒汉式
public class Singleton4 implements Serializable {
private Singleton4() {
System.out.println("private Singleton4()");
}
private static volatile Singleton4 INSTANCE=null; // 可见性,有序性
public static Singleton4 getInstance() {
if (INSTANCE==null) {
synchronized (Singleton4.class) {
if (INSTANCE==null) {
INSTANCE=new Singleton4();
}
}
}
return INSTANCE;
}
public static void otherMethod() {
System.out.println("otherMethod()");
}
}
为何必须加 volatile:
内部类懒汉式
public class Singleton5 implements Serializable {
private Singleton5() {
System.out.println("private Singleton5()");
}
private static class Holder {
static Singleton5 INSTANCE=new Singleton5();
}
public static Singleton5 getInstance() {
return Holder.INSTANCE;
}
public static void otherMethod() {
System.out.println("otherMethod()");
}
}
JDK 中单例的体现
以上内容参考黑马程序员b站内容整理,如侵删
结:截止今日,标普500指数已经从今年二月份的1850点反弹至了如今的2170点,上涨了接近20%。美国以外地区股市的平均涨幅也有12%。在这一波上涨之前基金经理在二月份的现金配置达到2001年以来的最高水平的。那么这些基金经理们追上这波上涨了吗?数据显示,这些年薪拿着百万美元的基金经理在过去几个月买入债券,同时降低了股票仓位…
Remarkably, allocations to cash are now even higher than in February, and fundmanagers are now underweight equities for the first time in 4 years. Fundmanagers have pushed into bonds, with income allocations rising to a 3 1/2 yearhigh in June and July. Overall, fund managers' defensivepositioning supports higher equity prices in the month(s) ahead.
值得注意的是,现在的现金配置比二月还高,与此同时,基金经理们四年来首次集体减持了股票。基金经理转而买进债券,同时债券在资产配置里的占比在六月七月达到了三年半以来的新高。
Allocations to US equitieshad been near 8-year lows over the past year, during which the US hasoutperformed most of the world. That has now changed: exposure to the US is ata 17-month high. There is room for exposure to move higher, but the tailwind forthe US due to excessive bearish sentiment has mostly passed. That's also thecase for emerging markets which have been the best performing equity region sofar in 2016. European equity markets, which have been the consensusoverweight and also the world's worst performing region, are now underweightedby fund managers for the first time in 3 years.
去年美国基金经理的股票配置接近八年来最低水平,但是在此期间美国股市还是跑赢了世界大多数国家。现在的情况已经不同了:现在美国市场风险敞口达到了17个月的最高值。尽管风险敞口还是有更大的可能但是由于看跌情绪充斥了整个市场所以这一波顺风优势基本上已经刮过去了。这同时也是2016年涌现出的市场里表现的最好的了。大家一直在加持的表现最差的欧洲股本市场,现在也三年来首次被基金经理减持。
* * *
Among the various ways of measuring investorsentiment, the BAML survey of global fund managers is one of the better as theresults reflect how managers are allocated in various asset classes. Thesemanagers oversee a combined 0b in assets.
衡量投资者情绪的方法有很多,BAML关于全球基金经理做的调查无疑其中的最佳选择之一,该调查结果说明了在多元化的资产类别中基金经理是如何分配的。他们监管着将近6000亿美金的资产组合。
The data should be viewed mostly from acontrarian perspective; that is, when equities fall in price, allocations tocash go higher and allocations to equities go lower as investors becomebearish, setting up a buy signal. When prices rise, the opposite occurs,setting up a sell signal. We did a recap of this pattern in December 2014 (post).
我们最好从逆向思维的角度来分析这些数据;也就是说,当股本价格下跌时,现金配置就顺势走高,股本配置则随着投资者的悲观情绪一路唱衰,随之就放出了买入信号。当价格上涨时,与上述情况相反的现象就发生了,那么我们就看到了卖出的信号。
Let's review the highlights from the pastmonth.
我们一起来看看上个月一些值得注意的现象。
Cash: Fund managers cash levels at the equity low in February were 5.6%,the highest since the post-9/11 panic in November 2001 and lower than at anytime during the 2008-09 bear market. This was an extreme that has normally beenvery bullish for equities. Remarkably, with the SPX having since risen nearly20%, cash in July is now even higher (5.8%) and at the highest level in 14years (since November 2001). Even November 2001, which wasn't a bearmarket low, saw equities rise nearly 10% in the following 2 months; that rallyfailed when cash levels fell under 4%. This is supportive of further gains inequities.
现金:在股价低的二月份基金经理的现金水平是5.6%,是2001年11月的后911恐慌期以来最高,但是又比2008-2009年期间的熊市低。这种现象在股票行情大幅度上涨的时候是非常极端的。值得我们注意的是,随着标普500上涨了接近20%,7月份的现金水平竟然比现在还要高一点了(5.8%)。这意味着美股的基金经理大多数人还是偏保守的,担心美股风险正在加剧。
Global equities: Fund managers were just+5% overweight equities at their low in February; since 2009, allocations hadonly been lower in mid-2011 and mid-2012, periods which were notable lows forequity prices during this bull market. Despite the rally since February, allocationsare now even lower, dropping to -1% underweight in July. This is 1.2 standarddeviations below the long term mean. Fund managers are underweight equities forthe first time in 4 years.
全球股票:在股价低迷的二月,基金经理只加持了5%;自2009以来,这样的配置之比2011年和2012年中期低,那段时间股价是牛市中罕见的低价。尽管二月有所回升,现在的配置还是有所下降,7月已经减持到-1%。这就意味着其1.2的标准差低于长期平均水平。
US equities: US exposure has been nearan 8 year low during the past year, during which US equities haveoutperformed.US equities have been under-owned. That has now changed, with allocation risingto +9% overweight, the first overweight in 17 months. There is room for this tomove higher, but the tailwind for the US due to excessive bearish sentiment hasmostly passed.
美国股票:美国基金经理美股的配置去年达到了八年来的最低水平。从去年开始,这些基金经理美国股票的持有量就偏低。现在情况已经大大不同了,配置已高达+9%的加持,是17个月以来第一次加持。这从侧面说明美国经济虽然增速缓慢,但是经济下滑的可能并不大。
European equities: Fund managers have been excessivelyoverweight European equities for more than a year, during which time EZequities have underperformed. For the first time in 3 years, allocations to EZare underweight (by 4%). The underweight can become more extreme but thelargest risk to underperformance due to excessive bullish sentiment has passed.
欧洲股票:基金经理已经持续加持欧洲股本一年多了,在这段时间欧洲股本表现也很不尽人意。但是从今年2月份开始基金经理出现了三年来首次对欧洲股本进行减持(减了4%)。
Japanese equities: Allocations to Japanhave been falling but are flat m-o-m at -7% underweight, which is thelowest since December 2012. The region has been underperforming in 2016.
日本股票:日本的配置一直在下跌但是在过去几个月基本持平在-7%,达到了2012年12以来的最低水平。日本股票在2016年表现也差强人意。
Emerging markets equities: In January, allocations toemerging markets fell to the second lowest in the survey's history (-33%underweight), an extreme comparable only to early-2014 from which theregion began to strongly outperform for the next half a year. Allocations havesince risen to +10% overweight, the highest in 22 months but still 0.4 standarddeviations below the long term mean. The region has outperformed the rest ofthe world so far 2016. There is room for exposure to increase further butallocations are now back to where the rally in mid-2014 failed.
新兴市场股票:一月份的时候新兴市场配置跌倒了该调查历史以来第二低(-33%减持),极端到只能和2014年早期比较,到2014年下半年该市场就猛烈发力势如破竹了。配置涨到+10%的加持以后就达到了22个月以来的最高,但是还是低于长期平均水平0.4的标准差。该市场在2016年比世界其他市场表现都好。未来风险敞口有可能扩大但是配置已经回到了2014年中期水平。
Global bonds: Fund managers are +35% outweightbonds, near a 3.5 year high allocation. This is a big rise from -64%underweight in December (a 2-year low allocation). Bonds outperformed in the 10months before the current equity rally began in February. Note that bonds havehistorically started to underperform when allocations rise to -20% underweight(red shading). Current allocations are back to their long term mean.
全球债券市场:基金经理增持了35%的债券,接近3.5年来新高。这要比12月的-64%要高多了(两年来最低)。债券方面这十个月来的表现比自二月起开始回涨的股票要好得多。值得注意的是债券历史性的在减持升至-20%的时候(红色阴影部分)表现开始走下坡路。目前的配置已回至长期平均水平。
In February, 16% of fundmanagers expected a weakereconomy in the next 12 months, thelowest since December 2011. Investors are still pessimistic, with only 2%expecting a stronger economy in the next year. This explains the lowallocations to equities and high allocations to cash.
二月,16%的基金经理预计未来一年内经济发展较弱,可能会是自2011年12月以来的最低水平。投资者情绪依旧悲观,只有2%的人认为下一年经济势头强劲。这也解释了股本配置低现金配置高涨这一现象。
Commodities: Allocations to commoditiesimproved to a 3.5 year high at -4% underweight. This is neutral relative to thelong term mean. In comparison, in February, allocations were near one of thelowest levels in the survey's history (-29% underweight). The improvement incommodity allocations goes together with that for emerging markets.
商品期货:商品期货的配置遭到了-4%的减持,创3.5年来的新高。这与长期平均水平接近持平。相比之下,二月份的资本配置基本上接近本调查有史以来的最低水平(-29%减持)。商品期货方面的配置也随着新兴市场提高了。
Sectors: Relative to history,managers are extremely overweight cash. They are far more overweight bonds thanequities. Overall, this is very defensive positioning.
总体行业:对比历史数据,经理人在大量加持现金配置。相对于股票,他们依旧持有更大量的债券。总体来看,这绝对是一个防守性定位。
Fund managers risk appetiteis the lowest since July 2012, a level from which SPX rose 10% over thefollowing two months.
基金经理人的风险偏好达到了2012年七月以来的最低点。
A record percent of fundmanagers have bought downside protection for the next 3 months.
下表显示了基金经理人们在未来三个月内购入的下行保护。
Survey details are below.调查的具体信息见下文:
1. Cash (5.8%): Cashbalances increased to 5.8% from 5.7%. This is higher than in February (5.6%)and the highest since November 2001. Typical range is 3.5-5%. BAML has a 4.5%contrarian buy level but we consider over 5% to be a better signal. More onthis indicatorhere.
现金(5.8%):现金结余从5.7%升至5.8%。这个数据已经高于2月的(5.6%)同时也是自2001年11月以来的最高值。正常浮动范围是在3.5-5%。BAML的反向购买水平达到了4.5%,但是我们认为超过5%才是一个理想的信号。更多信息点击这里http://fat-pitch.blogspot.jp/2013/01/fund-manager-cash-balance-at-extremes.html
2. Equities (-1%): A net -1% are underweight global equities, down from +1% in June andbelow the +5% overweight in February. Over +50% is bearish. A washout low(bullish) is under +15%. More on this indicatorhere.
股票(-1%):全球股本减持从六月的+1%跌至-1%,也低于二月的+5%的加持。超过50%就可以看作是熊市了。牛市就是低于+15%。更多信息点这里http://fat-pitch.blogspot.jp/2013/01/fund-manager-equity-exposure-at-extremes.html
3. Regions:
地区:
1. US (+9%):Exposure to the US rose from -15% underweight in May to +5% overweight in July;this is the first overweight for the US in 17 months.
美国(+9%):美国的风险敞口从五月的-15%减持增加到七月+5%加持;这是美国17个月以来首次加持。
2. Europe (-4%): Exposure to Europe dropped from +26% overweight in June to -4%underweight. This is the first underweight for Europe in 3 years.
欧洲(-4%):欧洲的风险敞口从六月的+26%加持跌至-4%减持。这是欧洲三年来首次减持。
3. Japan (-7%):Exposure to Japan was unchanged at -7% underweight. Funds were -20% underweightin December 2012 when the Japanese rally began.
日本(-7%):日本的风险敞口维持在-7%没有变化。自从日本股市2012年12月回升开始基金就维持在-20%减持。
4. EM (+10%): Exposureto EM rose from +6% overweight in June to +10% overweight in July - a 22-monthhigh. Exposure was -33% underweight in January when the regional rally began. -34% underweight in September 2015 was the lowest in the survey'shistory.
新兴市场(+10%):新兴市场的风险敞口从六月的+6%加持升至七月的+10%加持——22个月以来的新高。一月区域内回升时风险敞口还是-33%减持。2015年9月的数据为-34%减持,是调查有史以来最低。
4. Bonds (+35%): A net +35% are underweight bonds, a rise from -64% in December butunchanged from-34% in June. This is near a 3.5 year high allocation.
债券(+35%):美国基金经理在过去5个月里增持了35%的债券仓位。这几乎是3.5年来的最高值。
Commodities(-4%): Anet -4% are underweight commodities - a 3.5 year high - an improvement from-12% last month. Higher commodity exposure goes in hand with improved sentimenttowards EM.
商品期货(-4%):此项数据为净-4%减持——3.5年来新高——较上个月的-12%有所提高。商品期货的风险敞口会随着新兴市场的市场情绪好转走高。
5. Macro: Just2% expect a stronger global economy over the next 12 months; in February, 16%expected a weaker economy, the most pessimistic since December 2011.
宏观分析:只有2%的经理人预测未来一年全球经济发展迅猛;二月时,16%预测未来经济发展缓慢较弱,是2011年12月以来最悲观的观点。
CNBC这篇文章,美国的信用卡利息最高年化后超30%。可以说,美联储加息了375个基点后,对消费的打击即将显露。
那么高的信用卡利息,如果不能打击借贷消费,就会引发信用卡债务危机。当然,收3年的利息就回本了。
https://www.cnbc.com/2022/11/15/as-retail-credit-card-interest-rates-soar-know-this-before-you-apply.html
据该文,零售类信用卡的平均利息是年化后26.72%。普通信用卡的利息平均是年化后19.04%。
可以说,这个利息是相当的高。
今天,美股再度大涨,道指盘中拉升了333点,看样子能突破3.4万点。纳指拉升了2.6%,看样子能拉回1.2万点。
美股这次反弹的顶部在哪里?可能会有点高。
不过,12月再加息50个基点后,美国的信用卡利率就更高了。
到时候,消费就会下降。然后,可能大盘会在出数据的时候,回撤一波。
然后,就是1月份再加息25基点的时候。
总之,现在就是在拉升顶部。拉出一个熊市反弹的牛顶。
BTC也反弹回了1.7万美元。
可以说,高风险资产都在用拉升诱惑韭菜。
欧元已经涨回了1.04,相当于欧洲对美国的出口涨价了5%左右。这样,就是1-3个月后,欧洲把美国输入的通胀再还回去。
美元暴力走强,是输出通胀。欧元暴力走强,是把通胀再还给美国。
这个,就好比踢皮球。
欧元这么涨,就是对欧洲央行接下来的几个75基点的追赶式加息的提前的Price In。
今天盘中,中概股主流大涨,美股涨是绿的,跌是红的。网易涨了近10个点,拼多多和京东都涨了8个点。
可以说,资本市场对网易,拼多多和京东的价值还是认同的。
中概股的拉升,主要是中美关系缓解,一个重要的利空消失。
连百度也反弹了超8%,市值是341.9亿美元。
现在,网易是470亿美元市值,百度才341亿市值。
可见,百度当年的BAT是妄得虚名。像百度搞搜索,不太容易出海。而网易搞游戏,拼多多则在北美登陆。百度不可能去抢谷歌的饭碗。
这个,就是赛道的重要性。
https://www.cnbc.com/2022/11/15/ad-market-worse-now-than-during-pandemic-lows-david-zaslav-says.html
据CNBC的这篇文章,华纳兄弟的discovery的CEO表示,最近广告市场比2020年疫情爆发后还疲软。
可以说,很多数据都指向:美股不应该暴涨。但是,由于美联储缩表很拖拉,最近才缩表掉了2000多亿美元,市场上流动性还是很多。
流动性多,反弹就给力。
*请认真填写需求信息,我们会在24小时内与您取得联系。