《小狗钱钱》讲述的是一个离奇的童话故事:有一天,小女孩吉娅发现一只受伤的白色拉布拉多猎犬,并把它带回了家。可是,有谁会想到,这只普通的小狗却是一个真正的理财天才呢?吉娅和小狗成为了朋友,并从它那里得知,原来所有的愿望都是可以实现的。

昨晚,伴着秋凉,我一口气读完了这本「金钱童话」,然后深吸了一口气。作为一个 22 岁的大男孩,我觉得非常羞愧——一直以来,我没有树立良好的理财意识,投资理财时也总是十分盲目,没有做好风控。

读到第三章时,我飞快地打开手机上的钱包与理财 APP:微信、支付宝、各个银行,查看我的账户余额,呼吸变得急促起来。前阵子,因为休学参加工作,我挣了一些钱,存款超过了许多身边在校的同学。也正是如此,我自认为消费水平上了一个台阶,便肆无忌惮地去买自己喜欢的商品,花钱去旅行,还租了个不小的房间。大一吃着泡面通宵学习的苦日子似乎已经离我很遥远了。但实际上,按照现在的消费观念继续下去,我的存款将在几个月内消耗殆尽。

书中用童话举了一个很好的例子。一个农夫有一只下金蛋的鹅,每天会给他下一个金蛋。起初,这个农夫又惊又喜,四处炫耀,他把金蛋换成了金钱,改善了自己的生活。但人的本性总是贪婪,渐渐的,这个农夫开始好吃懒做,他觉得每天一个金蛋换来的财富,并不能使他过上自己想要的生活。他用尽各种办法,却发现这只鹅依然每天只下一个金蛋,一气之下便把鹅用斧子劈死了。从那以后,他再也得不到金蛋,也在财富耗尽后郁郁而终。

故事中下金蛋的鹅实际上就是我们的正常收入,即 Beta,它或许是在校期间受之父母的生活费,或许是工作后的劳动所得,可以保证我们的生活,而金蛋则是 Alpha 收入。我感到自己获得第一桶金的过程和书中的吉娅很像,但理财过程实在不敢恭维,没有什么风控可言。

对于书中的所有观点,完全赞同。有则改之,无则加勉。

一、原则

  • 顺势而为,只做龙头,持续关注,把握关键机会!
  • 因为原始资本有限,必须提高自己的胜算:

    • 逢低不潜伏,只做确定而可持续的票!左侧抄底往往被套,因为不知道底在什么地方!
    • 逢高不恋战,先资金一步撤退,四五个点也是肉!赌桌上不能跑,但股市可以!
  • 操作思路:挖掘人性弱点 > 技术分析 > 追涨杀跌

    • 追涨杀跌容易在山顶被套,只能做 t 降低成本,站岗,割肉,转价值投资自欺欺人!
    • 技术分析只有在大环境企稳,处于上升通道时才有价值。但世界不变的只有变化!
    • 挖掘人性弱点是最难的,短线炒的就是热点、情绪、预期,符合量价关系这一经济学基本原理,必须要重视并持续思考!
  • 仓位控制:

    • 满仓干一票是大忌!任何时候都一样!血的教训不能忘!
    • 单只票仓位要么 1/3,要么只买一手,要可战可退!
    • 没有买点的时候管住手,空仓,空仓,空仓!
    • 出现判断失误时,按照下文理智止损!

二、买入策略

寻找买入机会

题材出现时不第一时间介入,至少要等待一天来验证。有的题材只是昙花一现,比如今年中国农业日的题材只持续了一上午!持续性非常重要!

获取题材和热点,要基于「A 股股民也能看到,想到」这一点换位思考。资金点火往往也是基于这点。

国内:百度热榜,环球网,微博,新闻联播,各券商 APP 推送
外部:雪球 APP

题材分

  1. 题材是否还具有持续性(± 5 分)
  2. 题材是否还具有逆势上涨或抗跌能力(± 5 分)
  3. 题材是否处于短期上升通道,如超跌反弹或持续上涨(± 5 分)
  4. 预期逻辑是否够硬核(± 5 分)

