分类
绝佳的日内交易策略

又有哪些程序化的策略?

图片来源:图虫创意

又有哪些程序化的策略?

矽谷科技先鋒輩出,其中,Google、Apple、Meta 加上電商鉅子 Amazon,被稱作「主宰未來的四騎士」,一舉一動無不牽引著全球數位產業的演進。近年來,Google、Apple 陸續祭出資料存取限制,顛覆了數位廣告界賴以為生的追蹤工具、重創各大社群媒體收益,也挑起了兩者與 Meta 間的敏感神經。三大巨頭的互動關係將如何發展?自家廣告業務又將何去何從?這篇文章,TenMax 將為你整理近期動態,一起來看看!

一、Google:如火如荼打造 Cookie 替代方案,優化應用程式廣告體驗

2020 年,老大哥 Google 敲響了第三方 又有哪些程序化的策略? Cookie 的喪鐘,宣布於市佔率逾七成的瀏覽器 Chrome 中,全面封阻第三方 Cookie,嚇得各大廣告代理商、媒體發佈商瑟瑟發抖。起初,Google 計畫於 2022 年底實現禁用,後經兩度延期,現已推遲時程至 2024 年中。兩度延期,反映 Google 自家的餅乾替代方案「隱私沙盒(Privacy Sandbox)」尚未完善。

事實上,Google 在開發替代手段的路上阻礙重重,起初推出的「FLoC(Federated Learning of Cohorts)」廣告追蹤技術,主張將「具類似瀏覽行為的用戶,打包成一個又一個的興趣群組」,並且為群組貼標,開放廣告商根據標籤,向群組投放相關廣告,然而此一提案屢受質疑,遭批「換湯不換藥」、變相侵犯隱私等;於是,Google 於今年初,正式告別 FLoC,轉向投入「網站主題標籤(Topics)」,將為網站貼標以判定用戶興趣,每三週刪除記錄、重新計算,藉由模糊化與時限性避免交叉比對、識別單獨用戶的可能,此技術於 7 月 1 日正式對外測試。

另一方面,隨著大眾對爆量廣告的負面觀感加劇,Google 也致力於優化廣告體驗。除了在 2019 年針對聯播網廣告納入「優質廣告標準」(Better Ads Standards),禁止強迫倒數、自動播放等惱人廣告;今年 9 月底,也將管控應用程式內的程序化廣告,禁止非預期的全螢幕滿版廣告,以及顯示 15 秒後無法關閉的廣告格式。Google 一項研究指出:80% 廣告影響力來自於能激起共鳴的內容,在在提醒行銷人員,擺脫粗暴且直接的行銷策略,轉而走向與用戶建立關係、獲取好感的廣告手段與創意。

二、Apple:擴大收入來源!開發 iPhone / iPad 內建應用程式之廣告版位

緊接在 Google 瀏覽器禁令之後,Apple 也挾作業系統優勢,推出隱私保護措施,且以迅雷不及掩耳的速度,在宣布後一年內旋即實施上路,殺得 Meta 等應用程式措手不及。蘋果的「APP 追蹤透明度(App Tracking Transparency,簡稱 ATT)」,規定應用程式必須跳出通知視窗,徵詢用戶「主動同意」,才能搜集用戶的行為數據,大大打擊應用程式端追蹤的能力,重創 Meta 等社群媒體收益,預估今年將損失逾 100 億美元的廣告收入,Meta 財報表現也受牽連,成長放緩甚至停滯。當時業界曾質疑,蘋果此一行為,是為了「自肥」自家廣告產品而超前部署,如今一切似乎「有跡可循」?

《彭博社》近期報導指出,Apple 計畫將廣告版位擴展至 iPhone/iPad 等行動裝置,允許廣告投放至內建的「Podcast」、「地圖」、「圖書」、「健康」等 APP 當中,以期廣告業務能在未來一年內突破百億美元。事實上,蘋果早在 2010 年級推出自家廣告服務「iAd」,然而表現並不亮眼;2016 年,蘋果首次開放 APP Store 廣告版位,開放應用程式商付費讓自家產品出現在搜尋結果的前位;2021 年,蘋果 ATT 政策實施後,廣告商趨之若鶩尋求 Apple 廣告解決方案,拉抬全年廣告業務成長 238%,來到 40 億美元。如今,蘋果進一步推展廣告業務,將於更多內建應用程式提供廣告空間,包含旗下串流平台「Apple TV+」也具有無窮潛力(目前該平台僅在週五夜的棒球直播中插入廣告)。蘋果 ATT 新規,使平台獨佔用戶數據,若平台能善用第一方數據、建立完善的 DSP(需求方平台),勢必能驅動廣告業務成為未來重要的收入來源。

