劉偉榮,劉安庚,蔡凌飛
(1.上海商學(xué)院工商管理學(xué)院;2.上海商學(xué)院教務(wù)處;3.上海商學(xué)院商務(wù)信息學(xué)院,上海 200235)
近年來,Python在金融數(shù)據(jù)分析領(lǐng)域的應(yīng)用越來越普及,如何從數(shù)據(jù)里面發(fā)現(xiàn)并挖掘有價值的信息成為一個熱門的研究課題[1]。在應(yīng)用型人才培養(yǎng)理念下,以Python為分析工具,金融數(shù)據(jù)分析為載體,用實驗的形式讓學(xué)生掌握金融數(shù)據(jù)分析的方法,既能滿足學(xué)生的學(xué)習(xí)需求,鞏固相關(guān)金融理論知識,又能形成一定的金融實踐能力與探索能力。
Python作為一種簡單易學(xué),功能強(qiáng)大的編程語言,在金融數(shù)據(jù)分析領(lǐng)域越來越受到追捧。Python具有許多優(yōu)秀特性,一是豐富的擴(kuò)展庫,Python擁有如NumPy、Pandas、Scikit-learn等豐富的擴(kuò)展庫,這些庫可以方便地進(jìn)行數(shù)據(jù)分析和處理。例如,使用NumPy可以高效地進(jìn)行數(shù)值計算;使用Pandas可以輕松地處理數(shù)據(jù);使用Scikit-learn可以進(jìn)行機(jī)器學(xué)習(xí)。二是強(qiáng)大的可視化能力,Python擁有良好的可視化能力,可以通過Matplotlib、Seaborn等庫生成各種圖表,使得數(shù)據(jù)分析結(jié)果更加直觀和易懂。三是可擴(kuò)展性,Python可以與其他編程語言相結(jié)合,如R、Java等,擴(kuò)展其功能。例如,可以使用RPy2將Python和R結(jié)合使用,使用JPype將Python和Java結(jié)合使用。四是開源性,Python的開源性質(zhì)使其得到了廣泛的社區(qū)支持和貢獻(xiàn),為用戶提供了豐富的資源和工具。用戶可以自由地獲取、使用、修改和分享Python代碼,促進(jìn)了Python社區(qū)的發(fā)展和進(jìn)步。五是基于Python的金融數(shù)據(jù)分析社區(qū)愈發(fā)完善,例如,優(yōu)礦、聚寬、Tushare等開源平臺提供了豐富的數(shù)據(jù)資源與學(xué)習(xí)資源。正是這些優(yōu)良特性,使Python語言在金融數(shù)據(jù)分析領(lǐng)域的作用越來越重要,使金融數(shù)據(jù)分析與研究發(fā)生了巨大的變革[1]。
“Python金融數(shù)據(jù)分析實驗”課程是一門具有一定挑戰(zhàn)性的課程,它能夠有效地培養(yǎng)學(xué)生的編程能力,提高數(shù)據(jù)處理和數(shù)據(jù)分析能力。在今天這個數(shù)據(jù)時代,數(shù)據(jù)分析技能尤其受到廣泛的關(guān)注,而Python作為一種強(qiáng)大的編程語言,已經(jīng)成為了數(shù)據(jù)分析領(lǐng)域的最佳工具之一,學(xué)習(xí)本課程將對學(xué)生未來的職業(yè)發(fā)展產(chǎn)生很大的幫助。此外,課程以金融數(shù)據(jù)分析應(yīng)用場景為目標(biāo),能夠讓學(xué)生了解科技在金融行業(yè)的應(yīng)用,提高其對于當(dāng)前宏觀經(jīng)濟(jì)形勢的研判能力。掌握Python在金融等數(shù)據(jù)分析領(lǐng)域的實戰(zhàn)技能,能夠為社會輸送具有數(shù)據(jù)素養(yǎng)和分析能力的金融復(fù)合型人才[2]。因此,這門課程對金融領(lǐng)域的專業(yè)人才培養(yǎng)非常重要。
雖然Python作為工具能有效實現(xiàn)金融數(shù)據(jù)的處理和分析,有較強(qiáng)的實用性,然而作為一門課程,在教學(xué)實施過程中,仍然存在諸多問題。對學(xué)生來說,Python這門課程需要的基礎(chǔ)知識比較廣泛,如果學(xué)生基礎(chǔ)不夠扎實,他們可能會感到難以理解和應(yīng)用這門課程的知識。此外,Python代碼的抽象性也可能會讓學(xué)生感到困惑,特別是那些沒有編程經(jīng)驗的學(xué)生,他們可能會覺得案例代碼的邏輯難以理解,從而導(dǎo)致他們在學(xué)習(xí)過程中出現(xiàn)困難和挫折。為了解決課程在教學(xué)實施中存在的問題,本文通過在教學(xué)中的嘗試與探索,提出針對性的建議和對策,對有效改進(jìn)此類課程的建設(shè)與開展提供思路與參考。
互聯(lián)網(wǎng)技術(shù)的運(yùn)用使得大規(guī)模數(shù)據(jù)的收集,以及數(shù)據(jù)的精準(zhǔn)分析提供了可能,容量龐大的金融數(shù)據(jù)庫對數(shù)據(jù)分析工具的效率和準(zhǔn)確性提出了較高要求[3]。Python作為數(shù)據(jù)分析工具,在金融數(shù)據(jù)分析中起到重要作用,能對大批量金融數(shù)據(jù)有效分析,幫助投資者更好地理解市場趨勢和投資機(jī)會。同時還能夠提高分析的準(zhǔn)確性和速度,使得金融決策更加明智和精確,并且能快速呈現(xiàn)可視化結(jié)果,是金融數(shù)據(jù)分析的一大利器。在教學(xué)中,Python的使用也能使學(xué)生更好地理解相關(guān)理論知識,也能使學(xué)生進(jìn)一步明確理論在現(xiàn)實中的作用。但作為一門Python與金融數(shù)據(jù)分析相結(jié)合的課程,教學(xué)內(nèi)容存在交叉性,課程內(nèi)容知識量較大,加上學(xué)生基礎(chǔ)各不相同,在教學(xué)過程中發(fā)現(xiàn)諸多問題亟待解決。
由于“Python金融數(shù)據(jù)分析實驗”課程內(nèi)容涉及學(xué)科交叉,面向?qū)I(yè)較廣,而且未設(shè)置前置課程,導(dǎo)致面對學(xué)生基礎(chǔ)差異大,難以將課程進(jìn)度統(tǒng)一。這是一個普遍存在的問題,尤其是在涉及編程的課程中。對于沒有編程基礎(chǔ)的學(xué)生,課程會更具挑戰(zhàn)性,需要用更多時間來掌握基礎(chǔ)知識。因此,在編程基礎(chǔ)的教學(xué)中,需要盡可能細(xì)致地講解,并讓學(xué)生嘗試編寫程序。這既可以通過一步步程序拆解與實現(xiàn)來幫助學(xué)生克服畏難情緒,也可以讓無編程基礎(chǔ)的學(xué)生有更多的機(jī)會練習(xí),以便在課程中跟上進(jìn)度。另一方面,對于那些已經(jīng)有一定編程基礎(chǔ)的學(xué)生來說,基礎(chǔ)知識的教學(xué)可能會相對簡單。在課堂教學(xué)中,這部分學(xué)生會認(rèn)為課程內(nèi)容缺乏挑戰(zhàn)性。這也是一個需要重視的問題,如果課程內(nèi)容過于簡單,會導(dǎo)致學(xué)生失去興趣和動力,影響其學(xué)習(xí)效果。
針對上述問題,對編程基礎(chǔ)不同的情況,需要采取多種措施來解決。只有兼顧兩類學(xué)生的學(xué)習(xí)需求,才能提高課程教學(xué)質(zhì)量,這對提升課程教學(xué)質(zhì)量具有重要意義。
Python語言基礎(chǔ)知識是整個課程的基石,掌握好基礎(chǔ)知識是后期能快速上手Numpy、Pandas等模塊的先決條件。本課程的編程基礎(chǔ)主要涉及數(shù)據(jù)類型、常見數(shù)據(jù)容器、循環(huán)控制等內(nèi)容,在教學(xué)中發(fā)現(xiàn)該部分內(nèi)容講解以“What”為主,很難將金融案例結(jié)合到Python編程基礎(chǔ)教學(xué)中,導(dǎo)致部分學(xué)生會誤認(rèn)為該課程是一門以編程為主的課程,在未接觸到金融編程案例時便失去興趣。針對上述問題,如何通過課程結(jié)構(gòu)、課程內(nèi)容調(diào)整,改變枯燥的編程基礎(chǔ)內(nèi)容,將對課程的順利開展起到重要作用。
Python對金融數(shù)據(jù)的處理能力強(qiáng)大,它可以處理大量的金融數(shù)據(jù),包括交易數(shù)據(jù)、股票數(shù)據(jù)、匯率數(shù)據(jù)以及其他市場數(shù)據(jù)。這種功能對于金融機(jī)構(gòu)和投資者來說是非常有用的,因為它可以幫助他們作出更好的決策。由于諸多數(shù)據(jù)分析與處理需要調(diào)用第三方庫,在教學(xué)演示過程中,雖能體現(xiàn)Python強(qiáng)大數(shù)據(jù)處理能力,但金融數(shù)據(jù)處理過程顯“黑箱”化,導(dǎo)致學(xué)生不理解金融數(shù)據(jù)處理的邏輯,而無法在實踐中靈活運(yùn)用。例如,每日收益率=(當(dāng)日收盤價/前日收盤價)-1(即:t=pt/pt-1-1), Python中實現(xiàn)只需用.pct_change()函數(shù)就能計算結(jié)果,如圖1所示。
圖1 用.pct_change()函數(shù)計算每日收益率
“黑箱化”的特點,在教學(xué)中不利于展示與詳細(xì)講解,同時“黑箱化”在教學(xué)中不利于學(xué)生理解金融知識,從而導(dǎo)致學(xué)生知其然不知所以然。解決這一問題,能使學(xué)生在教學(xué)中理清金融數(shù)據(jù)處理的邏輯,幫助學(xué)生進(jìn)一步鞏固金融知識。
CNN具有2種特性:局部連接和參數(shù)共享。CNN中相鄰2層的連接方式為局部連接,當(dāng)前層每個神經(jīng)元的值是對上一層進(jìn)行卷積操作得到的,且每次卷積的參數(shù)相同。如圖1所示。相同顏色的線表示相同的參數(shù),li+1層神經(jīng)元的值依賴于上一層神經(jīng)元的值, li+1 層每個神經(jīng)元共享參數(shù)。
針對上述在教學(xué)中遇到的問題,通過不斷調(diào)整與試錯從中摸索出一些能有效解決上述問題的方法,現(xiàn)總結(jié)如下:
針對學(xué)生基礎(chǔ)差異較大的問題,通過線上線下相結(jié)合的方式可在一定程度上改善。Python編程基礎(chǔ)知識的講解較為枯燥且知識點單一,在線上線下相結(jié)合的形式下,可以通過不同措施來調(diào)動基礎(chǔ)不同學(xué)生的注意力,增加學(xué)生的學(xué)習(xí)主動性與積極性。首先,為學(xué)生提供線上視頻課程,詳細(xì)講解基礎(chǔ)知識,而在課堂教學(xué)中,增加趣味性較強(qiáng)的案例分析和課堂討論?;A(chǔ)不夠扎實的學(xué)生可通過線上資源進(jìn)一步提高和鞏固,通過線上視頻回顧相關(guān)內(nèi)容,幫助基礎(chǔ)薄弱的學(xué)生打下堅實基礎(chǔ)。這些措施可以幫助學(xué)生更好地消化和鞏固課程知識,為金融數(shù)據(jù)分析和處理打下堅實基礎(chǔ)。其次,可以設(shè)置大量線上練習(xí),供學(xué)生在課后選擇性學(xué)習(xí)。此外增加一些線上小測驗,檢測學(xué)生的學(xué)習(xí)成果,可進(jìn)一步提升教學(xué)效果。通過這些測驗,我們可以及時調(diào)整教學(xué)內(nèi)容與進(jìn)度,保證學(xué)生能夠跟上課程進(jìn)度,增加學(xué)習(xí)主觀能動性。通過線上線下相結(jié)合的方式,可以使學(xué)生更好地掌握編程基礎(chǔ)知識,提高他們的學(xué)習(xí)質(zhì)量和學(xué)習(xí)效率。
針對課程基礎(chǔ)知識部分相對枯燥的問題,通過線上線下相結(jié)合的方式可在一定程度上得到解決,但還需要調(diào)整課程結(jié)構(gòu),使教學(xué)效果更佳。通過壓縮課堂基礎(chǔ)知識課時,并融入更多金融知識,可進(jìn)一步提升教學(xué)效果。一方面,編程基礎(chǔ)知識課時壓縮并不意味著知識量減少,學(xué)生需根據(jù)自身基礎(chǔ),通過線上課程補(bǔ)充。另一方面,部分基礎(chǔ)知識可融入后期的實驗案例中進(jìn)行講解。這樣既可以快速完成較為枯燥的基礎(chǔ)知識講解,快速進(jìn)入課程主題,也能增加金融數(shù)據(jù)分析內(nèi)容的教學(xué)。如在金融知識“最大回撤”概念的講解中,以圖形化的方式先使學(xué)生理解“最大回撤”的概念,介紹最大回撤的意義,并通過代碼講解實現(xiàn)“最大回撤”的計算與作圖,使學(xué)生學(xué)習(xí)金融知識的同時,了解其原理,并能使用Python實現(xiàn),如圖2所示。這樣既能提升授課效率,同時也能使課程內(nèi)容進(jìn)一步豐富,提高學(xué)生的學(xué)習(xí)興趣。
圖2 最大回撤案例講解
Excel在金融數(shù)據(jù)處理和分析中較常見,豐富的函數(shù)庫、高級分析工具、VBA程序等功能,足以完成大部分金融計算,Excel在金融數(shù)據(jù)分析中特點鮮明,可以將操作步驟清晰展示出來,理清各組數(shù)據(jù)之間的邏輯關(guān)系,并能對公式進(jìn)行解釋說明,如圖3所示,在教學(xué)中學(xué)生更容易接受與理解。但同時,Excel在金融數(shù)據(jù)分析中也存在較大缺點,如難以處理大批量數(shù)據(jù),作圖不方便等。金融數(shù)據(jù)的分析與建模往往需要用到大批量數(shù)據(jù),Excel在實際處理上能力往往略顯不足。而使用Python教學(xué),則常常需要面對Python數(shù)據(jù)處理時的“黑箱問題”,在教學(xué)中不易將過程描述清楚,而對課程產(chǎn)生畏難情緒。
圖3 用Excel 演示最大回撤
討論與分享是提升Python編程能力的重要手段,為提高學(xué)生的學(xué)習(xí)興趣和參與度,可組織討論與分享。首先,向?qū)W生提出金融數(shù)據(jù)分析的案例;其次,分組討論該問題的分析思路;再次,小組嘗試用Excel和Python進(jìn)行計算;最后,分享分析過程與結(jié)果。
對編程技能和數(shù)據(jù)分析相關(guān)知識的學(xué)習(xí),討論與交流是重要環(huán)節(jié)。對同一金融數(shù)據(jù)分析問題,不同學(xué)生有不同的編程思路,通過討論,可促進(jìn)學(xué)生之間相互交流,并從中獲得新的思路和洞見。通過組織小組討論或者課堂分享,學(xué)生可以相互交流和學(xué)習(xí),特別是對存在的問題能有更清晰的認(rèn)識,通過共同探討難點和疑問。一方面可以加深對知識點的梳理和理解;另一方面可以增強(qiáng)學(xué)生的合作意識和自主學(xué)習(xí)能力。同時,老師也能在交流過程中進(jìn)一步了解學(xué)生對知識點的掌握情況,以便對教學(xué)內(nèi)容作出調(diào)整。
為了及時了解學(xué)生對課程的反饋,可采用投票或問卷的方式,定期開展學(xué)生對課程掌握情況、授課方式接受程度進(jìn)行調(diào)查。學(xué)生的反饋在一定程度上體現(xiàn)了學(xué)生對課程的整體滿意度、課程內(nèi)容的難易程度、教學(xué)方法的實用性等方面的情況,同時能了解每一位學(xué)生對知識點的接受程度。
通過投票或問卷的分析,一是可以了解學(xué)生對課程的建議和意見,根據(jù)反饋及時調(diào)整教學(xué)內(nèi)容和方法,提高課程的教學(xué)質(zhì)量。二是可針對部分認(rèn)為課程難度大的學(xué)生,結(jié)合線上資源,提出定制化的學(xué)習(xí)方案,保障學(xué)習(xí)效果與教學(xué)進(jìn)度。
Python編程語言因其優(yōu)良特性,在金融數(shù)據(jù)分析領(lǐng)域的應(yīng)用越來越普及,《Python金融數(shù)據(jù)分析實驗》課程具有較強(qiáng)的實用性,因課程存在一定學(xué)科交叉性,且學(xué)生基礎(chǔ)存在較大差異,在教學(xué)實施中仍存在諸多問題。為提高課程質(zhì)量,提升課程教學(xué)水平,本文針對《Python金融數(shù)據(jù)分析實驗》課程在教學(xué)中存在的問題,從教學(xué)內(nèi)容、教學(xué)方法、學(xué)生反饋等方面提出了一些對策和建議。通過教學(xué)實踐的不斷探索與嘗試,這些對策和建議可以有效提高課程的教學(xué)質(zhì)量,幫助不同基礎(chǔ)的學(xué)生更好地掌握金融數(shù)據(jù)分析的方法,提高其在金融領(lǐng)域的競爭力。
隨著ChatGPT等自然語言處理工具的普及,像《Python金融數(shù)據(jù)分析實驗》這類涉及編程的課程教學(xué)理念、教學(xué)方式、學(xué)習(xí)方式都將發(fā)生重大改變,在未來的教學(xué)中,應(yīng)結(jié)合先進(jìn)教學(xué)理念與教學(xué)工具,不斷在教學(xué)實踐中總結(jié)并嘗試改進(jìn),為推進(jìn)此類課程的建設(shè)做出貢獻(xiàn)。