环境分

  1. 大盘是否企稳,次日走势是否预期增长(± 5 分)
  2. 北上资金近期流入流出情况(± 5 分)

选票分

  1. 自选票是否为龙头或作为小弟封板/炸板(10 分 / 5 分)
  2. 自选票当前题材的龙头连板数量(2 / 4 / 6 加 5 分,1 / 3 / 5 酌情 ± 5 分)
  3. 上方有无套牢盘(± 5 分)
  4. 当日是否有机构或游资流入(± 5 分)
  5. 当日或次日无特大利空消息(± 10 分)

技术面分

  1. 量能较前日是否增大(5 分)
  2. 当日是否踩上 5 日线、10 日线与 20 日线(5 分)

策略一:顺势套利(风险较低)

满足:题材分高于 15 分,环境分高于 5 分,选票分高于 22 分,技术面分高于 5 分

评价:短期上升趋势已定,值得顺势套利

时机:早盘 9:45 左右

仓位:1/3,1 - 2 只

策略二:今买明卖(有一定风险)

满足:题材分高于 15 分,环境分高于 5 分,选票分高于 18 分,技术面分高于 5 分

评价:预判第二天行情还能持续,在次日高点卖出

时机:尾盘 14:50 左右

仓位:1/4 仓或 1 手

三、卖出策略

策略一:顺势套利

时机:

  1. 第一卖点,次日早盘 9:45 左右,股票冲高到回落的拐点
  2. 第二卖点,第二次冲高回落的拐点
  3. 第三卖点,午后冲高有无机会,否则止盈

策略二:今买明卖

时机:

早盘冲高直接卖出,若低开,则等待红盘后择时卖出

四、止损

非常遗憾,判断失误了,俗话说「胜败乃兵家常事」。

  1. 如果是股票有调整需求了被轻套(3% 以内),龙头尚在,就继续持有
  2. 如果题材逻辑还在,K 线走势尚可,则短期站岗等待
  3. 如果环境分与选票分背离买入时过多,果断割肉
  4. 被套 5% 且跌势已定,果断割肉止损

昨日回顾

昨天加入自选的正川股份西藏药业都于下午封板,其中正川股份开盘后一路走高到封板,期间有松动最后还是封上;西藏药业在尾盘最后一刻有资金急拉到封板。昨天一共有 11 只医疗票收获 10cm 涨幅,毫无疑问题材热度正在持续。

次日(9 月 25 日),在美股大跌的影响下,A 股也低开低走,双良节能 7 板被炸高位出大阴线。早盘高位连板起步股份山东玻纤低开低走闷跌停,直接制造亏钱效应。

9:45 左右观察下博晖创新赛升药业的走势,如果高于 3 个点,去看西藏医药正川股份回踩 20 日线的机会,如果有就半仓参与一笔。

疫情题材热度受到影响,博晖创新冲高后出崩溃分时,康泰医学跟随,正川股份低开高走,盘中换手充分,勉强封板。西藏医药收 4% 涨幅。

今天因为盘面的震荡,没有坚持执行昨天制定的操作策略,而是在上午中国农业日的小题材下,在 20 日线上轻仓买入苏垦农发。原因是近期研报评级表现好,受资金关注,想搏一下资金介入(其实算是搏傻了)。目前被轻套 3 个点不到。正川股份能在龙头倒下后封板是超预期了。

判断

临近国庆假期,资金趋于谨慎,做多意愿减弱,市场的情绪有所反复。

明天策略

节前资金出逃是老戏码了,哪怕节前能有反弹,节后往往也会补跌。苏垦农发如果低开低走,跌幅超 3 个点就果断割肉。行情差没有题材可做的时候,空仓静待时机。

节前会持续关注之前调整的大消费股。

昨日回顾

无。

判断

「疫情题材」

收到外部疫情二次爆发消息的刺激,加上国内新冠疫苗被证明有效的利好推动,八月份被炒过后超跌的疫苗/医疗股迎来一波反弹,预期持续为周一开始,保守估计能持续到周五。截止 9 月 23 日,目前疫情题材的龙头股是博晖创新