三、Meta:加速推展「Advantage 又有哪些程序化的策略? 自動化廣告產品」,側重 Reels 行銷功能

蘋果隱私政策一出,Meta 首當其衝,光是 ATT 上線第一個月,應用程式總 iOS 廣告支出便下降了 33%,若聚焦於 Facebook 則更為可觀,使得 Meta 年獲利下降 8%。為減少對 iOS 數據之依賴性,Facebook 積極強化自身演算法以及機器學習技術,透過平台自有的第一方數據,為廣告主找出最有可能點擊廣告的受眾、最能吸引大眾的廣告素材。這也代表著,基於用戶數據的「精準鎖定」,在未來可能變得「沒那麼重要」。

今年 3 月起,Meta 重磅整合平台旗下所有的自動化廣告產品,並將其命名為「Meta Advantage」。Meta Advantage 層級下,又分兩類產品,標示為 「Advantage」的產品,可以幫助用戶優化需要手動設置的選項,例如:用戶設定廣告目標受眾的興趣條件後,「Advantage Detailed Targeting」可以協助找到更多的類似受眾;標示為 「Advantage+」的產品,則是從頭到尾透過機器學習來幫用戶做決定,用戶不需要經過手動設置的流程,目前可用選項包含「Advantage+ 應用程式廣告活動」、「Advantage+ 廣告版位」及「Advantage+ 廣告素材」。

今年 8 月 15 日起,官方更將推出「Advantage+ 購物活動」,協助電商賣家用更少的成本,獲得更佳的轉換效益。據 Meta 前期測試結果指出,運用「Advantage+ 購物活動」功能,有效推動每次轉換成本下降了 12%,成效十分亮眼。此功能可以幫助電商客戶自動組合、生成高達 150 種廣告素材,並且根據用戶過去在 Facebook 平台上的行為,自動提供最有可能促成其轉換的目的地(例如:Facebook Shop 或品牌官網)。Meta 又有哪些程序化的策略? 表示:「雖然行銷人員總是期待親力親為地管理廣告投放的細節,然而,系統的自動化流程可能最終能創造更好的結果。」呼籲廣告主信任平台的自動鎖定與優化能力。

應戰蘋果隱私政策外,新興社交巨頭 TikTok 更是來勢洶洶,為迅速發展足以與之抗衡的短影音產品,Meta 正傾注全力推廣「Reels」短影音功能,不僅廢除原有的「Instagram 影片」廣告版位,轉而新增「Reels」版位選項;也開放品牌、創作者,使用 APP 中的「加強推廣」,付費提升已發佈之 Reels 的曝光成效。本月,Meta 更宣布廢除 Facebook 的「直播購物」功能,未來創作者仍可以在 Facebook 平台上建立直播活動,但無法在直播活動創建「產品列表」(Product lists),也無法在直播時使用「產品標籤」(Product tags);若想在影片中為商品加入產品標籤,只能透過 又有哪些程序化的策略? Instagram 直播或是 Reels 影片來達成,顯見官方深掘短影音廣告業務的決心。

Google 新規範昭示廣告創意愈顯重要、Apple 發展策略顯現第一方數據的珍貴與行銷價值,Meta 走向則可見自動化與短影音,勢將驅動社群媒體廣告的未來。近年來,數位廣告環境變化快速、一日千里,行銷人不免為此苦惱、焦慮,哀嘆上天實在捉弄人!面對變局,時時掌握巨頭最新動態與市場當前趨勢,才能敏捷擬定合用的行銷策略,在嶄新的消費世代拔得頭籌。

终于知道广告中DSP/RTB/SSP的含义了

终于知道广告中DSP/RTB/SSP的含义了

图片来源:图虫创意

Demand Side Platform, DSP

Supplier Side Platform, SSP

Real Time Bidding, RTB

一、什么是需求方平台DSP?

DSP的全称是 Demand Side Platform

RTB (Real Time Bidding)

三、SSP、DSP和RTB是如何工作的?

为了方便大家理解,我们举一个例子。

四、Facebook, Google和程序化广告之间的区别与优势

Facebook:基于社交行为的复杂定位

· 不同的广告形式:在 Facebook 上,广告商可以从放置在该社交媒体中的不同FB 广告格式中进行选择(主要在社交信息流中,但不仅限于):视频、图像、轮播、收藏和全屏体验

谷歌:来自数万亿请求的流量

· 广大的受众群:Google是超过70%的互联网用户使用的搜索引擎。2021年,它每天处理 2 万亿次的请求,包括广告。这就是为什么与 Facebook相比,谷歌广告平台可以接触到更多的受众。

· 广告位选择多:Google Ads 在与Google 合作的任何展示广告网络中的Google网页和网站上提供内容相关的广告展示位置。在这种情况下,可以根据各种选项(例如地理位置或偏好)进行定位。在许多Google服务(例如Google Discovery)中提供广告是可能的,其中广告可以在用户的提要中本地安装。

中泰证券:程序化交易系统构建与风险控制

量化交易在中国的蓬勃发展、人工智能在投资领域的应用、交易工具的丰富,使得程序化交易在证券市场越来越受欢迎。程序化交易能够更快地、更有纪律性地执行策略,从而减少冲击成本、降低情绪影响。规模较大的私募,由于具有交易策略多样性、交易市场广泛性、交易品种复杂性等特点,对程序化交易的需求显得尤为迫切。此外,程序化交易中的做市商策略、算法交易策略也对降低市场流动性风险起到积极作用。不过,历史上也曾发生过因为软件bug导致的亏损及个股闪崩等事件,这些风险事件大多是在程序化交易过程的关键点上没能做好检查和风险控制所致。如果能从系统构建开始就有意识的做好防范,使用正确的编程方式,就可以在很大程度上避免风险事件的发生。笔者希望本文能起到抛砖引玉的作用,吸引更多的程序化交易工程师分享经验,共同降低程序化交易的风险。

程序化交易系统的构建

程序化交易是把可量化的分析方法,用计算机编成交易策略进行自动下单交易,程序化交易是量化交易的一部分。根据证监会2015年10月9日公布《证券期货市场程序化交易管理办法(征求意见稿)》里的定义,程序化交易是指通过既定程序或特定软件,自动生成或执行交易指令的交易行为。在设计上一般包括行情网关、交易网关、策略器管理、风控及头寸管理器、监控客户端等若干环节。

1.行情网关

行情网关指的是连接不同的行情接口的适配层。针对股票类的行情网关有宏汇、国泰安、交易所原始行情接口、券商提供的接口等;针对期货的行情网关有CTP、飞马、飞创、飞鼠、盛立金融、艾克朗科等,还有各种境外行情。在行情网关的设计上,要充分考虑期货、期权、股票的兼容性,并且通过一致的行情结构体来统一,同时在行情上要保存好交易所的时间戳和本地时间戳。

行情网关的使用中,要注意以下4个风险点:过期的行情会导致错误的信号;行情断开或者重连会导致信号延迟或者错误;超过涨跌停价格可能产生错误的行情;多路行情源引发的行情重复问题。

2.交易网关

在交易网关上,除了下单外,成交回报是另一项重要内容。成交回报信息是策略重要的驱动因素,需要根据成交回报对订单状态进行更新。在更新状态的时候要注意顺序问题,不要让前面的状态覆盖了后面的状态。当订单收到全成、全撤、部撤、废单、拒单等状态时,需要将订单设为IsDone状态。所有IsDone状态的订单,状态形式不能再做改变。

在交易网关接口处理上要注意成交回报的顺序。乱序的成交回报如果没处理好,会导致已终结的订单被中间状态覆盖,比如全成变成部成,会引发资金扣减错误和持仓错误等问题。

3.策略管理器

策略管理器是程序化交易最核心的环节,设计的好坏,直接决定了程序化交易系统的策略扩展性。策略管理器在不同的团队有不同的设计方式,比较建议的设计方式是:一套平台,多种策略。目前常用的策略主要是趋势交易、Alpha策略、套利策略、做市商策略等。有同时买卖数百只股票,对并发有要求的策略,也有对低延迟有高要求的做市商策略。不管是哪种,都需要在策略管理器层面尽可能的统一。在实践中非常重要的理念,就是“用配对交易的理念来设计系统”。如果策略管理器从一开始就能支持配对交易,那么对其他策略的兼容性就会很好。