昨天加入自选的正川股份西藏药业都于下午封板,其中正川股份开盘后一路走高到封板,期间有松动最后还是封上;西藏药业在尾盘最后一刻有资金急拉到封板。昨天一共有 11 只医疗票收获 10cm 涨幅,毫无疑问题材热度正在持续。

「光伏题材」

受到四部委利好消息影响,下午光伏有关股票拉伸。这块资金主要在创业板玩,没开通就不参与了。

明天策略

9:45 左右观察下博晖创新赛升药业的走势,如果高于 3 个点,去看西藏医药正川股份回踩 20 日线的机会,如果有就半仓参与一笔。

思考 🤔

雪球网的 slogan 是「聪明的投资者都在这」。作为一个大笨蛋投资者,决定做一个简单的黑科技来抄作业,即根据雪球聪明的主理人的策略来调仓。
雪球里有很多主理人更新他们的投资组合,有的是实盘的,有的是模拟盘的。由于实盘组合在 PC 端是不展示的,比较之后,我决定选用模拟盘组合「迷踪一号」来测试程序可用性。

调试过程中,迫于雪球网使用「极验」验证码来进行登录二次验证(就是那种滑动拼图二维码),我使用微信扫码来登录,将登录状态的 Cookie 保存,并在调用获取历史调仓记录的 API 时带上这些 Cookie,从而正确获取雪球组合调仓数据。

代码 🌰

const puppeteer = require("puppeteer")
const axios = require("axios")
const fs = require("fs")

/**
 * @description 获取雪球 token,用户需要用微信扫码
 */
function refreshXueqiuToken() {
  return new Promise(async (resolve) => {
    const browser = await puppeteer.launch({
      headless: true,
    })
    const page = await browser.newPage()

    await page.setViewport({
      width: 1440,
      height: 1080,
    })
    await page.goto("https://xueqiu.com/p/ZH1794481")

    await page.click("#nav-login-link")
    browser.on("targetcreated", async (e) => {
      let wxPage = await e.page()
      const url = await wxPage.url()
      if (
        url &&
        url.includes("https://open.weixin.qq.com/connect/qrconnect?")
      ) {
        setTimeout(async () => {
          let img = await wxPage.$(".wrp_code img")
          let src = await img.getProperty("src")
          console.log("📱 请使用微信扫码:", src["_remoteObject"]["value"])
        }, 2000)
      }
    })

    browser.on("targetdestroyed", async (e) => {
      let pg = await e.page()
      const url = await pg.url()
      if (url.includes("service/wcconnect")) {
        console.log("扫码登录成功!正在写入最新 cookie...")
        setTimeout(async () => {
          let cookies = await page.cookies()
          fs.writeFileSync("./cookies.txt", JSON.stringify(cookies))
          console.log(
            new Date().toLocaleString() + " - Cookie 已写入 cookies.txt!"
          )
          resolve(cookies)
        }, 1000)
      }
    })
    setTimeout(async () => {
      await page.click("#weixin_login")
    }, 1000)
  })
}

/**
 * @description 获取雪球组合历史调仓
 */
async function gainTicketInfo(id = "ZH1794481") {
  let cookieStore = fs.readFileSync("./cookies.txt")
  let arr = JSON.parse(cookieStore)

  let cookie = ""
  for (let i = 0; i < arr.length; i++) {
    cookie = cookie + `${arr[i]["name"]}=${arr[i]["value"]};  `
  }

  let res = await axios.default({
    withCredentials: true,
    headers: {
      Cookie: cookie,
    },
    url: "https://xueqiu.com/cubes/rebalancing/history.json",
    params: {
      cube_symbol: id,
      page: 1,
      count: 20,
    },
    method: "GET",
  })
  return res.data
}

async function main() {
  console.log("即将执行雪球扫码登录...")
  // 执行登录
  await refreshXueqiuToken()
  console.log("正在获取某只股票调仓数据...")
  // 获取某一只股票组合历史调仓数据
  let ticketInfo = await gainTicketInfo("ZH1794481")
  console.log("雪球 ZH1794481 持仓数据:", ticketInfo)
}

main()