程序化交易的触发方式一般有两种:信号触发和定时触发。定时触发比较简单,这里重点谈谈信号触发。

复杂事件处理引擎CEP。CEP又称复杂事件处理引擎,主流产品有Apama CEP、Sybase CEP等,在国外共同基金使用较多,而对冲基金用的较少。在程序化交易系统里使用CEP的少之又少,最根本的原因在于CEP过于复杂,过于复杂的系统会带来高延迟和更多的不确定性。

消息队列MQ。消息队列的代表是互联网体系的Kafka、RocketMQ等,一般称之为分布式消息中间件,大多用在互联网的高并发场景,在低延迟的程序化交易系统里用的很少。程序化交易多为单体应用,在一台服务器上跑完策略,更看重低延迟而不是分布式和高并发。

进程内RPC。在单台服务器上策略模块的通讯多采用进程间通讯,也有直接在单个进程内通过无锁队列来实现消息派发,不过在高频交易中的实践里,使用mmap做进程间的通讯基本已经达成一致。mmap也是进程间通讯最快的方式。

4.策略调度

5.风控及头寸管理器

风控是策略非常重要的环节,分为三个层次:一个是账户层面的风控,包括账户总体盈亏、挂撤比、最大下单数、安全垫等;一个是策略层面的风控,一个账户里可能运行多个策略,每个策略都有自己的风控指标;再就是品种层面的风控,每个品种都设置最大可用资金、最大下单数、未成交订单数等;

6.风险指标

在风控环节一定要加上涌浪单检测来防止乌龙指。策略交易系统一般是行情和成交回报驱动策略,这也就决定了不太会有单品种频繁下单或者单品种在市场上暴露过多未成交订单。如果出现上述情况,往往是交易系统本身或者策略本身出现逻辑bug,这时应该做对应的拦截,防止对市场造成冲击。

7.资金扣减

交易系统里一定要设置资金扣减,在资金扣减上要注意市价单的处理。对于市价单,要用涨停价格来扣减,然后需要根据成交回报来更新实际的资金占用,所以这里成交回报的顺序和鲁棒就显得尤其重要。如果收到全成后又收到部成,并且没有仔细处理的话,容易导致资金和持仓错误。有些工程师会不注意策略交易系统的资金控制,认为柜台会做校验不会透支,然而如果有配对交易,比如期现套利,股指端成交后,现货发现透支,将会导致风险敞口的发生。

8.监控客户端

9.各类信号监控

10.异常流程处置

开发技巧

策略交易系统的开发模式与其他系统最大的区别在与对异常和不确定性的低容忍,“所有事情都要做到能够被解释”是一条很重要的纪律。在开发或者测试过程中发生的任何异常情况都要仔细分析背后可能存在的原因,往往某个隐藏的bug会导致生产上的亏损,所以不能接受任何“我这里是正常的”“重启试试”等逃避问题的行为。

1.防御式编程

防御式编程是提高软件质量的有益辅助手段,也是《代码大全》里的推荐方式。防御式编程的主要思想是:子程序不因传入错误数据而被破坏,哪怕是由其他子程序产生的错误数据。这种思想将可能出现的错误影响控制在有限的范围内。“假设你面对的是一个残酷的非法数据世界,你要足够鲁棒来保证你不受侵害”。可以通过接口类和内部类将数据隔离,在接口类上做数据的判断和检查,包括行情的判断、文件数据的判断、用户输入的判断等。

2.大量使用断言

编写代码时,我们总是会做出一些假设,断言就用于在代码中捕捉这些假设。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真,使用断言可以创建更稳定、品质更好且不易于出错的代码。断言只出现在Debug版本里,不会影响Release版本的性能。可以使用断言判断指针不为空、使用断言判断收到全成或部撤后不再收到成交回报、使用断言判断在成交回报回来查表时候一定能找到对应订单、使用断言判断行情的时间戳是顺序的等等,在每个逻辑关键点加上断言会极大程度上保障系统的健壮性,也能在重构过程中充满信心。

3.用单元测试用例来覆盖

单元测试也叫白盒测试,通过编写对应的测试代码来验证代码功能的正确性。单元测试是保障代码质量的重要手段,越早进行测试,未来修复bug的代价越少,但是单元测试也是“短期利益与长期利益冲突”的典型。长期来看有好处,短期却需要付出更多的劳动。单元测试有以下三点好处。

尽可能早的测试功能正确性。一个功能越早被测试,就能越早发现问题。当系统构建成功后发现bug,通过日志或者各种调试工具来修正错误的代价极其高昂,而早期通过单元测试代码覆盖,能尽可能的保障每个功能的健壮。

驱动代码编写规范,独立可测。当开始编写单元测试用例的时候,为了更好的测试功能类,会尽可能的把类写的独立可测,会尽可能的降低代码的耦合程度,也会更好的遵循单一职责原则(SRP),总而言之就是通过编写更多的单元测试来驱动代码写得更好。

单元测试是重构的重要保障。单元测试案例随着时间流逝会越积累越多,这也是重构的重要保障。当重构完并且通过所有单元测试,就会对产品的品质更有信心,也会更有信心去重构系统,而缺乏单元代码覆盖的系统重构起来困难重重,重构代价很高。

无服务器应用运营 5 年经验总结

module.exports.handler = middy(async (event, context) => … // do stuff with secrets in the context object
>).use(ssm( setToContext: true, 又有哪些程序化的策略? // save the decrypted parameters in the “context” object
cacheExpiry: 60000, // expire after 1 minute
fetchData: accessToken: ‘/dev/service_name/access_token’
>
>))

遵循「最小特权」原则

另一个重要的安全考虑是:您应该遵循最小权限原则,并为您的 Lambda 函数提供必要的最低权限。

例如,如果您的函数需要将数据保存到 DynamoDB 表中,则只需授予它执行该操作的权限即可。这可以说是您需要做的最重要的事情,以减少安全危害事件的爆炸半径。

零信任网络

相反,对每个系统的每个请求都必须经过身份验证和授权

这意味着即使对于我们 AWS 环境中其它服务使用内部 API,我们仍然需要对这些请求进行身份验证。幸运的是,我们可以通过 API Gateway 和 AWS_IAM 授权轻松做到这一点。这可以保护内部 API 并确保调用者具有访问这些 API 所需的 IAM 权限。

优化冷启动

当谈到 Lambda 函数的性能时,首先想到的是冷启动。

  • 在低访问量场景中,使用预置并发会显著增加您的 Lambda 成本,因为您要为正常运行时间和调用付费。
  • 从可用的区域并发中减去预置并发(正如我们上面提到的,在大多数区域中从 3000 开始)。这需要仔细的并发管理,以确保您有足够的并发性以供其它功能按需扩展。
  • 预置并发不适用于 $LATEST 别名,因此您可能必须使用自定义别名。

在我看来,您应该首先尝试优化 Lambda 函数的冷启动性能,使其在可接受的参数范围内。只有当这被证明不可行时,您才应该考虑将预置并发作为解决方案。

在这篇博文中,我探讨了提高 Lambda 性能的三种方法,包括一些关于如何改进 Lambda 冷启动的技巧:

  • 删除不需要的依赖项。较小的部署对象使冷启动时间更快。
  • 如果许多功能(在同一个项目中)需要不同的依赖项,则考虑将它们单独打包,以便每个功能都有一个较小的部署对象。
  • 对于 Node.js 函数,使用诸如 webpack 之类的捆绑器可以减少模块初始化时间(因为它会在您需要模块时删除许多 sys IO 调用)。
  • 将您的依赖项放在 Lambda 层中。但是这样做是为了优化部署,不要使用 Lambda 层作为包管理器(这就是原因)。
  • 从一开始就考虑系统监控(可观察性)。
  • 使用多个 又有哪些程序化的策略? AWS 账户。
  • 不要将密钥以纯文本形式放在环境变量中。
  • 遵循「最小特权」原则。
  • 监控和优化 Lambda 冷启动性能。

其中许多经验适用于在 AWS 中运行的任何应用程序,而不仅仅是无服务器。我希望这些经验能帮助您更好地利用 AWS 和无服务器技术,并希望避免我在此过程中犯的一些错误!